Kubernetes2

MONA·2025년 6월 12일

나혼공

목록 보기
72/92

쿠버네티스

컨테이너를 실행하는 플랫폼

핵심개념

  1. application manifest

    • 쿠버네티스에 애플리케이션을 배포하고 관리하기 위해 사용하는 설정 파일
    • 보통 YAML 형식으로 작성하고, 쿠버네티스 리소스를 정의함

    특징

    • 선언형(Declarative): 원하는 상태를 정의하고, 쿠버네티스가 이를 알아서 유지함
    • 재사용 기능: 동일 설정으로 다른 환경에도 배포할 수 있음
    • 형상 관리 기능: Git, 형상관리도구로 관리할 수 있음

    대표적인 Manifest 종류

    • Deployment: 애플리케이션의 배포 방식 정의(replica 수, image 등)
    • Service: 네트워크 통신 정의(ClusterIP, NodePort 등)
    • ConfigMap/Secret: 설정값이나 민감 정보 관리
    • Ingress: 외부에서 접근할 수 있는 경로 정의
    • PersistentVolumeClaim: 스토리지 요청
  1. cluster

    • 도커같은 컨테이너 런타임이 동작하는 여러 대의 서버가 모여 쿠버네티스 같은 하나의 논리적 단위를 구성한 것
    • 쿠버네티스에서 애플리케이션을 실제로 실행하고 관리하는 서버들의 집합. 크게 두 가지 구성요소로 나뉨

    구성요소

  • Control Plane(제어 plane)

    • 클러스터의 두뇌
    • 핵심 컴포넌트
      • kube-apiserver : 모든 요청의 입구
      • etcd : 클러스터 상태 저장
      • kube-scheduler : 피드가 어디에 배포될 지 결정
      • kube-controller-manager : 클러스터 상태를 원하는 상태로 유지
  • Worker Node(작업 노드)

    • 실제로 애플리케이션이 실행되는 머신
    • 각 노드는 다음을 포함한다
      • kubelet : 피드 실행을 관리
      • kube-proxy : 네트워크 라우팅
      • Container Runtime (ex: containerd, Docker)

정리

  • application manifest는 실행할 앱/리소스를 정의하고, YAML 파일로 구성되어있다
  • cluster는 앱이 실행되는 환경으로, control plane, worker node로 구성되어 있다

추가 정리

클러스터 관리자는 노드라고 하는 각각의 서버를 관리한다

  • 클러스터: 쿠버네티스가 애플리케이션을 실행하는 단위. 여러 대의 서버(노드)로 구성됨
  • 노드: 클러스터 안에서 컨테이너가 실제로 실행되는 서버. Control Plane이 관리함
    - Master Node/Control Plane: 클러스터를 관리하는 서버
    - Worker node: 애플리케이션을 실행하는 서버
    -> 관리자는 실제로는 Control Plane 구성 요소이다.

쿠버네티스 클러스터의 목적은 애플리케이션을 실행하는 것이다

  • 쿠버네티스는 기본적으로 컨테이너 오케스트레이션 도구이다
  • 목적은 컨테이너 기반 애플리케이션을 자동으로 배포, 확장, 복구하는 것이다
    -> Kubernetes는 '실행 환경 제공 + 실행 상태 유지'가 핵심 기능이다.

컨테이너는 고가용성을 위해 여러 노드에 흩어져 있으며, 쿠버네티스가 관리하는 가상 네트워크로 서로 통신할 수 있다

  • 컨테이너 분산 배치: Replica를 여러 노드에 분산시켜 장애 발생 시 다른 노드에서 지속 운영 가능 -> 고가용성
  • 가상 네트워크(Pod Network)
    - 모든 피드는 고유 IP를 가지며, 노드와 관계없이 클러스터 내부에서 IP 기반 통신이 가능
    • 네트워크 구현체: Calico, Flannel, Cilium 등

클러스터에는 분산 데이터베이스가 들어있다

  • etcd
    - 쿠버네티스의 상태 데이터를 저장하는 Key-Value 기반의 분산 데이터베이스
    • control Plane 컴포넌트들이 etcd를 읽고 쓰며 클러스터 상태를 유지

쿠버네티스에서 애플리케이션을 구성하는 컴포넌트를 리소스라고 한다

  • resource
    - 쿠버네티스에서 관리되는 모든 객체
    • ex) Pod, Deployment, Service, ConfigMap, Secret, Ingress etc
  • 리소스는 YAML manifest로 정의하며, API Server를 통해 생성/조회/수정/삭제함
  • 리소스는 쿠버네티스에서 실행 환경을 구성하는 모듈 단위.
용어설명
Cluster쿠버네티스 전체 시스템 (Control Plane + Nodes)
Node컨테이너가 실행되는 서버 (Worker Node)
Control Plane클러스터 상태를 유지하고 관리하는 구성요소 모음
Pod쿠버네티스에서 가장 작은 실행 단위, 하나 이상의 컨테이너 포함
etcd쿠버네티스 클러스터 상태를 저장하는 분산 Key-Value DB
Virtual Network쿠버네티스가 제공하는 가상 네트워크로 Pod 간 통신 가능
Resource쿠버네티스 API로 정의하고 관리하는 애플리케이션 구성 요소
Manifest리소스를 선언하는 YAML 파일
profile
고민고민고민

0개의 댓글