K8S 구성요소

snooby·2022년 7월 29일
0

🐳 Docker & K8S

목록 보기
5/51

쿠버네티스의 노드는 크게 2개로 구성되어있다.
1. 마스터 노드
클러스터에 관한 전반적인 결정을 수행하고 클러스터 이벤트를 감지하고 반응
2. 워커 노드
동작 중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공

이제 각 노드 안의 요소들에 대해 알아보자.

마스터 노드

1. kubectl

클러스터에 명령을 내리는 역할
API 서버와 주로 통신하므로 API 서버가 위치한 노드에 구성된다.

2. API 서버

주로 상태값을 저장하는 etcd와 통신하지만, API 서버를 중심에 두고 통신.

3. etcd

구성 요소들의 상태 값이 모두 저장되는 곳
etcd의 정보만 백업돼 있으면 긴급상황에 클러스터 복구가 가능하다.
etcd는 분산 저장이 가능한 key-value 저장소이므로 복제해 여러 곳에 저장해 두면 하나의 etcd가 장애가 나더라도 시스템의 가용성을 확보할 수 있다.

👉 쿠버네티스는 선언적 시스템이다.
즉, 각 요소가 추구하는 상태를 선언하면 현재 상태와 맞는지 체크하고 선언한 상태로 유지하게 끔 되어있다.
따라서 현 요소의 상태가 어떤지 체크할 필요가 있는 것이고 그것이 etcd의 중요 역할이다.

4. 컨트롤러 매니저

클러스터의 오브젝트 상태를 관리한다.
컨트롤러 매니저의 종류는 다양한데 가령,

  • 노드 컨트롤러
    워커 노드에서 통신이 되지 않는 경우, 상태 체크와 복구
  • 레플리카셋 컨트롤러
    레플리카셋에 요청받은 파드 개수대로 파드 생성
  • 엔드포인트 컨트롤러
    서비스와 파드를 연결하는 역할

5. 스케줄러

노드의 상태와 자원, 레이블, 요구 조건 등을 고려해 파드를 어떤 워커 노드에 생성할 것인지 결정하고 할당한다.
가령, 파드의 조건에 맞는 워커 노드를 지정하고 파드가 워커 노드에 할당되는 일정을 관리한다.

워커노드

1. kubelet

파드의 구성내용을 받아서 컨테이너 런타임으로 전달, 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링
파드의 생성과 상태관리 및 복구 등을 담당하는 중요한 구성요소 이다.

2. 컨테이너 런타임

파드를 이루는 컨테이너의 실행 담당.
파드 안에 여러 컨테이너가 잘 작동하게 만드는 표준 인터페이스

3. 파드

한 개 이상의 컨테이너로 단일 목적의 일을 하기 위해서 모인 단위.

4. kube-proxy

파드의 통신을 담당.

profile
데이터를 가치있게 다루고 싶은 개발자 🐥

0개의 댓글