Kubernetes Architecture, ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ - Control Plane

2023. 11. 22. 23:27ใ†BACKEND/Docker & Kubernetes

๐Ÿ”—  Kubernetes Series

๋ชจ๋“  Kubernetes ์‹œ๋ฆฌ์ฆˆ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด ์œ„๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

 

 

 

Kubernetes Architecture

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์•ˆ์ •์ ์ด๊ณ  ์ ์‘ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด,

์—ฌ๋Ÿฌ ์„œ๋ฒ„์™€ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ถ„์‚ฐ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋Š” ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋Š” ํฌ๊ฒŒ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธControl plane๊ณผ ์›Œ์ปค ๋…ธ๋“œ Worker Node ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๋ถ€ํ„ฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์š” ์š”์†Œ๋“ค์„ ์ดํ•ดํ•˜๋„๋ก ํ•ด๋‹น ๊ฐœ๋…์„ ๋‹ค๋ฃจ๋ฉฐ,

๋ณธ ๊ธ€์—์„œ๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์— ํ•ด๋‹นํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์›Œ์ปค ๋…ธ๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๊ธ€์€ ๋‹ค์Œ ๊ธ€๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Kubernetes Components

Kubernetes ์•„ํ‚คํ…์ฒ˜๋Š” master-worker ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

 

์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์— ํ•ด๋‹นํ•˜๋Š” master๋Š” ์›Œ์ปค ๋…ธ๋“œ๋“ค์„ ๊ด€๋ฆฌํ•˜๋ฉฐ,

Pod๋“ค๋กœ ์บก์Šํ™”๋œ ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ์›Œ์ปค ๋…ธ๋“œ๋“ค ๋‚ด์— ๋ฐฐํฌ๋˜์–ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ง€๊ธˆ๋ถ€ํ„ฐ ์•„๋ž˜ ์•„ํ‚คํ…์ฒ˜์— ๋‚˜ํƒ€๋‚œ, ์ค‘์š” ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

https://kubernetes.io/docs/concepts/overview/components/

 

 

 

Control Plane

Control Plane์€ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ๋‹ด๋‹นํ•˜๋ฉฐ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

Control Plane์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋„ค ๊ฐ€์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ฐ๊ฐ ํŠน์ • ์ž‘์—…์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

โœ”๏ธ kube-apiserver: Kubernetes API๋ฅผ ๋…ธ์ถœํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ kubectl ๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐ์ž‘ํ•˜๋ผ๋Š” ์ง€์‹œ๋ฅผ ๋ฐ›์Œ

โœ”๏ธ etcd: ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๊ฐ–์ถ˜ ๋ถ„์‚ฐ key-value ์Šคํ† ์–ด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฐฑํ‚น ์Šคํ† ์–ด๋กœ ์‚ฌ์šฉ๋จ

โœ”๏ธ kube-scheduler: ๋…ธ๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐ์น˜ํ•  ์ ์ ˆํ•œ ๋…ธ๋“œ๋ฅผ ์„ ํƒ

โœ”๏ธ kube-controller-manager: ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‹คํ–‰

 


์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ๊ฐ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๊ฐ€ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์›ํ•˜๋Š” ์ƒํƒœ desired state ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

 


 

 

๐Ÿ“Œ kube-apiserver

kube API ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž·์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์™€ ์‰ฝ๊ฒŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋“œ๋ฌผ๊ฒŒ, ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ด๋‚˜ ์จ๋“œํŒŒํ‹ฐ ์„œ๋น„์Šค๋“ค์ด ํด๋Ÿฌ์Šคํ„ฐ๋“ค ๊ฐ„ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

kubectl๊ณผ ๊ฐ™์€ CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ๋Š”, API ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด HTTP REST API๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์š”.

ํ•˜์ง€๋งŒ, ์Šค์ผ€์ค„๋Ÿฌ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์€ ๋‚ด๋ถ€ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ๋Š” gRPC ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.
API ์„œ๋ฒ„๋Š” TLS๋ฅผ ํ†ตํ•œ ์•ˆ์ „์„ฑ์„ ์œ„ํ•ด ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์™€ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

