상세 컨텐츠

본문 제목

쿠버네티스 기본 개념

경험 리뷰/한국경제 with Tossbank

by shok11 2025. 1. 9. 01:22

본문

728x90
반응형

Kubernetes in public cloud

 쿠버네티스는 설치 운영 및 모니터링 과정 중 장애가 발생하면 이슈를 해결하기 쉽지않아 쿠버네티스를 감싼 여러 관리형 서버를 사용하는것이 좋다.

 

위와 같은 오픈소스를 활용하여서 명령어 한 두줄로 쿠버네티스를 연습해볼 수 있다.

 

쿠버네티스는 선언형 인터페이스로 요청하는것을 권장한다.

 

 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 도구로, Master Node(제어 플레인)와 Worker Node(작업 노드)로 구성됩니다. 쿠버네티스 클러스터는 여러 개의 서버(물리적 또는 가상 서버)를 하나로 묶어서 동작합니다.

Master Node는 클러스터를 관리하고 조정하는 역할을 하며, 주요 구성 요소는 다음과 같습니다:

  • API Server: 클러스터와 사용자 간의 통신을 처리.
  • Scheduler: 워크로드를 적절한 노드에 할당.
  • Controller Manager: 클러스터 상태를 관리.
  • etcd: 분산 키-값 저장소로, 클러스터 상태 데이터를 저장.

Worker Node는 실제로 애플리케이션 컨테이너가 실행되는 곳입니다. 주요 구성 요소는 다음과 같습니다:

  • kubelet: 컨테이너를 실행하고 관리.
  • kube-proxy: 네트워크 트래픽을 관리.

결과적으로, 쿠버네티스는 여러 대의 서버를 하나의 시스템처럼 사용하게 해주며, 애플리케이션의 배포와 확장, 관리를 자동화합니다.

 

 

쿠버네티스(Kubernetes) 구성 요소와 각 카테고리의 역할

 

1. API Server (apiserver)

  • 역할:
    • 클러스터와 사용자 간의 프론트엔드 역할을 수행합니다.
    • 쿠버네티스의 RESTful API를 통해 관리 작업(노드 추가, 리소스 생성, 삭제 등)을 처리합니다.
  • 작동 원리:
    • 사용자는 kubectl CLI나 다른 도구를 통해 API Server에 요청을 보냅니다.
    • API Server는 인증 및 권한을 검증한 후, 요청을 처리하고 결과를 반환하거나 다른 구성 요소로 전달합니다.
  • 예시: 새로운 Pod 배포 요청 시, API Server는 요청을 받아 Scheduler와 Controller Manager에 작업을 할당합니다.

2. Cloud Controller Manager (선택 사항)

  • 역할:
    • 클라우드 제공자의 API와 통합하여, 클라우드 리소스와 클러스터를 연결합니다.
    • 클라우드 환경에서 클러스터 노드의 추가/삭제, 로드밸런서 생성 등을 처리합니다.
  • 작동 원리:
    • 클라우드 플랫폼(GCP, AWS, Azure 등)과 쿠버네티스 클러스터 간 통신을 관리합니다.
    • 클라우드 환경에 의존하는 작업(예: 영구 스토리지 볼륨 연결)을 수행합니다.
  • 예시: 새로운 노드가 클러스터에 추가되면 클라우드 API를 통해 노드를 자동으로 프로비저닝합니다.

3. Controller Manager

  • 역할:
    • 쿠버네티스 컨트롤러들의 집합체로, 클러스터의 상태를 지속적으로 확인하고 원하는 상태를 유지합니다.
    • 여러 개의 컨트롤러(Replication Controller, Node Controller 등)를 통해 자동화 작업을 처리합니다.
  • 작동 원리:
    • 클러스터의 현재 상태를 확인한 후, API Server에 정의된 **Desired State(원하는 상태)**와 비교합니다.
    • 현재 상태와 원하는 상태가 다를 경우, 이를 조정하는 작업을 수행합니다.
  • 예시:
    • Pod가 종료되면 Replication Controller가 새 Pod를 생성하여 원하는 Pod 개수를 유지합니다.

4. etcd

  • 역할:
    • 쿠버네티스 클러스터의 모든 상태 정보를 저장하는 분산 키-값 저장소입니다.
    • 고가용성을 제공하며, 클러스터의 중요한 메타데이터를 유지합니다.
  • 작동 원리:
    • 쿠버네티스의 다른 구성 요소는 클러스터 상태를 etcd에 저장하거나, 필요한 정보를 읽어갑니다.
    • 데이터는 지속적으로 업데이트되며, 장애 복구 시 클러스터 상태를 복원하는 데 사용됩니다.
  • 예시: 클러스터의 현재 노드 리스트나 Pod 정보가 저장됩니다.

5. Scheduler

  • 역할:
    • 클러스터의 워크로드를 적절한 노드에 배치합니다.
    • 각 노드의 리소스 사용량(CPU, 메모리 등), 정책, 제약 조건을 기반으로 작업을 분배합니다.
  • 작동 원리:
    • API Server로부터 새로 생성된 Pod의 배치 요청을 받고, 적절한 노드를 선택합니다.
    • 선택된 노드에 작업을 할당하면, kubelet이 이를 실행합니다.
  • 예시: 특정 노드가 과부하 상태이면 다른 여유 있는 노드에 Pod를 배치합니다.

6. Kubelet

  • 역할:
    • 각 Worker Node에서 실행되는 에이전트로, 노드에서 컨테이너를 실행하고 관리합니다.
  • 작동 원리:
    • API Server로부터 명령을 받아 컨테이너 런타임(예: Docker, containerd)을 통해 컨테이너를 실행합니다.
    • 노드 상태를 모니터링하며, 문제 발생 시 이를 보고합니다.
  • 예시: 새로운 컨테이너를 시작하거나 종료하며, 노드의 리소스 상태(CPU, 메모리)를 API Server에 보고합니다.

7. Kube-proxy

  • 역할:
    • 네트워킹 구성 요소로, Pod 간 또는 Pod와 외부 간의 통신을 관리합니다.
    • 네트워크 규칙을 설정하고, 트래픽을 올바른 대상에 전달합니다.
  • 작동 원리:
    • 서비스와 Pod 간의 통신을 위한 로드밸런싱 역할을 합니다.
    • iptables 또는 IPVS 규칙을 설정하여 네트워크 트래픽을 라우팅합니다.
  • 예시: 외부 요청을 특정 Pod로 전달하거나, 여러 Pod에 부하를 분산합니다.

8. Node

  • 역할:
    • 클러스터의 작업을 실행하는 단위로, 워커 노드(Worker Node)라고도 불립니다.
    • 각 노드에는 kubelet, kube-proxy, 컨테이너 런타임이 설치되어 있습니다.
  • 작동 원리:
    • 클러스터에서 워크로드(Pod)가 실행되며, 노드는 컨테이너를 실행하는 실제 하드웨어나 가상 머신을 나타냅니다.
  • 예시: 여러 Pod가 실행되고, Pod 간의 네트워크 통신이 이루어집니다.
728x90
반응형

관련글 더보기