K8s 동작 flow
k8s 동작 flow
kubernetes 애플리케이션 실행
- 하나이상의 컨테이너 이미지들을 패키지로 레지스트리에 푸시
- 쿠버네티스 API 서버에 애플리케이션의 디스크립션(yaml or json) 게시하여 pod를 생성수행 명령
마스터노드와 워커노드의 구성과 통신 구조(쿠버네티스 입문 90가지 예제로 배우는 컨테이너 관리자동화 표준 책 참고)
master node 컴포넌트
- 역할 및 특징
- 클러스터 관리, HA, 보통 애플리케이션을 해당 master node에서는 실행하지는 않음
- 컴포넌트들 - 관리용 컴포넌트들은 컨네이너로 실행/ 하이퍼큐브라는 바이너리 파일로 컴파일되어있음.
- kubelet
- kube-apiserver
- K8s의 모든 통신의 중심
- k8s API를 사용하도록 요청을 받고 요청이 유효한지 검사
- etcd는 kube-apiserver를 통해서만 접근 할 수 있다.
- kube-scheduler
- 현재 클러스터안에서 자원할당이 가능한 노드중 알맞은 노드를 선택
- kube-controller-manager
- 구성요소 복제, 워커 노드추적, 노드 장애 처리등 클러스트 수준 기능을 실행
- 파드를 관찰하며 개수를 보장
- kube-proxy
- k8s의 network 동작을 관리
- iptables
- etcd
- 클러스터 구성을 지속적으로 저장하는 안정적인 분산
- 고가용성을 제공하는 키-값 저장소
- worker node들의 상태정보
- 서버당 1 프로세스만 사용가능
- 별도의 프로세스로 실행
- 애드온
- 네트워크 애드온
- CNI - weave, calico, flaneld 등
- dns 애드온
- 대시보드 애드온
- 컨테이너 자원 모니터링
- 클러스터 로깅
Worker node 컴포넌트
- kubelet
- 모든 노드에서 실행되는 ks8 에이전트 데몬
- cAdvisor
- 컨테이너 모니터링 툴
- 컨테이너 기반의 상태정보 및 H/W 정보를 수집하여 Master node에 전달하고 해당 정보는 etcd에 저장된다
- kube-proxy
- k8s의 network 동작을 관리
- iptables
- container runtime
- 컨테이너를 실행하는 엔진
- docker or containerd or runc 등