728x90
쿠버네티스의 클러스터는 컨테이너 형태의 애플리케이션을 호스팅하는 물리/가상 환경의 노드들의 집합을 의미한다.
쿠버네티스의 호스트에는 여러개의 클러스터 단위로 자원들이 구성되어 관리되어지며 컨트롤 플래인 역할을 수행하는 마스터 노드를 두고, 관리자는 이 마스터노드를 통해 클러스터 전체를 제어하는 구성을 따른다.
쿠버네티스의 클러스트는 용도에 따라 마스터 노드 Master Node, 워커 노드 Worker Node로 나눌 수 있다. 역할은 다음과 같다.
- 마스터 노드: 컨테이너 선단을 지휘하는 역할을 한다. 각 워커노드들의 가용 리소스 현황을 고려하여 최적의 배치와 모니터링, 그리고 각 컨테이너에 대해 효율적인 추적 관리가 필요하다. 쿠버네티스 클러스터에서 이 역할을 수행하는 노드를 마스터 노드라고 한다.
- 워커 노드: 각기 다른 컨테이너들이 선적된 컨테이너 역할이다. 각기 다른 목적, 기능들을 가진 컨테이너들이 실제 배치되는 노드를 말한다.
쿠버네티스 클러스터 내부 구조
쿠버네티스의 클러스터는 API를 통해서만 내부 접근이 가능하다.
이번에는 쿠버네티스에 내부 구조에 대해서 더욱 자세히 알아보겠다.
Kubernetes Master는 쿠버네티스 클러스터의 마스터 노드에 포함된 컨트롤 플래인에 해당된다.
컨트롤 플래인은 클러스터 전체의 워크로드 리소스 등 주요 구성 요소들을 배포하고 관리하는 역할을 한다. 여기에 포함된 것들은 다음과 같다.
etcd
: 키-값 형태의 데이터베이스로 클러스터 안의 구성정보들을 저장한다.scheduler(kube-scheduler)
: 애플리케이션 구동에 필요한 각 컨테이너들에대해 클러스터 내 최적의 배포를 수행하는 스케쥴러controller-manager
: Node, Deployment, Service Account 등 클러스터에 구동되는 리소스들을 유지 관리하는 프로세스들의 집합kube-dns
: 클러스터 안에 특정 DNS를 찾는데 사용되는 네임 서버 (구성도에는kube-dns
라 되어 있으나, 쿠버네티스1.12
버전부터는CoreDNS
로 대체됨)api-server
: 클러스터 구성 요소들의 상호 통신에 필요한 쿠버네티스 API를 관리하는 컴포넌트
다음으로 우측에 있는 Node영역은 노드안에 들어있는 [[Pod]]들을 관리, 구동 시키기 위한 구성요소들에 해당한다. 이들은 워커노드와 마스터노드 모두 공통적으로 가지고 있다. 해당 구성요소는 다음과 같다.
kubelet
: 클러스터의 각 노드에 들어오는 API 요청을 모니터링하고 각 파드가 잘 작동되도록 관리하는 에이전트kube-proxy
: 클러스터 내의 각 노드에서 수행되는 네트워크 프록시 서비스container-runtime-engine
: 배포된 Pod 내의 컨테이너를 구동시키기위한 엔진
CLI 도구
- kubectl : 클러스터와 내부 구성 요소들을 CLI 환경에서 직접 제어하는 데에 쓰이는 도구로, 터미널 창에서
kubectl [command] [TYPE] [NAME] [flags]
형태로 사용
728x90
'Server & Infra.' 카테고리의 다른 글
[K8s] 노드 컴포넌트 알아보자 (0) | 2024.03.12 |
---|---|
[K8s] 컨트롤 플래인 알아보기 (0) | 2024.03.12 |
Nginx, 아파치와의 관계 알아보기 (0) | 2023.10.06 |
JPA 벌크 수정, 삭제 연산과 영속성 컨텍스트 ✍️ (1) | 2023.08.23 |
[ Service Mesh ] Istio, Istio Architecture 알아보기 (0) | 2023.07.26 |