-
Kubernetes Architecture
-
Kubernetes Control Plane Component
-
마스터 컴포넌트 (Master Component)
- kube-apiserver : 쿠버네티스 API를 사용할 수 있도록 해주는 컨트롤 플레인 컴포넌트 입니다. 쿠버네티스 컨트롤 플레인의 프론트 엔드단(최전방, 사용자와 가장 근접)에서 동작하며 받은 요청이 유효한지 검증 합니다.
쿠버네티스의 모든 요청은 kube-apiserver를 통해 이루어 지며 매우 많은 옵션들이 존재 하는데, 아래 쿠버네티스 docs 문서에서 확인하실 수 있습니다.
쿠버네티스 kube-apiserver 옵션 : https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
- etcd : 클러스터의 모든 데이터를 저장하는 데이터베이스의 역할을 합니다. 키-값 저장소 형태로 동작하며 모든 데이터를 저장하는 용도이므로 데이터 백업 또는 클러스터링 후 여러 마스터 서버에 분산 실행하여 데이터의 안정성을 확보 해야합니다.
- kube-shcedule : 노드가 배정되지 않은 새로 생성된 파드가 생길 때 이 파드를 사용할 가장 알맞은 노드를 선택 해주는 컨트롤 플레인 컴포넌트 입니다. H/W 요구 사항, 어피니티 및 안티-어피니티 등 다양한 요소를 고려하여 알맞은 노드를 선택 합니다.
- kube-controller-manager : 마스터상에서 컨트롤러를 구동하는 컨포넌트 입니다. 논리적으로 각 컨트롤러는 개별 프로세스 이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행 됩니다.
1) 노드 컨트롤러(Node Controller) : 노드가 다운되었을 때 통지와 대응에 관한 책임을 가집니다.
2) 리플리케이션 컨트롤러(Replication Controller) : 리플리케이션은 지정한 숫자의 pod 개수를 맞추고, 관리하는 역할을 하게 되는데, 리플리케이션 기능자체를 컨트롤 해주는 컴포넌트 입니다.
3) 엔드포인트 컨트롤러(Endpoint Controller) : 서비스와 파드를 연결시켜주는 역할을 합니다. 즉, 종단에서 통신하기 위한 네트워크 설정등을 하기 위해 서비스 기능과 파드를 연결 시켜 줍니다.
4) 서비스 어카운트 & 토큰 컨트롤러(Service account&Token Controller) : 생성된 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성 합니다.
- cloud-controller-manager : 클라우드 서비스와 쿠버네티스를 연결해주는 역할을 수행하는 컨트롤러 입니다.
1) 노드 컨트롤러(Node Controller) : 노드가 응답을 멈췃을 때 클라우드 상에서 삭제되어 졌는지 확인하기 위해 클라우드에게 확인을 수행 합니다.
2) 라우트 컨트롤러(Route Controller) : 클라우드 상에서 네트워크 라우팅을 관리 해주는 컨트롤러 입니다.
3) 서비스 컨트롤러(Service Controller) : 클라우드에서 제공하는 로드 밸런스 생성, 업데이트, 삭제를 관리 합니다.
4) 볼륨 컨트롤러(Volume Controller) : 클라우드 상에서 생성된 볼륨을 노드에 생성, 마운트 등을 수행 합니다.
-
노드 컴포넌트 (Node Component)
- kubelet : 모든 노드에서 실행되는 에이전트이며 파드 스펙(PodSpec)의 집합을 받아 컨테이너가 파드 스펙에 따라 정상적으로 동작하는것을 책임 집니다.
- kube-proxy : 노드에서 실행되는 가상 네트워크를 유지/관리 합니다.
- Container Runtime : 컨테이너 실행을 담당하는 소프트웨어로써 도커와 같은 소프트웨어가 런타임에 포함 됩니다.
-
애드온 (addon)
애드온(은 리소스를 이용하여 클러스터 기능을 구현(데몬셋, 디플로이먼트 등) 합니다.
- DNS : 클러스터 상에서 동작하는 DNS 서버로써 필수 사항은 아니지만 많은 환경에서 DNS를 필요로하기 때문에 사용을 권장하며, 서비스를 위해 DNS 레코드를 제공해줍니다. 쿠버네티스에 의해 동작되는 컨테이너들은 DNS 검색을 통해 자동으로 이 DNS 서버에 포함됩니다.
- Dashboard : 쿠버네티스를 WEB UI로 사용할 수 있도록 제공 합니다.
- Container resource monitering & Cluster logging : 중앙 관리 서버를 이용하여 컨테이너의 상태를 모니터링 해주는 애드온으로써 각 노드에서 데이터를 수집하고 중앙 관리 서버에서 모니터링 기능을 제공 합니다.