반응형
컨트롤 플레인 컴포넌트
- kube-apiserver: 쿠버네티스 API를 노출하는 쿠버네티스 컴포넌트
- etcd: 모든 클러스터 데이터를 담는 키-값 저장소
- kube-scheduler: 노드가 배정되지 않은 새로 생성된 파드를 감지하고 실행할 노드를 선택하는 컴포넌트
- kube-controller-manager: 노드 컨트롤러, 레플리케이션 컨트롤러, 엔드포인트 컨트롤러, 서비스 어카운트, 토큰 컨트롤러를 포함한다.
- cloud-controller-manager: 클라우드별 컨트롤 로직을 포함하는 컴포넌트
노트 컴포넌트
- kubelet: 각 노드에서 실행되는 에이전트. 파드에서 컨테이너가 확실하게 동작하도록 관리
- kube-proxy: 각 노드에서 실행되는 네트워크 프록시로 서비스 개념의 구현부
- 컨테이너 런타임: 컨테이너 실행을 담당하는 소프트웨어
마스터 노드에는 etcd, kube-scheduler, kube-apiserver가 존재하고 이는 /etc/kubernetes/manifests에 각각 해당하는 yaml 파일이 존재한다.
워커 노드에는 kubelet과 container runtime이 구성되어 있으며, 데몬셋인 kube-proxy가 구성되어 있다.
파드 생성 과정
- 요청자가 kubectl create 명령어로 파드 생성 요청
- kube-apiserver로 전달되며, etcd에 pod에 대한 이력정보를 저장
- kube-scheduler는 수시로 각각의 노드 자원을 수집하고 있으며, kube-apiserver에 watch 기능으로 etcd에 파드 생성요청이 왔는지 모니터링 후 노드 자원 상태를 확인한 후 etcd 파드에 노드정보를 추가
- kubelet도 kube-apiserver에 watch가 걸려있고 자신의 노드가 붙어있는 파드를 발견하면 정보를 가져와서 파드를 생성하고자 함
- kubelet이 container runtime에 컨테이너를 생성하라고 요청
- kubelet은 kube-proxy한테 네트워크 생성요청을 하고 kube-proxy가 통신이 되도록 설정
디플로이먼트 생성 과정
- kube-controller-manager.yaml 파일에 의해 Controller Manager가 존재하며 여러 컨트롤러가 각 스레드로 도는중
- 요청자가 kubectl create 명령어로 디플로이먼트(replicas:2) 생성 요청
- kube-apiserver로 전달되며, etcd에 정보를 저장
- Controller Manager의 Deployment가 kube-apiserver에 watch로 모니터링 중이며, 레플리카셋을 생성하라고 요청함
- ReplicaSet도 watch가 걸려있어 감지 후 파드를 생성하라고 요청
- kube-scheduler는 수시로 각각의 노드 자원을 수집하고 있으며, kube-apiserver에 watch 기능으로 etcd에 파드 생성요청이 왔는지 모니터링 후 노드 자원 상태를 확인한 후 etcd 파드에 노드정보를 추가
- kubelet도 kube-apiserver에 watch가 걸려있고 자신의 노드가 붙어있는 파드를 발견하면 정보를 가져와서 파드를 생성하고자 함
- kubelet이 container runtime에 컨테이너를 생성하라고 요청
- kubelet은 kube-proxy한테 네트워크 생성요청을 하고 kube-proxy가 통신이 되도록 설정
References:
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
쿠버네티스 (Kubernetes) 배포를 위한 고급 설정 (0) | 2022.06.26 |
---|---|
SonarQube on Kubernetes (0) | 2022.06.25 |
쿠버네티스 워커노드 초기화 (0) | 2022.06.12 |
쿠버네티스(Kubernetes) PV, PVC (0) | 2022.05.20 |
[troubleshooting] [ERROR CRI]: container runtime is not running (0) | 2022.05.16 |