쿠버네티스 정의
컨테이너를 도커 런타임에 올려서 관리 및 운영, 클러스터 서비스를 지원해주는 프레임워크.
쿠버네티스 구조
[ 요약 ]
[ 상세 ]
components -> api -> etcd 순으로 watch 하고 있다가 변경 사항이 발생하면 watch 대상에게 notify 를 한다.
위 구조에서 components 는 API 서버와 Pod 를 제외한 나머지들 (Controller Manager, Scheduler, Kublet) API 서버에 있는 리소스들은 사실상 etcd 내부에 있는 내용들이다.
쿠버네티스 실행 흐름
(kubectl get events)
Deployment -> ReplicaSet -> Pod 순으로 실행된다.
7번 pod 선정에 대한 내용 로직들은 다음과 같다.
스케줄러가 kubelet 에서 보내준 노드 / 컨테이너 지표(CPU, Memory 사용량), Affinity, Taint 설정 등을 종합적으로 분석하여 새로운 파드를 생성할 워크 노드를 선정한다.
쿠버네티스 고가용성
쿠버네티스 구조를 보면 나머지 구성 정보는 Pod 가 재빠르게 뜨면 문제가 없을 수 있지만, API 서버와 etcd 는 죽으면 가용성에 문제가 생긴다. 그래서 API 서버는 2대, etcd 는 3대가 최소 필요하다. etcd 는 RAFT 라는 분산합의 알고리즘으로 인해 홀수 개를 유지해야 해서 최소 3대가 필요하다.
출처
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호 (넥슨코리아) :: AWS Community Day 2020 (youtube.com)