k8s 1주차 1일 k8s 기본 개념

진웅·2025년 5월 23일

K8S Basics

목록 보기
1/41

1. Kubernetes 아키텍처 개요

Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈소스 플랫폼입니다. 아키텍처는 마스터 노드(Control Plane)워커 노드(Worker Node)로 나뉘며, 이들이 상호작용하여 클러스터를 구성합니다.

  • 마스터 노드(Control Plane): 클러스터의 상태를 관리하고 제어합니다.
  • 워커 노드(Worker Node): 실제 애플리케이션(컨테이너)이 실행되는 곳입니다.

2. Kubernetes 주요 컴포넌트

2.1 마스터 노드 컴포넌트

마스터 노드는 클러스터를 관리하는 핵심 컴포넌트를 포함합니다.

  1. API Server (kube-apiserver):
    • 클러스터의 중앙 인터페이스.
    • 모든 요청(CLI, UI, 외부 시스템)을 처리하고 상태를 etcd에 저장.
  2. etcd:
    • 클러스터의 상태를 저장하는 분산 키-값 저장소.
    • 예: 파드, 서비스, 노드 정보.
  3. Controller Manager (kube-controller-manager):
    • 클러스터 상태를 원하는 상태로 유지.
    • 예: 레플리카셋 컨트롤러, 노드 컨트롤러.
  4. Scheduler (kube-scheduler):
    • 파드를 적절한 워커 노드에 배치.
    • 리소스 사용량, 정책, 제약 조건 고려.

2.2 워커 노드 컴포넌트

워커 노드는 애플리케이션 실행을 담당합니다.

  1. Kubelet:
    • 노드에서 실행 중인 파드를 관리.
    • API 서버와 통신하여 파드 상태 보고.
  2. Kube-Proxy:
    • 네트워크 프록시 역할.
    • 서비스와 파드 간 네트워크 트래픽 관리.
  3. Container Runtime:
    • 컨테이너 실행 환경.
    • 예: Docker, containerd, CRI-O.
  4. 파드(Pod):
    • Kubernetes의 최소 배포 단위.
    • 하나 이상의 컨테이너 포함.

2.3 네트워크 및 스토리지

  • CNI (Container Network Interface): 네트워크 플러그인으로 파드 간 통신 관리 (예: Flannel, Calico).
  • 스토리지: 퍼시스턴트 볼륨(PV), 퍼시스턴트 볼륨 클레임(PVC)으로 데이터 저장.

k8s 컴포넌트 기준 흐름

사용자가 kubectl apply 명령어를 실행하여 애플리케이션을 배포
2️⃣ API 서버(kube-apiserver)가 요청을 받아 etcd에 저장
3️⃣ 스케줄러(kube-scheduler)가 적절한 워커 노드를 선택하여 파드 배포
4️⃣ Kubelet이 노드에서 파드를 실행
5️⃣ Kube Proxy가 네트워크 설정을 적용하여 통신 가능하게 함
6️⃣ 서비스(Service)와 인그레스(Ingress)를 통해 외부에서 접근 가능


3. Kubernetes 아키텍처 다이어그램


4. Kubernetes 컴포넌트 표

구분컴포넌트설명위치
마스터 노드API Server클러스터의 모든 요청을 처리하고 상태를 관리Control Plane
etcd클러스터 상태를 저장하는 분산 데이터베이스Control Plane
Controller Manager클러스터 상태를 원하는 상태로 유지 (레플리카, 노드 관리 등)Control Plane
Scheduler파드를 적절한 워커 노드에 배치Control Plane
워커 노드Kubelet파드의 실행 상태를 관리하고 API 서버와 통신Worker Node
Kube-Proxy네트워크 트래픽 관리 (서비스와 파드 간 연결)Worker Node
Container Runtime컨테이너 실행 환경 (Docker, containerd 등)Worker Node
Pod하나 이상의 컨테이너를 포함하는 최소 배포 단위Worker Node
네트워크/스토리지CNI파드 간 네트워크 통신을 위한 플러그인 (Flannel, Calico 등)클러스터 전반
PV/PVC데이터 저장을 위한 퍼시스턴트 볼륨 및 클레임클러스터 전sion

5. 교육용 추가 팁

  • 시각적 학습: 위 차트를 활용해 마스터 노드와 워커 노드의 관계를 설명하세요. 실제 강의에서는 Kubernetes 공식 문서의 아키텍처 다이어그램을 함께 보여주는 것이 좋습니다.
  • 실습 제안: Minikube 또는 Kind를 사용해 로컬 Kubernetes 클러스터를 구축하고, kubectl get nodes, kubectl get pods 명령으로 컴포넌트를 확인해보세요.
  • 핵심 질문:
    • API Server가 왜 중요한가?
    • Scheduler는 어떤 기준으로 파드를 배치하나?
    • 파드와 컨테이너의 차이는 무엇인가?

6. 추가 자료

궁금한 점이 있거나 특정 컴포넌트에 대해 더 자세히 알고 싶다면 말씀해주세요!

profile
bytebliss

0개의 댓글