Cloud/K8S
[K8S-Study-2-1] K8S 기본 이론 정리 (구성, 통신)
engineer-collie
2024. 10. 19. 23:33
목표
- 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
반응형