쿠버네티스 클러스터의 개략적 구성도
Node(노드)
- VM(가상 머신) or 실제 물리 서버
Control Plane
- 클러스터를 전반적으로 관리(ex 스케줄링)하고 클러스터 이벤트를 감지하고 반응(ex 오토스케일링), 노드(워커 노드)와 클러스터 내 파드를 관리함
Control Plane의 구성 요소
kube-apiserver
- 쿠버네티스 컨트롤 플레인의 프론트엔드, 인스턴스 간의 트래픽을 균형 있게 조절하는 역할
etcd
- 클러스터의 모든 데이터를 담는 쿠버네티스 뒷단의 저장소
- 고가용성, 일관성의 키-값(Key-Value) 저장소
kube-scheduler
- 새로 생성된 파드를 노드에 배치
- 리소스에 대한 요구사항, 하드웨어/소프트웨어/정책적 제약, Affinity 및 Anti-Affinity 명세, 데이터 지역성, 워크로드 간 간섭, 데드라인을 고려하여 스케줄링 실행
kube-controller-manager
- 컨트롤러 프로세스를 실행
- 노드 컨트롤러: 노드 관리,
- 레플리케이션 컨트롤러: 알맞은 수의 파드를 유지,
- 엔드포인트 컨트롤러: 서비스와 파드를 연결,
- 서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성
- 등을 포함
>> Namespace: 쿠버네티스 클러스터 내의 논리적인 분리 단위, 네임스페이스별로 자원들을 나누어 관리, 접근 권한, 리소스 할당량 등을 설정 가능
cloud-controller-manager
- CSP의 API를 통해 리소스를 생성 및 관리
- 노드 컨트롤러: 쿠버네티스와 클라우드 상의 노드 동일성 유지,
- 라우트 컨트롤러: 쿠버네티스와 클라우드 상의 인프라 경로 동일성 유지,
- 서비스 컨트롤러: 쿠버네티스 서비스와 클라우드의 로드밸런서 리소스 동일성 유지
- 등을 포함
Node Component
- 동작 중인 파드를 유지시키고, 쿠버네티스 런타임 환경을 제공
Node Component의 구성 요소
kubelet
- 각 노드에서 실행되는 에이전트, 파드에서 컨테이너가 확실하게 동작하도록 관리
kube-proxy
- 각 노드에서 실행되는 네트워크 프록시
- 노드의 네트워크 규칙을 유지 관리, 네트워크 규칙을 통해 내부 네트워크 세션이나 클러스터 바깥에서 파드로 네트워크 통신을 가능하게 함
- OS에 가용한 패킷 필터링 계층이 있는 경우, 이를 사용, 그렇지 않으면 트래픽 자체를 포워딩함
Container Runtime
- 컨테이너 실행을 담당(Kubernetes CRI)하는 소프트웨어
출처
https://kubernetes.io/ko/docs/concepts/overview/components/
https://dalsacoo-log.tistory.com/entry/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-Kubernetes
'IT > Kubernetes' 카테고리의 다른 글
imagePullPolicy:always (0) | 2022.05.28 |
---|---|
[K8S] Cluster Networking (0) | 2022.03.24 |
쿠버네티스는 어떻게 노드, 파드를 관리할까? (0) | 2021.10.01 |
왜 Pod가 필요할까? (Container와 Pod의 관계) (0) | 2021.09.25 |
쿠버네티스란 무엇일까? (0) | 2021.09.22 |
댓글