IT 매일매일

k8s 구조?

jj27 2023. 5. 3. 17:23

참고 : https://kubernetes.io/ko/docs/concepts/overview/components/

 

쿠버네티스 컴포넌트

쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.

kubernetes.io

이 링크의 그림을 보면 조금 더 이해하기 편하다.

 

컨트롤 플레인(마스터 노드)

 

위 그림을 리눅스에서 보면 이렇다!


[1] etcd
쿠버네티스 클러스터에 대한 설정 데이터를 저장하는 분산 데이터 저장소 (키-값 형태)
대규모 클러스터의 경우 고가용성을 위해 3개에서 많으면 5개 노드의 etcd 클러스터 구성

[2] kube-apiserver
각노드에서 보내온 api 요청은 쿠버네티스 api 서버에 전달되고,
etcd 오브젝트 스토어에 업데이트하기 전에 검증을 수행 후 모든 데이터를 저장

[3] kube-controller-manager
다양한 매니저를 하나의 바이너리로 통합한 도구


노드 컨트롤러: 노드가 다운되었을 때 통지와 대응에 관한 책임을 가진다.


레플리케이션 컨트롤러: 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드들을 유지시켜 주는 책임을 가진다.


엔드포인트 컨트롤러: 엔드포인트 오브젝트를 채운다(즉, 서비스와 파드를 연결시킨다.)


서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다

​ [4] kube-scheduler
아직 스케줄링 되지 않은 포드를 현재 사용가능한 노드에 바인딩하는 역할 수행

 

 

노드 서비스 데몬

 

[1] kube-proxy - (포트 포워딩 담당)

로드 밸런싱 과 네트워크 프록시 기능을 담당.
서비스를 지역적으로 반영하고 TCP 및 UDP 포워딩을 수행
환경변수나 dns를 통해 클러스터 IP를 찾는다.
이 작업은 서비스 엔드포인트를 제어하는 방식으로 처리

[2] kubelet

노드에 존재하는 포드의 다양한 부분을 관리하며, 마스터에 있는 API 서버와 통신
api 서버에서 포트 secret 다운로드
볼륨 마운트
포드의 컨테이너 실행 (도커 또는 다른 CRI)
노드와 각 포트 상태 보고
컨테이너 활성여부 조사