K8s Architecture

김호현·2023년 9월 15일
0

CKA

목록 보기
1/10

본격적인 CKA 준비에 앞서, K8s의 구성과 동작 구조를 알아보고 각각 구성 요소들이 어떻게 움직이는지 알아보자.

Architecture

쿠버네티스 클러스터를 구성하는 노드는 크게 마스터 노드(컨트롤 플레인), 워커 노드 두 개로 분류한다.
각각의 노드를 구성하는 주요 구성요소들은 다음과 같다.

마스터 노드(컨트롤 플레인)

API Server

  • 쿠버네티스의 API를 제공하며, 사용자와 시스템 구성 요소 간의 인터페이스 역할을 한다.
  • 각 노드에서 보낸 API 요청을 전달받고, etcd 오브젝트 스토어에 업데이트 하기 전에 검증을 수행 후 모든 데이터를 저장한다.
  • 6443번 Port를 사용한다.

Controller

  • Cluster의 상태를 관리하고, 필요한 변경 사항을 조정한다.

  • 다양한 매니저를 하나의 바이너리로 통합한 도구.

    • Node Controller
      노드가 다운되었을 때 통지하고, 대응한다.

    • Replication Controller
      모든 Replication Controller 오브젝트에 대해 알맞은 수의 파드를 유지시킨다.

    • Endpoint Controller
      서비스와 파드를 연결한다.

    • Service Account & Token Controller
      새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.

Scheduler

  • 아직 스케줄링 되지 않은 Pod를 현재 사용가능한 노드에 바인딩 하는 역할을 수행한다.

etcd

  • 쿠버네티스 클러스터에 대한 설정 데이터를 저장 하는 분산 데이터 저장소(키-값 형태).
  • 대규모 클러스터의 경우 고가용성을 위해 3개에서 많으면 5개 노드의 etcd 클러스터를 구성한다.

Kubelet

  • Control-Plane의 API Server로부터 PodSpec을 전달 받아 컨테이너를 실행하고 관리한다.
  • 컨테이너와 노드 자체의 상태 정보를 모니터링하고, 이 정보를 API Server에게 전달한다.
  • Kubernetes의 데이터 볼륨(PV, PVC, Storage Classes 등)을 컨테이너와 연결하거나 분리하는 작업을 수행한다.

CNI

  • Container Network Interface, 컨테이너 간 통신을 지원한다.

kube-proxy

  • 쿠버네티스 서비스 추상화를 구현해, 클러스터 내의 파드가 서비스를 통해 다른 파드나 애플리케이션에 연결할 수 있게 해준다.

  • kube-proxy의 주요 기능은 다음과 같다.

    • Service IP 및 Port 관리
      각 서비스에 대한 IP 주소와 포트를 관리하고, 이들을 해당 서비스에 연결된 파드의 IP와 Port로 매핑한다.

    • Load-Balancing
      여러 개의 파드가 하나의 서비스 뒤에서 동작할 때, 들어오는 요청을 각 파드에 균등하게 분배한다.

    • Session Affinity
      필요한 경우, 특정 클라이언트에서 오는 연속적인 요청들이 동일한 파드로 전달되도록 할 수 있다(Sticky Session).

워커 노드(노드 혹은 데이터 플레인)

  • Kubelet
  • CNI
  • kube-proxy
profile
Cloud/DevOps Engineer

0개의 댓글