쿠버네티스는 컨테이너화된 어플리케이션을 쉽게 배포하고 관리해주는 플랫폼이다. 이번엔 쿠버네티스의 컴포넌트들를 정의하며 기본적인 구조 및 동작원리를 이해해보려 한다.
쿠버네티스를 배포하면 클러스터를 얻고, 클러스터란 컨테이너화 된 어플리케이션을 실행하는 노드의 집합이며 최소 한개의 노드를 가진다.
쿠버네티스 클러스터는 마스터노드, 워커노드로 구성되며 마스터노드에서는 컨트롤 플레인이 실행되고, 워커노드에서는 실제 배포되는 컨테이너 어플리케이션이 실행된다.
마스터노드(컨트롤 플레인)의 구성요소와 기능
어플리케이션 실행 및 이미지 패키징
이미지 레지스트리 푸시 및 API서버에 앱 디스크립션(컨테이너 이미지, 구성요소 이미지, 구성요소간 통신방법, 동일서버에 배치되어야하는 구성요소의 정보 등) 게시
컨트롤 플레인의 API서버에서 컨테이너에 필요한 리소스 계산, 스케줄러가 사용가능한 워크노드에 컨테이너 할당
워크노드의 Kubelet에서 컨테이너 런타임에 필요한 이미지 가져와 컨테이너 실행
쿠버네티스의 컨트롤러 매니저에서 앱 배포상태가 디스크립션과 일치하는지 지속적으로 확인, 장애 발생시 자가 치유
앱이 실행되는 동안 쿠버네티스가 추가 복제본 가동, 정지를 통해 스케일링이 가능, kube-proxy가 서비스 연결이 로드밸런싱 되도록 조정