[Docker / Kubernetes] 11. Kubernetes Architecture

서준교·2021년 10월 15일
2

Docker / Kubernetes

목록 보기
13/15
post-thumbnail

👉 이 게시글은 도커 / 쿠버네티스 온라인 부트캠프 with 카카오엔터프라이즈 강의를 바탕으로 작성되었습니다.

1. 쿠버네티스 구조

1) 클러스터

클러스터는 노드라고 불리는 워커 머신의 집합이며, 모든 클러스터는 한 개 이상의 워커 노드를 가진다.

  • 노드 : 컨테이너화된 애플리케이션을 실행하는 서버 (가상 또는 물리 둘다 가능)

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

컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리하는 역할을 한다. 컨트롤 플레인의 구성 요소는 다음과 같다.

  • API 서버 : 쿠버네티스 API 호출, 쿠버네티스 컨트롤 플레인의 프론트 엔드, 수평확장 가능
  • etcd : 모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성·고가용성 키-값 저장소
  • 스케줄러 : 노드가 배정되지 않은 새로 생성된 파드를 감지하고, 실행할 노드를 선택
  • 컨트롤러 매니저 : ReplicaSets, Deployment, Service와 관련한 제어 루프를 수행, 노드가 다운되면 통지 및 대응, 알맞은 수의 파드 유지, Service와 파드 연결 등
  • 클라우드 컨트롤러 매니저 : AWS, Azure, GCP 등의 클라우드에 연결하는 경우 활용

3) 워커 노드

애플리케이션의 구성 요소인 파드를 호스트하는 역할을 한다. 워커 노드의 구성 요소는 다음과 같다.

  • Kubelet : 컨테이너가 동작하도록 관리, 쿠버네티스 클러스터와 워커노드의 CPU, Memory, Disk를 서로 연결한다.
  • Kube-proxy : 쿠버네티스 Service (로드밸런서 리소스)에 맞게 커널의 netfliter(iptables) 등을 관리하는 역할
  • 컨테이너 런타임 : 컨테이너 실행을 담당하는 소프트웨어 (도커, containerd, CRI-O 등)

4) POD (파드)

하나 이상의 컨테이너로 구성된 배포의 최소 단위이다. 1개의 파드에는 2개 이상의 각각 다른 이미지를 가진 컨테이너를 생성할 수 있으며, 파드 내의 컨테이너들은 동일한 볼륨과 연결 가능하다. 파드 리소스는 노드 IP와 별개로 파드만의 고유한 IP를 할당받으며, 파드 내의 컨테이너들은 IP를 공유한다. 보통 쿠버네티스에서는 yaml 파일 생성 후 apply 명령을 통해 파드를 실행한다.

5) CNI (Container Network Interface)

CNI는 파드간의 연결을 용이하게 하는 일종의 플러그인이다. 네트워크로 연결되어야 할 파드는 동일한 노드나 서로 다른 노드에 존재할 수 있는데, 이렇게 분산되어 있는 파드를 네트워크로 묶어주는 역할을 한다. 컨테이너 런타임이 CNI 플러그인을 호출하여 컨테이너의 네트워킹 네임스페이스에 인터페이스를 추가하거나 제거하는 역할을 한다.

profile
매일 성장하는 개발자가 되고 싶습니다. 😊

0개의 댓글