본문 바로가기

Cloud-native/Kubernetes

[Kubernetes]쿠버네티스의 핵심 컴포넌트

쿠버네티스에서 각 컴포넌트가 자율적으로 움직인다. 각 컴포넌트는 다른 컴포넌트를 API를 통해 호출한다.

쿠버네티스 컴포넌트는 3 가지로 구분한다.

클러스터를 관리하는데 필수인 마스터용 컴포넌트

노드용 컴포넌트

필수는 아니지만 추가로 사용할 수 있는 애드온용 컴포넌트


마스터 컴포넌트

쿠버네티스의 클러스터 전체를 관리하는 역할을 담당. 여러 대로 이루어진 클러스터 안의 노드의 리소스 사용 상황을 확인하고 컨테이너를 가동할 노드를 자동으로 선택한다.

etcd라는 분산 키 밸류 스토어(KVS)를 사용하여 클러스터의 구성 정보를 관리한다. 여기에는 클러스터에 관한 모든 설정 정보가 들어 있다.

etcd - 데이터 스토어

  • 쿠버네티스 클러스터 구성을 유지하는 분산 KVS. 데이터를 Key-Value형으로 관리한다.
  • 어떤 포드를 어떻게 배치할지와 같은 정보를 갖고 있어서 API Server가 이를 참조한다.
  • 매니페스트의 내용이 저장되어 있다고 생각하면 좋을 것이다.
  • 분산 시스템에서 노드 사이의 상태를 공유하는 합의 알고리즘 중 하나인 raft 알고리즘을 구현한 것.
  • 쿠버네티스에서는 필요한 모든 데이터를 저장하는 데이터베이스 역할을 한다.
  • 마스터 서버에서 분리시킬 수도 있다.

kube-apiserver

  • 쿠버네티스 클러스터의 API를 사용할 수 있도록 하는 컴포넌트
  • 쿠버네티스의 리소스 정보를 관리하기 위한 프런트엔드 REST API. 각 컴포넌트로부터 리소스 정보를 받아 데이터스토어(etcd)에 저장하는 역할을 갖고 있다.
  • 클러스터로의 요청이 유효한지 검증한다.
  • API Server에 액세스 하려면 kubectl 명령을 사용한다. 또 애플리케이션 안에서 API Server를 호출할 수도 있다.
  • 수평적으로 확장할 수 있도록 설계했으므로 서버 여러 대에 여러 개의 kube-apiserver를 실행해 사용할 수 있다.

kube-scheduler

  • 현재 클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택해서 새롭게 만든 파드를 실행한다.

kube-controller-manager

  • 쿠버네티스 클러스터의 상태를 감시하고 본래 되어야 할 상태를 유지하는 백엔드 컴포넌트.
  • 정의 파일에서 정의한 것과 실제 노드나 컨테이너에서 작동하고 있는 상태를 모아서 관리한다.
  • 스케일아웃을 관리한다.

cloud-controller-manager

쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리하는 컴포넌트.


노드 컴포넌트

컨테이너 애플리케이션이 작동하는 서버.

kubelet

  • 모든 노드에서 실행되는 에이전트
  • 파드 정의 파일에 따라 컨테이너를 실행하거나 스토리지를 마운트 하는 기능을 갖고 있다.
  • 노드의 Status를 정기적으로 감시하는 기능을 갖고 있어 정기적으로 API Server에게 통지한다.
  • 파드 컨테이너들의 실행을 직접 관리한다.

Kube-proxy

  • 쿠버네티스는 클러스터 안에 별도의 가상 네트워크를 설정하고 관리한다.
  • 호스트의 네트워크 규칙을 관리하거나 연결을 전달할 수도 있다.

Container Runtime

  • 실제로 컨테이너를 실행시킨다.
  • docker, containerd, cri-o 등

에드온 컴포넌트

네트워킹 에드온

  • 클러스터 안에 가상 네트워크를 구성해 사용할 때 kuby-proxy 이외에 네트워킹 에드온을 사용한다.

DNS 애드온

  • 클러스터 안에서 동작하는 DNS 서버. 쿠버네티스 서비스에 DNS레코드를 제공한다. 쿠버네티스 안에 실행된 컨테이너들은 자동으로 DNS 서버에 등록된다.
  • kube-dns, CoreDNS 등

대시보드 애드온

  • 대시보드는 쿠버네티스 클러스터를 위한 범용의 웹 기반 UI다. 사용자가 클러스터 자체뿐만 아니라, 클러스터에서 동작하는 애플리케이션에 대한 관리와 문제 해결을 할 수 있도록 해준다.

컨테이너 자원 모니터링

  • 클러스터 안에서 실행 중인 컨테이너의 상태를 모니터링하는 애드온

클러스터 로깅

  • 클러스터 안 개별 컨테이너의 로그와 쿠버네티스 구성 요소의 로그들을 중앙 화한 로그 수집 시스템에 모아서 보는 에드온

https://kubernetes.io/ko/docs/concepts/overview/components/