쿠버네티스 동작 과정

컨테이너 빌드 - 컨테이너 저장 - k8s 컨테이너 실행
-> 동작
- 서비스 제공자(개발자나 운영자 등)가 기능별 컨테이너를 도커에 업로드
- 업로드된 컨테이너는 사내 허브(보통 프라이빗) 또는 도커 허브(퍼블릭)에 저장
- 쿠버네티스 명령어로 컨테이너 실행 지시(yaml 실행 또는 명령어로 가능)
- master 서버에서 해당 API 접수
- 스케쥴러에게 노드 상태 문의
- 노드에게 실행 요청
- 노드의 kubelet은 도커 명령어로 docker에게 요청
- hub에서 요청 받은 컨테이너가 있을 시 제공
-> 동작되는 컨테이너 = pod
쿠버네티스 컴포넌트

요청 -> API 수락 -> etcd 저장소(key - value 타입으로 저장됨) -> schduler -> node kubelet -> docker engine -> docker hub에서 버전 확인 -> 동작
- etcd: worker node 상태, image 상태 등을 저장 중
- kubelet(각 노드): cadvisor를 통해서 상태 감시가 가능(kubelet daemon 실행만 하면 OK)
- schduler: etcd 정보를 바탕으로 적합한 node 반환
- controller: 동작 컨테이너 수 확인 후 이상 발견 시 API 보고
마스터 컴포넌트
- etcd: key-value 타입의 저장소
- kube-apiserver: k8s API를 사용하도록 요청을 받고 요청이 유효한지 검사
- kube-scheduler: 파드를 실행할 노드 선택
- kube-controller-manager: 파드를 관찰하며 개수 보장
워커 노드 컴포넌트
- kubelet: 모든 노드에서 실행되는 k8s 에이전드, 데몬 형태로 동작
- kube-proxy:k8s의 network 동작을 관리, iptables rule을 구성
- 컨테이너 런타임: 컨테이너를 실행하는 엔진(docker, containerd, runc)
애드온
- 네트워크 애드온: CNI(weave, calico, flaneld, kube-route 등)
- DNS 애드온: coreDNS
- 대시보드 애드온(초기 설치 안되어있음, 리소스 모니터링 툴): 클러스터 내 쿠버네티스 리소스들의 상태와 에러 정보들 제공
- 컨테이너 자원 모니터링(kubelet 안에 들어있음): cAdvisor
- 클러스터 로깅(초기 설치 안되어있음, 로그 모니터링 툴): 컨테이너 로그, k8s 운영 로그들을 수집해서 중앙화, ELK(ElasticSearch, Logstash, Kibana), EFK(ElasticSearch, Fluentd, Kibana), DataDog