목표
- K8S 기본 구성 정리
- 통신 구조 정리
쿠버네티스 기본 구성 요소
- Master 노드 - 컨트롤 배 (Control-Plane)
- Etcd
- 어떤 컨테이너가 어느 Worker노드에 있는지에 대한 기본 정보를 저장 (DB)
- 스케줄러
- 노드 용량, 테인트 등 규칙을 통해 어떠한 Worker노드에 컨테이너를 올릴지만 결정
- Controller-Manager
- 다양한 문제 및 구성 요소에 대해 처리하도록 구성된 컨트롤러
- Node-Controller
- 새 노드를 클러스터에 등록, 관리
- Replication-Controller
- 복제 갯수에 대해 계속 유지할 수 있도록 처리
- kube-apiserver
- etcd, 스케줄러, 컨트롤러 등에 대해 워커노드와 통신을 할 수 있게 하는 구성 요소
- kubelet과 지속적으로 통신을 함
- Etcd
- Worker 노드 - 컨테이너가 적재되는 배
- Container Runtime Engine
- 어플리케이션 등이 컨테이너로 구성되고, 컨테이너로 동작하기 때문에 필요
- kubelet
- 클러스터의 각 노드에서 실행되는 에이전트
- kubeproxy
- 클러스터 내부의 서비스 간 통신을 가능하게 만듬
- Container Runtime Engine
통신 구조

[그림 출처 : CNCF Financial Services User Group의 Kubernetes 데이터 흐름 다이어그램 ]
- Deployment 적용
- API 서버에서 체크를 하고 ETCD에 기입
- Controller는 각각의 상태를 API 서버를 통해 확인하고, 적용 → API서버는 ETCD에 기입
- 스케줄러가 새로운 파드 정보를 가져와서 파드를 노드에 스케줄링 함 → API서버는 ETCD에 기입
- 컨트롤플레이언에서 ETCD에 기입이 완료되면, 각 워커 노드에 있는 Kubelet은 새로운 파드정보를 Poll 해옴
- 이후 kubelet이 containerd or docker를 통해서 이미지 가져오고 실행
- Service나 Endpoint는 Kube-proxy에서 처리함
추후 목표
- Kube-Controller-manager에 대해 코드 레벨로 정리한다. (1개)
- Kube-Scheduler의 Node 할당 방식을 정리한다 (1개)
https://kubernetes.io/ko/docs/concepts/overview/components/
https://kubernetes.io/ko/docs/concepts/architecture/controller/
https://kubernetes.io/ko/docs/concepts/extend-kubernetes/#익스텐션-패턴
https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/
https://kubernetes.io/ko/docs/concepts/overview/kubernetes-api/
https://medium.com/@nuwanwe/understanding-the-kubernetes-controller-manager-b34db5b92dd4
https://www.uffizzi.com/kubernetes-multi-tenancy/kubernetes-controllers
728x90
반응형
'Cloud > K8S' 카테고리의 다른 글
[K8S-Study-1-2] NFS 설정과 Minikube 연결 확인 (1) | 2024.10.03 |
---|---|
[K8S-Study-0] 스터디 목차 준비 (2) | 2024.10.01 |
[K8S-Study-1-1] Minikube 사용법 정리 (1) | 2024.09.29 |
[K8S] Container 개념 정리 (0) | 2023.02.14 |