Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의의 11. Cluster Architecture 챕터를 공부한 내용으로 강의 내용과 다를 수 있습니다. 정확한 내용은 강의를 들으시는 것을 추천드립니다.
0. 서론
Kubernertes는 "조타수"라는 어원에서 시작됐다.
뮴샤드씨 강의에서도 kubenetes를 선단(조업 따위의 일을 공동으로 하는 배의 무리)과 비교하여 설명을 많이해준다.
이번 챕터는 구체적으로 kubernetes 구성 요소를 설명하기 전에 간단하게 전체 구조를 훑어보는 강의이다.
기본 용어의 개념을 머리속에 넣어둬야지 강의를 듣는데 헷갈리지 않는다.
<Kubernetes 구성 요소>
2. Master node의 구성 요소
2-1) ETCD
2-2) Kube-apiserver
2-3) Controller Manager
2-4) Kube Scheduler
3. Worker node의 구성요소
3-1) Kublet
3-2) Kube Proxy
1. Kubernetes architecture
Kubernetes의 목적은 컨테이너 형태의 어플리케이션을 자동화 된 방법으로 쉽게 호스팅 하는 것이다. 호스팅 되는 어플리케이션의 많은 인스턴스들이 다른 서비스와 통신 하게 하기위해서 kubernetes의 수 많은 구성 요소들이 관여된다.
강의에서는 이런 구성 요소들을 선단에 비유하여 설명한다.
<Kubernetes 배에 비유하기>
"Kubernetes cluster"는 "선단"으로 node의 집합이다.
"Node"는 어플리케이션, 작업들의 모음이며 이는 "배"로 비유 할 수 있다.
노드에 "컨테이너" 형태로 "어플리케이션"을 호스팅(적재)한다.
Kubernetes cluster(선단) > Node(배) > Application(컨테이너)
2. Master node의 구성 요소
컨테이너를 worker node에 실을 수 있게 관리하는 node이다.
<Master node의 역할>
- 컨테이너를 로드 하는 것을 계획
- 컨테이너를 node에 로드
- 올바른 worker node를 식별
- worker node의 정보를 저장
- worker node의 컨테이너 위치를 모니터링 하고 추적
- 전체 컨테이너 로딩 프로세스를 관리
Master node는 "control playing components" 라고 알려진 구성요소들을 컨테이너로 호스팅하여 관리 업무를 수행한다.
2-1) ETCD Cluster
Master node는 ETCD라고 불리는 고가용성 키-값 저장 데이터 베이스에 정보를 저장한다.
* ETCD : etc 디렉터리와 distributed(분산)의 합성어, 정보를 분산 저장한다는 뜻
컨테이너가 올라간 node 위치, 올라간 시간 등 모든 정보를 저장한다.
자세한 내용은 블로그 글 (https://nnany.tistory.com/entry/CKA-%EA%B0%95%EC%9D%98-%EC%9A%94%EC%95%BD-ETCD-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0)에서 정리한다.
2-2) Kube-apiserver
kube-apiserver는 kubernetes cluster의 서로 다른 구성 요소(ETCD, controller 등)들과 통신하며 작업을 조율하는 주요한 관리 구성 요소이다.
클러스터에서 관리자가 관리 작업을 수행하게 쿠버네티스 API를 제공한다.
클러스터의 상태를 모니터링하고 필요에 따라 변경하기 위해 다양한 컨트롤러를 제공한다.
워커 노드가 서버와 통신한다.
자세한 내용은 블로그 글 (https://nnany.tistory.com/entry/CKA-%EA%B0%95%EC%9D%98-%EC%9A%94%EC%95%BD-Kube-api-server)에서 정리한다.
2-3) Controller manager
Master node에는 다양한 부분을 관리하는 controller들이 있다.
ㄱ. Node-controller
node를 관리하는 controller로 어플리케이션이 계속 실행 될 수 있도록 노드의 상태를 모니터링하고 조치한다.
ㄴ. Replication-controller
복제 그룹(resplica sets)에 원하는 수의 컨테이너가 실행되게 유지한다.
그 외에 다양한 controller들이 있으며 자세한 내용은 블로그 글 (https://nnany.tistory.com/entry/CKA-%EA%B0%95%EC%9D%98-%EC%9A%94%EC%95%BD-Kube-Controller-Manager)에서 정리한다.
2-4) kube-scheduler
kube-scheduler는 컨테이너의 설정 값을 기반으로 컨테이너를 배치할 올바른 노드를 식별한다.
< kube-scheduler의 고려 사항>
- worker node의 용량
- 컨테이너가 필요해 하는 용량
- node에 적재된 컨테이너 수
- node의 용도
- node에 올릴 수 있는 컨테이너 유형
- Taint & Toleration와 같은 정책이나 제약 조건
- 노드 우선 순위 규칙
자세한 내용은 블로그 글 (https://nnany.tistory.com/entry/CKA-%EA%B0%95%EC%9D%98-%EC%9A%94%EC%95%BD-Kube-Scheduler)에서 정리한다.
3. worker node의 구성 요소
3-1) kubelet
각 node에 실행되는 agent로 배의 선장과 같이 배의 모든 활동을 관리한다.
노드, 컨테이너의 상태를 확인하고 마스터 노드에 보고한다.(kube API로 상태 보고서를 보냄)
Kube-apiserver의 지시를 수신하고, 필요에 따라 node에 컨테이너를 배포하거나 재거한다.
자세한 내용은 블로그 글 (https://nnany.tistory.com/entry/CKA-%EA%B0%95%EC%9D%98-%EC%9A%94%EC%95%BD-Kublet)에서 정리한다.
3-2) kube-proxy
서로 다른 worker node의 통신을 도와주는 구성 성분이다.
다른 worker node와 통신 가능하게하는 규직이 worker node에 있는지 확인한다.
자세한 내용은 블로그 글 (https://nnany.tistory.com/entry/CKA-%EA%B0%95%EC%9D%98-%EC%9A%94%EC%95%BD-Kube-Proxy )에서 정리한다.
'IT 강의 > 도커 쿠버' 카테고리의 다른 글
[CKA 강의 요약] Kublet (0) | 2024.03.14 |
---|---|
[CKA 강의 요약] Kube Scheduler (0) | 2024.03.07 |
[CKA 강의 요약] Kube Controller Manager (0) | 2024.03.07 |
[CKA 강의 요약] Kube-apiserver (0) | 2024.03.07 |
[CKA 강의 요약] ETCD (0) | 2024.03.07 |