Chapter01/Kubernetes

[Kubernetes] Components 역할 및 관계

EmmaDev_v 2025. 3. 18. 13:50

 

1대의 Master Node

Control plane Component : kube-apiserver, kube-scheduler, kube-controller-manager, etcd

 

n대의 Workers

Worker Component : kubelet, container runtime,kube-proxy,docker

 

 

📁 /etcd/kubernetes/manifests

  ㄴ kube-apiserver.yaml

  ㄴ etcd.yaml

  ㄴ kube-scheduler.yaml

  ㄴ kube-proxy.yaml

  ㄴ kube-controller-manager.yaml

 

 

 

사용자가 kubectl create (pod 생성명령어) 하면 kube-aiserver에 보내면 etcd(DB역할)에 이 pod 정보를 저장.

kube-scheduler 는 수시로 각각의 노드 자원을 체크함(ex.어떤 노드에 컨테이너가 어떤 돌아가고있는지). api-server를 watch하면서 etcd에 pod생성요청이 새로 들어오는지 감시함.

pod 생성 요청이 있으면 떠있는 노드들을 체크해서 이 pod가 어느 노드에 보내면 좋을지 판단해 etcd의 pod에 node정보를 붙여줌.

 

 

 

 

각 node에 있는 kubelet은 kube-aiserver에 watch가 걸려있어서 pod에 자신의 노드 정보가 있는지 확인하고있음.

자신한테 할당된 노드를 감지하면 이 정보를 가져와서 pod를 만듦.

 

kubelet이 pod를 만들 때 docker한테 container를 생성하라고 요청하면  docker가 container를 만들어줌

 

cf. 📁 /etcd/kubernetes/manifests  에 있는 kube-proxy.yaml 파일은 domonset 이라서 모든 node에 kube-proxy 가 생성되어있음. 이 상태에서 kublet은 kube-proxy에 네트워크 생성 요청함. kube-proxy가 새로 생긴 container와 통신할 수 있도록 도와줌.

 

 

 

 

📁 /etcd/kubernetes/manifests

  ㄴ kube-proxy.yaml

 

proxy가

demon set 이라서 모든 node에 kube-proxy파일이 생성되어있음.

worker node에 있는  kubelet들은 master의 kube-api-server를 watch해서 pod에 자신의 node 정보가 붙어있는지 확인.

자신의 node가 붙은 pod를 발견하면 그 정보를 가져와서 pod를 생성한다.

 

 

 

 

 


📁 /etcd/kubernetes/manifests

  ㄴ kube-controller-manager.yaml

 

Master Node의 controller manager가 띄워져있고

Demonset, StatefulSet, DeploymentSet, ReplicaSet 기능들이 Thread형태로 있음.

 

(Deployment creation)

사용자가 kubectl create로 deployment에 replica 2옵션으로 생성요청하면,

이 명령이kube-apiserver에 전달되고 etcd에 정보가 저장됨. controller-manager에 deployment 쓰레드는 kube-apiserver한테 deployment관련 정보가 들어오면 알려달라 watch 걸어둔상태임. 이걸 읽으면 repliacaset을 만들어달라고 요청함.

 

이러면 또 replicaset쓰레드가 repliacatset object가 있는지 wathch를 걸어둔 상태라 replicaset안에 replicas가 몇 개인지 확인하고, 그 만큼 pod를 만들라고 요청함. 그러면 kube-scheduler가 노드를 자원을 고려해 pod에 스케줄링된 노드를 할당한다. 각 노드에있는 kubliet은 자신에게 할당된 pod를 감지하고 pod안에 컨테이너 내용을 docker한테 생성하게함. 그러면 docker가 container를 만들고, kube-proxy가 network를 통해 새로 생긴 container와 통신하게해줌.

 

 

 

반응형