본문 바로가기
개발/BACK

Kubernetes Architecture

by 잠킴98 2024. 1. 3.
반응형

 

Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 강력한 오픈 소스 컨테이너 오케스트레이션 플랫폼입니다. 원래 Google에서 개발하고 현재 CNCF(Cloud Native Computing Foundation)에서 유지 관리하는 Kubernetes는 사용자가 대규모로 애플리케이션을 효율적으로 배포하고 관리할 수 있는 강력한 아키텍처를 제공합니다.

기본적으로 Kubernetes는 API 서버, 컨트롤러 관리자, 스케줄러 및 etcd와 같은 구성 요소로 구성된 중앙 제어 플레인이 클러스터의 전체 상태와 구성을 관리하는 마스터-작업자 노드 모델을 활용합니다. 반면 작업자 노드는 실제 컨테이너화된 애플리케이션을 호스팅하고 kubelet 및 kube-proxy와 같은 필수 구성요소를 실행하여 제어 플레인과 통신합니다. 선언적 구성과 서비스 검색, 로드 밸런싱, 자동 확장을 위한 풍부한 기능 세트가 결합된 이 분산 아키텍처는 Kubernetes를 최신 컨테이너화된 애플리케이션 배포 및 오케스트레이션을 위한 필수 도구로 만듭니다.

 

 

Kubernetes 아키텍처의 구성요소


1. Kube-apiserver: API 서버는 Kubernetes API를 노출하는 중앙 구성 요소입니다. REST 작업을 처리하고, 데이터를 검증 및 구성하며, Kubernetes 제어 평면의 프런트 엔드 역할을 합니다.


2. etcd: 클러스터의 구성 데이터를 저장하는 분산 키-값 저장소로, 이 정보를 관리하고 저장하는 일관되고 가용성이 높은 방법을 제공합니다.


3. Kube-scheduler: 노드가 할당되지 않은 새로 생성된 Pod를 감시하고 실행할 노드를 선택합니다. 스케줄러는 리소스 제약 조건, 선호도/반선호도 사양 등과 같은 요소를 고려합니다.

4. Kube-controller-manager: 시스템 상태를 조절하는 다양한 컨트롤러를 관리합니다. 예로는 노드 컨트롤러(노드 관리), 복제 컨트롤러(원하는 수의 복제본이 실행되도록 보장) 등이 있습니다.

5. 클라우드 컨트롤러 관리자: 기본 클라우드 공급자의 API와 상호 작용하여 가상 머신, 로드 밸런서 및 스토리지 볼륨과 같은 리소스를 관리하는 컨트롤러 집합입니다.

 


작업자 노드 구성 요소


1. Kubelet: 각 노드에서 실행되는 기본 "노드 에이전트"입니다. 컨테이너가 포드에서 실행되고 있는지 확인하고 마스터 노드와 통신하여 명령을 수신하고 실행합니다.


2. Kube-proxy: Kubernetes 서비스 개념을 구현하여 노드의 네트워크 규칙을 유지합니다. 클러스터 내부 또는 외부에서 올바른 Pod와 통신할 수 있습니다.

3. 컨테이너 런타임(Container Runtime): Docker 또는 Containerd와 같은 컨테이너 실행을 담당하는 소프트웨어입니다. 레지스트리에서 컨테이너 이미지를 가져옵니다.

컨테이너의 포장을 풀고 실행합니다.

 


결론


마스터 노드는 kube-apiserver, etcd, kube-scheduler, kube-controller-manager, cloud-controller-manager 등의 필수 구성요소로 구성되어 클러스터의 상태, 구성, 스케줄링, 다양한 컨트롤러를 총괄적으로 관리합니다. 작업자 노드에서는 kubelet, kube-proxy 및 컨테이너 런타임이 협력하여 컨테이너화된 애플리케이션을 실행 및 유지 관리하여 적절한 배포 및 통신을 보장합니다. Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 간소화하여 현대적이고 확장 가능하며 탄력적인 인프라를 위한 포괄적인 솔루션을 제공합니다.

반응형

'개발 > BACK' 카테고리의 다른 글

서버리스(serverless) 이해하기  (0) 2024.01.13
java List 첫 번째 요소만 실행시키기  (0) 2023.12.30