Search

[CKA] 4. Kube-API Server

Date
2024/11/05
Category
Devops
Tag
Kubernetes
CKA
Core Concept
๋ชฉ์ฐจ

ย Kube-API Server

Kube-API Server๋Š” ์š”์ฒญ์˜ ์ธ์ฆ๊ณผ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•˜๊ณ , ETCD์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ ๋ฐ ์—…๋ฐ์ดํŠธํ•œ๋‹ค Kube-API Server๋Š” ETCD์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์œ ์ผํ•œ ๊ตฌ์„ฑ์š”์†Œ์ด๋‹ค
โ€ข
kubectl ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด kubectl utility๊ฐ€ kube-apiserver์— ๋„๋‹ฌํ•จ
โ€ข
kube-apiserver๋Š” ์š”์ฒญ์„ ์ธ์ฆํ•˜๊ณ  ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•จ
โ€ข
etcd cluster์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์—ฌ request์— ๋Œ€ํ•ด responseํ•จ
โ€ข
kubectl ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋Œ€์‹  API๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์žˆ์Œ

ย Kubernetes Architecture

API ํ˜ธ์ถœ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์•Œ์•„๋ณด์ž
curl -X POST /api/v1/namespaces/default/pods
Bash
๋ณต์‚ฌ
1.
์ธ์ฆ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ง„ํ–‰ + ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜์—ฌ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต (Authenticate User, Validate Request, Retrieve data)
2.
API ์„œ๋ฒ„๋Š” ๋…ธ๋“œ์— ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  pod๋ฅผ ์ƒ์„ฑํ•จ
3.
์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ API ์„œ๋ฒ„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋‹ค node์— ํ• ๋‹น๋˜์ง€ ์•Š์€ pod๋ฅผ ๋ฐœ๊ฒฌ
4.
pod๊ฐ€ ํ• ๋‹น๋  node๋ฅผ ์ฐพ์•„ kube-apiserver์—๊ฒŒ ์•Œ๋ฆผ
5.
API ์„œ๋ฒ„๋Š” ์ •๋ณด๋ฅผ etcd cluster์— ์—…๋ฐ์ดํŠธํ•จ
6.
API ์„œ๋ฒ„๋Š” ์ ์ ˆํ•œ ์›Œ์ปค๋…ธ๋“œ์˜ kubelet์— ๊ทธ ์ •๋ณด๋ฅผ ๋„˜๊น€
7.
kubelet์€ pod๋ฅผ ํ•ด๋‹น ๋…ธ๋“œ์— ์ƒ์„ฑํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์—”์ง„์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜๋„๋ก ์ง€์‹œํ•จ
8.
๋ฐฐํฌ๋ฅผ ๋งˆ์น˜๊ณ  kubelet์€ status๋ฅผ API ์„œ๋ฒ„์— ๋‹ค์‹œ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ , API ์„œ๋ฒ„๋Š” etcd cluster์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์—…๋ฐ์ดํŠธํ•จ
graph LR;
    1.Authenticate --> 2.ValidateRequest;
    2.ValidateRequest --> 3.RetrieveData;
    3.RetrieveData --> 4.UpdateETCD;
    4.UpdateETCD --> 5.Scheduler;
    5.Scheduler --> 6.Kublet;
Mermaid
๋ณต์‚ฌ

ย kube-apiserver ์˜ต์…˜ ํ™•์ธ

๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ kube-apiserver๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„

kubeadm setup

โ€ข
master node์˜ kube-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— kube-apiserver-master๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐฐํฌ๋จ
โ€ข
/etc/kubernetes/manifests/kube-apiserver.yaml ํŒŒ๋“œ ์ •์˜ ํŒŒ์ผ์—์„œ ์˜ต์…˜ ํ™•์ธ ๊ฐ€๋Šฅ

non-kubeadm setup

โ€ข
/etc/systemd/system/kube-apiserver.service ์—์„œ ์˜ต์…˜ ํ™•์ธ ๊ฐ€๋Šฅ
ps -aux | grep kube-apiserver ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ƒํƒœ ๋ฐ ์˜ต์…˜ ํ™•์ธ ๊ฐ€๋Šฅ