kube-apiserver์˜ ์ฃผ์š” ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

โœ”๏ธ API ์š”์ฒญ์„ ๊ด€๋ฆฌ

โœ”๏ธ API ๊ฐ์ฒด ๊ฒ€์ฆ

โœ”๏ธ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ authenticate & authorize

โœ”๏ธ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๊ณผ ์›Œ์ปค ๋…ธ๋“œ ์ปดํฌ๋„ŒํŠธ๋“ค ์‚ฌ์ด์—์„œ ์œ„์น˜ ์กฐ์ • ์ฒ˜๋ฆฌ

โœ”๏ธ ...

 

API ์„œ๋ฒ„๋Š” etcd์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜, ๋‚ด์žฅ๋œ bastion API ์„œ๋ฒ„ ํ”„๋ก์‹œ๋ฅผ ํฌํ•จํ•˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด Cluster IP ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์•ก์„ธ์Šค๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 


 

๐Ÿ“Œ etcd

etcd๋Š” key-value ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋Š”๋ฐ,

๊ฐ€๋ น Pod ๋“ค์ด๋‚˜ ๊ฐ Pod๋“ค์˜ ์ƒํƒœ, ๊ทธ๋ฆฌ๊ณ  Namespace ๋“ค๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด, ๋งŒ์•ฝ kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์–ป์œผ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด,

๋ฐ”๋กœ etcd์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

Kubernetes๋Š” ๋ถ„์‚ฐํ˜• ์‹œ์Šคํ…œ์œผ๋กœ ๋ถ„์‚ฐํ˜• ํŠน์„ฑ์„ ์ง€์›ํ•˜๋Š” etcd์™€ ๊ฐ™์€ ํšจ์œจ์ ์ธ ๋ถ„์‚ฐํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌbackend service discovery ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ญํ• ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‡Œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


etcd๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ์˜ค์ง API ์„œ๋ฒ„์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

etcd๋Š” ์ผ๊ด€์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด raft consensus algorithm ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ ๋…ธ๋“œ ์žฅ์• ์— ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋„๋ก leader-member ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Pod๊ณผ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋ฐฐํฌํ•  ๋•Œ๋„ etcd์—์„œ ์—”ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

 

 

โœ”๏ธ Key-Value Data

etcd๋Š” gRPC๋ฅผ ์ด์šฉํ•œ key-value API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

์ฐธ๊ณ ๋กœ, gRPC ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋ชจ๋“  HTTP API ํ˜ธ์ถœ์„ gRPC ๋ฉ”์‹œ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” RESTful ํ”„๋ก์‹œ๋กœ,

Kubernetes์— ์ด์ƒ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

 

 Kubernetes ๊ฐ์ฒด์˜ ๋ชจ๋“  ๊ตฌ์„ฑ, ์ƒํƒœ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—๋Š” pods, secrets, daemonsets, deployments, configmaps, statefulsets ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๋ชจ๋“  ๊ฐ์ฒด๋Š” /registry ๋””๋ ‰ํ† ๋ฆฌ key ์•„๋ž˜์— key-value ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ Nginx๋ผ๋Š” ์ด๋ฆ„์˜ Pod ์ •๋ณด๋Š” /registry/pods/default/nginx ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค

 

 

 

โœ”๏ธ Watch

Kubernetes์˜ api-server๋Š” etcd์˜ watch ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

 

๋” ๊ตฌ์ฒด์ ์œผ๋กœ๋Š”, ํด๋ผ์ด์–ธํŠธ๊ฐ€ Watch() API๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ๋ฅผ subscribe ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

Kube-api-server๋Š” etcd์˜ watch ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๊ฐ์ฒด์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

 

