쿠버네티스 컴포넌트

쿠버네티스 컴포넌트

쿠버네티스를 배포하면 클러스터를 얻는다.

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합. 모든 클러스터는 최소 한 개의 워커 노드를 가진다.

워커 노드는 애플리케이션의 구성요소인 파드를 호스트한다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리한다. 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행하므로 내결함성과 고가용성이 제공된다.

이 문서는 완전히 작동하는 쿠버네티스 클러스터를 갖기 위해 필요한 다양한 컴포넌트들에 대해 요약하고 정리한다.

쿠버네티스 구성 요소

쿠버네티스 클러스터 구성 요소

워크로드

워크로드는 쿠버네티스에서 구동되는 애플리케이션이다. 워크로드가 단일 컴포넌트이거나 함께 작동하는 여러 컴포넌트이든 관계없이, 쿠버네티스에서는 워크로드를 일련의 파드 집합 내에서 실행한다. 쿠버네티스에서 Pod 는 클러스터에서 실행 중인 컨테이너 집합을 나타낸다.

쿠버네티스 파드에는 정의된 라이프사이클이 있다. 예를 들어, 일단 파드가 클러스터에서 실행되고 나서 해당 파드가 동작 중인 노드에 심각한 오류가 발생하면 해당 노드의 모든 파드가 실패한다. 쿠버네티스는 이 수준의 실패를 최종(final)으로 취급한다. 사용자는 향후 노드가 복구되는 것과 상관 없이 Pod 를 새로 생성해야 한다.

그러나, 작업이 훨씬 쉽도록, 각 Pod 를 직접 관리할 필요는 없도록 만들었다. 대신, 사용자를 대신하여 파드 집합을 관리하는 워크로드 리소스 를 사용할 수 있다. 이러한 리소스는 지정한 상태와 일치하도록 올바른 수의 올바른 파드 유형이 실행되고 있는지 확인하는 컨트롤러를 구성한다.

쿠버네티스 워크로드

상태를 체크 -> 차이점발견 -> 조치를 하는 무한루프라고 생각하면 된다.

desired state

상태 체크 observe

현재 상태 == 원하는 상태

current state == desired state

차이점 발견 diff

현재 상태 ≠ 원하는 상태

current state ≠ desired state

조치 act

현재 상태 → 원하는 상태

current state → desired state

상태 체크는 scheduler

서버가 여러개면 스케줄러를 따로

api server 는 교통 정리같은 일을 한다

etcd 데이터베이스의 역할 기록해놓는다

cdc (change date capture) 데이터값이 변한것만 기록한다.

master 상세 -etcd

모든 상태와 데이터를 저장

분산 시스템으로 구성하여 안전성을 높임(고가용성)

가볍고 빠르면서 정확하게 설계(일관성)

key(directory)-value 형태로 데이터 저장

ttl(time to live), watch 같은 부가 기능 제공

백업은 필수 (회사에서 자체적으로 버전을 백업해놓고 저장한다고 한다.)

master 상세 -api server

쿠버네티스가 자랑하는 잘만든 서버

상태를 바꾸거나 조회

etcd와 유일하게 통신하는 모듈

rest api 형태로 제공

권한을 체크하여 적절한 권한이 없을 경우 요청을 차단

관리자 요청 뿐

통제는 controller manager

controller

논리적으로 다양한 컨트롤러가 존재

복제, 노드, 엔드 포인트

끊임 없이 상태를 체크하고 원하는 상태를 유지

예를들어

  • replication controller

  • endpoint controller

  • namespace controller

  • custom controller

  • mlcontroller