2024. 12. 11. 21:58ㆍ쿠버네티스/쿠버네티스
https://amanksingh.wordpress.com/2020/11/09/kubernetes-architecture/
Kubernetes Architecture – The Simple Way
We all know that Kubernetes is one of the most widely used container orchestration tools. The main purpose of Kubernetes is to host your application as a form of containers in an automated fashion …
amanksingh.wordpress.com
Kubernetes 아키텍처를 이해하기 위해 배의 비유를 사용하겠습니다.
Kubernetes의 목적은 애플리케이션을 컨테이너 형태로 호스팅하고, 이를 자동화된 방식으로 관리하여 필요한 만큼의 애플리케이션 인스턴스를 쉽게 배포하고 애플리케이션 내의 다른 서비스 간 통신을 원활하게 하는 것입니다.
이를 가능하게 하기 위해 다양한 요소들이 함께 작동합니다.
Kubernetes 아키텍처를 "10,000피트 상공"에서 내려다보는 것처럼 살펴보겠습니다.
여기에는 두 가지 종류의 배가 있습니다: **화물선(cargo ship)**과 **관리선(control ship)**입니다.
- 화물선은 컨테이너를 바다 위로 실제로 운반하는 작업을 담당합니다.
- 관리선은 화물선을 모니터링하고 관리하는 역할을 합니다.
Kubernetes 클러스터의 구조와 비유
- Worker Node (화물선)
Kubernetes 클러스터는 물리적 또는 가상 노드들로 구성되며, 이 노드들은 컨테이너 형태로 애플리케이션을 호스팅합니다.
화물선은 컨테이너를 적재할 수 있는 노드(worker node)에 해당합니다. - Master Node (관리선)
컨테이너를 적재하는 것 외에도, 어떤 컨테이너를 적재할지 계획하고, 적합한 선박을 식별하고, 선박에 대한 정보를 저장하며, 적재 과정을 모니터링하고 관리해야 합니다.
이러한 작업은 **마스터 노드(master node)**가 담당합니다.
마스터 노드는 Kubernetes 클러스터를 관리하며, 다음을 포함하는 여러 컨트롤 플레인(control plane) 구성 요소를 통해 이루어집니다:- etcd: 클러스터 정보를 저장하는 고가용성 키-값 데이터 저장소입니다.
- 스케줄러(Scheduler): 컨테이너를 적재할 적합한 노드를 선택합니다.
- 컨트롤러(Controllers): 노드 관리, 복제 보장 등의 특정 작업을 담당합니다.
- Kube API 서버: 클러스터 내 모든 작업을 조율하며, 외부와 내부 구성 요소 간 통신의 중심 역할을 합니다.
- etcd (데이터 저장소)
- 선박과 컨테이너 관련 정보를 저장하는 데이터베이스에 해당합니다.
- Kubernetes에서는 클러스터 상태 정보를 저장하기 위해 etcd라는 키-값 저장소를 사용합니다.
- Scheduler (스케줄러)
- 스케줄러는 적합한 컨테이너를 적합한 선박에 적재합니다.
- Kubernetes에서 스케줄러는 컨테이너의 리소스 요구사항, 노드의 용량, 정책 등을 기반으로 적절한 노드를 식별합니다.
- Controller (컨트롤러)
- Kubernetes에는 특정 작업을 담당하는 다양한 컨트롤러가 있습니다.
- 노드 컨트롤러: 새로운 노드를 클러스터에 등록하거나 장애가 발생한 노드를 처리합니다.
- 복제 컨트롤러: 복제 그룹 내에서 항상 원하는 수의 컨테이너가 실행되도록 보장합니다.
- Kubernetes에는 특정 작업을 담당하는 다양한 컨트롤러가 있습니다.
- Kube API 서버
- 클러스터의 주요 관리 구성 요소로, Kubernetes API를 노출하여 사용자 및 내부 구성 요소가 클러스터를 관리할 수 있도록 합니다.
- 스케줄러, 컨트롤러, kubelet 등 다양한 구성 요소가 API 서버를 통해 서로 통신합니다.
- Container Runtime (컨테이너 런타임)
- Kubernetes는 컨테이너를 실행하기 위해 Docker 또는 ContainerD와 같은 런타임을 사용합니다.
- 이 런타임은 모든 노드(마스터 및 워커)에 설치되어야 합니다.
- Kubelet (선장)
- 워커 노드에서 실행되며, Kube API 서버로부터 명령을 받아 컨테이너를 생성하거나 제거합니다.
- 또한 워커 노드와 컨테이너의 상태를 API 서버에 보고합니다.
- Kube Proxy (네트워크 관리자)
- 각 워커 노드에서 실행되며, 클러스터 내 서비스 간 통신을 가능하게 합니다.
- 필요한 네트워크 규칙을 설정하여 컨테이너 간 상호 연결을 지원합니다.
요약
Kubernetes 클러스터는 마스터 노드와 워커 노드로 구성됩니다.
- 마스터 노드: etcd, 스케줄러, 컨트롤러, Kube API 서버 등 클러스터를 관리하는 구성 요소 포함.
- 워커 노드: Kubelet, Kube Proxy 등 애플리케이션 컨테이너를 호스팅하고 통신을 지원하는 구성 요소 포함.
https://kubernetes.io/docs/home/
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글
ETCDCTL API 버전별 명령어 (0) | 2024.12.12 |
---|---|
ETCD (2) | 2024.12.11 |
Pod Task (0) | 2024.12.04 |
쿠버네티스를 사용하여 마이크로서비스 아키텍처 배포-1 (0) | 2024.11.25 |
kubespray로 k8s설치 (2) | 2024.11.21 |