Control Plane์—์„œ ์œ ์ผํ•œ ๐Ÿ”— Statefulset ์ปดํฌ๋„ŒํŠธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Statefulsets: Pod ์ง‘ํ•ฉ์˜ Deployment์™€ Scaling์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, ํŒŒ๋“œ๋“ค์˜ ์ˆœ์„œ ๋ฐ ๊ณ ์œ ์„ฑ์„ ๋ณด์žฅ. ์ƒํƒœ๋ฅผ ๊ฐ€์ง„ ์•ฑ์— ์‚ฌ์šฉ๋˜๋Š” API ๊ฐ์ฒด

 

 

 


 

 

๐Ÿ“Œ kube-scheduler

kube-scheduler๋Š” ์›Œ์ปค ๋…ธ๋“œ์—์„œ Kubernetes pod์˜ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

ํ•œ Pod๋ฅผ ๋ฐฐํฌํ•  ๋•Œ CPU, memory, affinity, taints ๋‚˜ tolerations, priority, persistent volumes (PV) ๋“ฑ๊ณผ ๊ฐ™์€ ํฌ๋“œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

์Šค์ผ€์ค„๋Ÿฌ์˜ ์ฃผ๋œ ์—ญํ• ์€ ์ƒ์„ฑ๋œ ์š”์ฒญ์„ ์‹๋ณ„ํ•˜๊ณ , ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” Pod๊ฐ€ ๋ฐฐ์น˜๋  ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ ์ด๋ฏธ์ง€๋Š” ์Šค์ผ€์ค„๋Ÿฌ ์ž‘๋™ ๋ฐฉ์‹์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

 

https://devopscube.com/kubernetes-architecture-explained/

 

 

 

ํ•˜๋‚˜์˜ Kubernetes ํด๋Ÿฌ์Šค ๋‚ด์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์›Œ์ปค ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด, ๊ณผ์—ฐ ์–ด๋–ป๊ฒŒ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋ชจ๋“  ์›Œ์ปค ๋…ธ๋“œ๋“ค ์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ ์ง€์ •ํ• ๊นŒ์š”?

 

์Šค์ผ€์ค„๋Ÿฌ๋Š” Scheduling cycle๊ณผ Binding cycle ๋‘ ๋‹จ๊ณ„๋กœ ๋˜์–ด ์žˆ๊ณ , ์ด๋ฅผ ๋‘˜์„ ํ•ฉ์ณ ์Šค์ผ€์ค„๋ง ์ปจํ…์ŠคํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

scheduling cycle์€ ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ , binding cycle์€ ๊ทธ ๋ณ€ํ™”๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

scheduling cycle์—์„œ๋Š” kube-scheduler๋Š” ์ตœ์ ์˜ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด, filtering ๊ณผ scoring ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

binding cycle์—์„œ๋Š” binding ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

 

1. Scheduling Cycle: Filtering

Pod๋ฅผ ์Šค์ผ€์ค„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, Pod๋ฅผ ์‹คํ–‰ํ•  ์ž์›์ด ์žˆ๋Š” ์›Œ์ปค ๋…ธ๋“œ๊ฐ€ 5๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” 5๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด pod๋Š” ์Šค์ผ€์ค„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Šค์ผ€์ค„๋ง ํ scheduling queue ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€๊ทœ๋ชจ์˜ ํด๋Ÿฌ์Šคํ„ฐ์ผ ๊ฒฝ์šฐ, 100๊ฐœ์˜ ์›Œ์ปค ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์น˜๋ฉด, ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

round-robin ๋ฐฉ์‹์œผ๋กœ ๋จผ์ € 50% ์ด์ƒ์˜ ๋…ธ๋“œ์— ๋Œ€ํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ์กฐํšŒiterate ํ•ฉ๋‹ˆ๋‹ค.

50%๋ผ๊ณ  ๋งํ•œ ์ด์œ ๋Š”, percentageOfNodesToScore ๋ผ๋Š” ์Šค์ผ€์ค„๋Ÿฌ ๊ตฌ์„ฑ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ์ฐธ๊ณ  ํ•˜๋ฉฐ,

