개요

2024. 12. 11. 21:58쿠버네티스/쿠버네티스

728x90
반응형

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 클러스터의 구조와 비유

  1. Worker Node (화물선)
    Kubernetes 클러스터는 물리적 또는 가상 노드들로 구성되며, 이 노드들은 컨테이너 형태로 애플리케이션을 호스팅합니다.
    화물선은 컨테이너를 적재할 수 있는 노드(worker node)에 해당합니다.
  2. Master Node (관리선)
    컨테이너를 적재하는 것 외에도, 어떤 컨테이너를 적재할지 계획하고, 적합한 선박을 식별하고, 선박에 대한 정보를 저장하며, 적재 과정을 모니터링하고 관리해야 합니다.
    이러한 작업은 **마스터 노드(master node)**가 담당합니다.
    마스터 노드는 Kubernetes 클러스터를 관리하며, 다음을 포함하는 여러 컨트롤 플레인(control plane) 구성 요소를 통해 이루어집니다:
    • etcd: 클러스터 정보를 저장하는 고가용성 키-값 데이터 저장소입니다.
    • 스케줄러(Scheduler): 컨테이너를 적재할 적합한 노드를 선택합니다.
    • 컨트롤러(Controllers): 노드 관리, 복제 보장 등의 특정 작업을 담당합니다.
    • Kube API 서버: 클러스터 내 모든 작업을 조율하며, 외부와 내부 구성 요소 간 통신의 중심 역할을 합니다.
  3. etcd (데이터 저장소)
    • 선박과 컨테이너 관련 정보를 저장하는 데이터베이스에 해당합니다.
    • Kubernetes에서는 클러스터 상태 정보를 저장하기 위해 etcd라는 키-값 저장소를 사용합니다.
  4. Scheduler (스케줄러)
    • 스케줄러는 적합한 컨테이너를 적합한 선박에 적재합니다.
    • Kubernetes에서 스케줄러는 컨테이너의 리소스 요구사항, 노드의 용량, 정책 등을 기반으로 적절한 노드를 식별합니다.
  5. Controller (컨트롤러)
    • Kubernetes에는 특정 작업을 담당하는 다양한 컨트롤러가 있습니다.
      • 노드 컨트롤러: 새로운 노드를 클러스터에 등록하거나 장애가 발생한 노드를 처리합니다.
      • 복제 컨트롤러: 복제 그룹 내에서 항상 원하는 수의 컨테이너가 실행되도록 보장합니다.
  6. Kube API 서버
    • 클러스터의 주요 관리 구성 요소로, Kubernetes API를 노출하여 사용자 및 내부 구성 요소가 클러스터를 관리할 수 있도록 합니다.
    • 스케줄러, 컨트롤러, kubelet 등 다양한 구성 요소가 API 서버를 통해 서로 통신합니다.
  7. Container Runtime (컨테이너 런타임)
    • Kubernetes는 컨테이너를 실행하기 위해 Docker 또는 ContainerD와 같은 런타임을 사용합니다.
    • 이 런타임은 모든 노드(마스터 및 워커)에 설치되어야 합니다.
  8. Kubelet (선장)
    • 워커 노드에서 실행되며, Kube API 서버로부터 명령을 받아 컨테이너를 생성하거나 제거합니다.
    • 또한 워커 노드와 컨테이너의 상태를 API 서버에 보고합니다.
  9. 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