Kubernetes와 컴포넌트
컨테이너 개발시대
- 컨테이너는 VM과 유사하나 격리 속성을 완화하여 어플리케이션 간에 운영체제를 공유함
- 자체 파일시스템, CPU 점유율, 메모리, 프로세스 공간
- 기본 인프라와 종속성을 끊어, 클라우드나 OS 배포본에 이식할 수 있음
용어
- 노드
- 쿠버네티스의 작업 장비
- 파드
- 클러스터에서 실행중인 컨테이너의 집합
- 컨트롤 플레인
- 클러스터의 라이프사이클을 정의, 배포, 관리하기 위한 API와 인터페이스들을 노출하는 컨테이너 오케스트레이션 레이어
쿠버네티스 컴포넌트
쿠버네티스 클러스터
- 컨테이너화된 어플리케이션을 실행하는 노드라는 워커머신의 집합
- 모든 클러스터는 최소 한개의 워커노드를 가짐
워커노드
- 어플리케이션의 구성 요소인 파드를 호스트함
- 컨트롤 플레인은 워커노드와 클러스터 내 파드를 관리함
- 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행함
- 내결함성과 고가용성이 제공됨
컨트롤플레인 컴포넌트
- 클러스터에 관한 전반적인 결정(스케줄링 등)을 수행
- 클러스터 이벤트(deployment의 replicas 필드에 대한 요구 조건이 충족되지 않을 경우 새로운 파드르 구동)등을 감지하고 반응함
- 클러스터 내 어떠한 머신이든 동작 가능
- But, 간결성을 위해 구성 스크립트는 보통 동일 머신상에 모든 컨트롤 플레인 컴포넌트를 구동시키고, 사용자 컨테이너는 해당 머신상에 동작시키지 않음
쿠버네티스 API
- 컨트롤 플레인의 핵심은 API 서버이다
- 최종 사용자, 클러스터의 다른 부분, 외부 컴포넌트가 서로 통신할 수 있도록 HTTP API를 제공함
kube-apiserver
- 쿠버네티스 api를 노출하는 쿠버네티스 컨트롤 플레인 컴포넌트
- 쿠버네티스 컨트롤 플레인의 프론트 엔드
- 수평으로 확장되도록 디자인됨
- 더 많은 인스턴스를 배포해서 확장할 수 있음
- 인스턴스를 실행하고, 인스턴스간 트래픽을 균형있게 조절할 수 있음
etcd
- 모든 클러스터 데이터를 담는 뒷단의 저장소
- 일관성*고가용성 키-값 저장소
Kube-scheduler
- 노드가 배정되지 않은 새로 생성된 파드를 감지, 실행할 노드를 선택하는 컨트롤 플레인 컴포넌트
kube-controller-manager
- 컨트롤러를 구동하는 마스터 상의 컴포넌트
- 노드 컨트롤러
- 노드가 다운되었을 때, 통지와 대응
- 레플리케이션 컨트롤러
- 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드들을 유지시켜주는 책임
- 엔드포인트 컨트롤러
- 엔드포인트 오브젝트를 채움
- 서비스와 파드를 연결시킴
- 서비스 어카운트 & 토큰 컨트롤러
- 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성
- 노드 컨트롤러
cloud-controller-manager (이거 뭐야!)
- 클라우드별 컨트롤 로직을 포함하는 컨트롤 플레인 컴포넌트
- 클러스터를 클라우드 공급자 API에 연결
- 해당 클라우드 플랫폼과 상호작용하는 컴포넌트와 클러스터와 상호작용하는 컴포넌트를 분리할 수 있음
노드 컴포넌트
- 동작 중인 파드를 유지시키고, 쿠버네티스 런타임 환경을 제공
- 모든 노드상에서 동작
Kubelet
- 클러스터의 각 노드에서 실행되는 에이전트
- 파드에서 컨테이너가 확실히 동작하도록 관리함
- 제공된 파드 스펙의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 동작하도록 담당
kube-proxy
- 각 노드에서 실행되는 네트워크 프록시
- 쿠버네티스 서비스 개념의 구현부
- 운영 체제에 가용한 패킷 필터링 계층이 있으면 이를 사용함
- 그렇지 않으면, 트래픽 자체를 포워드함
컨테이너 런타임
- 컨테이너 실행을 담당하는 소프트웨어
애드온
- 쿠버네티스 리소스(데몬셋, 디플로이먼트 등)을 이용하여 클러스터 기능을 구현함
- kube-system 네임스페이스에 속함
DNS
- 모든 쿠버네티스 클러스터는 클러스터 DNS를 갖추어야 한다
- 구성환경 내 다른 DNS 서버와 더불어, 쿠버네티스 서비스를 위해 DNS 레코드를 제공해주는 DNS 서버임
- 쿠버네티스에 의해 구동되는 컨테이너는 DNS 검색에서 이 서버를 자동으로 포함함