๊ธฐ๋ณธ๊ฐ’์ด ์ผ๋ฐ˜์ ์œผ๋กœ 50%์ž…๋‹ˆ๋‹ค.

 

์›Œ์ปค ๋…ธ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ์˜์—ญzone ์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ์œผ๋ฉด, ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋‹ค๋ฅธ ์˜์—ญzone ์˜ ๋…ธ๋“œ๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ ์กฐํšŒiterate ํ•ฉ๋‹ˆ๋‹ค.

๋งค์šฐ ํฐ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฝ์šฐ์—๋Š”, percentageOfNodesToScore ์˜ ๊ธฐ๋ณธ๊ฐ’์€ 5%์ž…๋‹ˆ๋‹ค.

 

 

์Šค์ผ€์ค„๋Ÿฌ๋Š” ์Šค์ผ€์ค„๋ง์„ ์œ„ํ•ด ํ•ญ์ƒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ pod๋“ค์„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ pod๋“ค๋ณด๋‹ค ๋จผ์ € ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ค ๊ฒฝ์šฐ์—๋Š”, pod๊ฐ€ ์„ ํƒ๋œ ๋…ธ๋“œ์—์„œ ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•œ ํ›„์—, pod๊ฐ€ ์ œ๊ฑฐ๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค๋กœ ์ด๋™๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ref. Pod ์šฐ์„ ์ˆœ์œ„ ๊ฐ€์ด๋“œ

 

 

2. Scheduling Cycle: Scoring

์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํ•„ํ„ฐ๋ง๋œ ์›Œ์ปค ๋…ธ๋“œ๋“ค์— ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋…ธ๋“œ๋“ค์˜ ์ˆœ์œ„๋ฅผ ๋งค๊น๋‹ˆ๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ๋Š” ์—ฌ๋Ÿฌ ์Šค์ผ€์ค„๋ง ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์„ ํ˜ธ์ถœํ•˜์—ฌ ์Šค์ฝ”์–ด๋ง์„ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ์ค‘, ๊ฐ€์žฅ ๋†’์€ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ์›Œ์ปค ๋…ธ๋“œ๊ฐ€ ํฌ๋“œ ์Šค์ผ€์ฅด๋ง์„ ์œ„ํ•ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด ๋™์ผํ•œ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋ฉด, ํ•œ ๋…ธ๋“œ๊ฐ€ ์ž„์˜๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

 

 

3. Binding cycle: Binding Event

๋…ธ๋“œ๊ฐ€ ์„ ํƒ๋˜๋ฉด, ์Šค์ผ€์ค„๋Ÿฌ๋Š” API์„œ๋ฒ„์— binding ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ binding ์ด๋ฒคํŠธ๋ž€, pod์™€ node๋ฅผ bindingํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

 

์ง์ ‘ ์ปค์Šคํ…€ํ•œ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ธฐ๋ณธ ์Šค์ผ€์ค„๋Ÿฌ์™€ ํ•จ๊ป˜ ๋‘ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pod๋ฅผ ๋ฐฐํฌํ•  ๋•Œ๋Š” pod ๋งค๋‹ˆํŽ˜์ŠคํŠธ์—์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์Šค์ผ€์ค„๋Ÿฌ ๋กœ์ง์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šค์ผ€์ค„๋ง ๊ฒฐ์ •์ด ๋‚ด๋ ค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์Šค์ผ€์ค„๋Ÿฌ์— ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์‚ฌ์šฉ์ž ์ง€์ • ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์Šค์ผ€์ค„๋ง ์›Œํฌํ”Œ๋กœ์šฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


 

 

๐Ÿ“Œ kube-controller-manager

Kube-controller-manager๋Š” ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ ,

์ปจํŠธ๋กค๋Ÿฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ปค์Šคํ…€ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•˜์—ฌ custom controllers๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์„œ kubernetes ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

https://devopscube.com/kubernetes-architecture-explained/

 

 

 

์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฌดํ•œํ•œ ์ปจํŠธ๋กค ๋ฃจํ”„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ,
์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉด์„œ ์›ํ•˜๋Š” ๋ฌผ์ฒด์˜ ์ƒํƒœ๋ฅผ ์‹ค์ œ์™€ ๋น„๊ตํ•˜๋ฉฐ ๊ด€์ฐฐํ•˜๋ฉฐ ๋‘˜์ด ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์›Œ์ง€๋„๋ก ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ˜„์žฌ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์›ํ•˜๋Š” ์ƒํƒœ์— ๊ฐ€๊น๊ฒŒ ์ด๋™ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

Controller ?

๋กœ๋ณดํ‹ฑ์Šค(robotics)๋‚˜ ์ž๋™ํ™” ์žฅ์น˜(automation)์—์„œ๋Š”,
์ œ์–ด ๋ฃจํ”„ control loop ๋Š” ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•ด ๋ฌดํ•œ ๋ฃจํ”„์ž…๋‹ˆ๋‹ค.

์ œ์–ด ๋ฃจํ”„์˜ ์˜ˆ์‹œ๋ฅผ ๋“ค์ž๋ฉด, '์˜จ๋„ ์กฐ์ ˆ๊ธฐ'๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜จ๋„๋ฅผ ์„ค์ •ํ•˜๋ฉด ์˜จ๋„ ์กฐ์ ˆ๊ธฐ๋Š” ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
์‹ค์ œ ์‹ค๋‚ด ์˜จ๋„๋Š” ํ˜„์žฌ ์ƒํƒœ์ด๋ฉฐ,
์ด ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์›ํ•˜๋Š” ์ƒํƒœ์— ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ค๋„๋ก ์˜จ๋„ ์กฐ์ ˆ๊ธฐ๋Š” ์žฅ์น˜๋ฅผ ์ผœ๊ฑฐ๋‚˜ ๋„๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

−−

Kubernetes ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๊ด€์ฐฐํ•œ ๋‹ค์Œ,
ํ•„์š”ํ•œ ๊ณณ์— ๋ณ€๊ฒฝ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์„ ์š”์ฒญํ•˜๋Š” ์ปจํŠธ๋กค ๋ฃจํ”„์ž…๋‹ˆ๋‹ค.
๊ฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ˜„์žฌ ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์›ํ•˜๋Š” ์ƒํƒœ์— ๊ฐ€๊นŒ์›Œ์ง€๋„๋ก ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.

 

 


๊ฐ€๋ น, ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ (YAML) ์—์„œ ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ์ง€์ •ํ•˜๊ณ  Deployment ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

์ด ๋•Œ, ๋‘ ๊ฐœ์˜ ๋ ˆํ”Œ๋ฆฌ์นด์™€ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ volume mount์™€ configmap ๋งต ๋“ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด์žฅ๋œ ๋ฐฐํฌ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฐฐํฌ๊ฐ€ ํ•ญ์ƒ ์›ํ•˜๋Š” ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.


์‚ฌ์šฉ์ž๊ฐ€ 5๊ฐœ์˜ ๋ ˆํ”Œ๋ฆฌ์นด์œผ๋กœ deployment ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด,

๋ฐฐํฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์›ํ•˜๋Š” ์ƒํƒœ์ธ 5๊ฐœ์˜ ๋ ˆํ”Œ๋ฆฌ์นด๊ฐ€ ๋˜๋„๋ก ํ™•์ธํ•˜๊ณ  ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

 

 

Kube-controller-manager๋Š” Kubernetes์˜ ๋ชจ๋“  Controller๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Kubernetes๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ฒƒ ์ค‘, ์ค‘์š”ํ•œ Controller ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

- Node controller: ๋…ธ๋“œ๊ฐ€ ๋‹ค์šด๋˜์—ˆ์„ ๋•Œ ์ด๋ฅผ ์ธ์ง€ํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” ์—ญํ• 

- Job Controller (Kubernetes Jobs): ์ผํšŒ์„ฑ ์ž‘์—…์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž‘์—… ๊ฐ์ฒด๋ฅผ ๊ด€์ฐฐํ•œ ๋‹ค์Œ, Pods๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ•ด๋‹น ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋„๋ก ์‹คํ–‰

- Endpoints controller: EndpointSlice ๊ฐœ์ฒด๋ฅผ ์ฑ„์›€ Populates (Service ๋“ค๊ณผ Pod ๋“ค ์‚ฌ์ด์˜ ๋งํฌ ์ œ๊ณต)

- ServiceAccounts controller: ์ƒˆ๋กœ์šด Namespace ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ServiceAccounts๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

- Deployment controller

- Replicaset controller

- DaemonSet controller

- CronJob Controller

- Namespace controller

...

 

๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ณ„๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค์ด์ง€๋งŒ,

๋ณต์žก์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

 

 


 

 

๐Ÿ“Œ cloud-controller-manager

Cloud Controller Manager, CCM

 

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ์ปดํฌ๋„ŒํŠธ ์ค‘ ํ•˜๋‚˜๋กœ, ํด๋ผ์šฐ๋“œ ์ปจํŠธ๋กค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
Kubernetes๊ฐ€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๋ฉด cloud-controller-manager ๋Š”

Cloud Platform API์™€ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์ด์˜ ๋ธŒ๋ฆฌ์ง€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

https://www.simform.com/blog/kubernetes-architecture/#:~:text=The%20Kubernetes%20architecture%20follows%20a,the%20cloud)%20or%20physical%20servers.

 

 


์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(์˜ˆ๋ฅผ ๋“ค์–ด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์™€ AWS ํด๋ผ์šฐ๋“œ API ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค)

 

ํด๋ผ์šฐ๋“œ ์ปจํŠธ๋กค๋Ÿฌ ํ†ตํ•ฉ์„ ํ†ตํ•ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋Š” instances (for nodes), Load Balancers (for services), and Storage Volumes (for persistent volumes)๊ณผ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค๋ฉด, ํด๋Ÿฌ์Šคํ„ฐ๋Š” cloud-controller-manager ๋ฅผ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

kube-controller-manager์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, cloud-controller-manager๋„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…๋ฆฝ๋œ ์ œ์–ด ๋ฃจํ”„๋ฅผ ํ•˜๋‚˜์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๊ฒฐํ•ฉ์‹œ์ผœ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.


์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ์žฅ์• ๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋„๋กtolerate failures ํ•˜๊ธฐ ์œ„ํ•ด, ์ˆ˜ํ‰ ํ™•์žฅ(ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ณต์‚ฌ๋ณธ ์‹คํ–‰ ) ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํด๋ผ์šฐ๋“œ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž dependency ๋“ค์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

 

 

โœ”๏ธ Node controller

์‘๋‹ต ์ค‘๋‹จ ํ›„, ํด๋ผ์šฐ๋“œ์—์„œ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž API์™€ ๋Œ€ํ™”ํ•˜์—ฌ ๋…ธ๋“œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, node labeling & annotation, hostname ๊ฐ€์ ธ์˜ค๊ธฐ, CPU & memory ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€, nodes health ๋“ฑ

 

โœ”๏ธ Route controller

๊ธฐ๋ณธunderlying ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜์—์„œ Route๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ๋„คํŠธ์›Œํฌ ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•˜๋Š” ์ฑ…์ž„์„ ๊ฐ€์ง€๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด Pod๋“ค์ด ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ”๏ธ Service controller

ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋ฐฐํฌ๋‚˜ IP ์ฃผ์†Œ ํ• ๋‹น์„ ์ฑ…์ž„์ง‘๋‹ˆ๋‹ค.

 

 

์ „๋ฐ˜์ ์œผ๋กœ Cloud Controller Manager๋Š” kubernetes๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์šฐ๋“œ๋ฅผ ์œ„ํ•œ ๋ฆฌ์†Œ์Šค์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

|  Ref.  |

๐Ÿ”— Kubernetes Architecture and Components with Diagram
๐Ÿ”— Kubernetes Architecture Explained