[K8S] 쿠버네티스 아키텍처

쿠버네티스 클러스터는 주로 노드라고 불리는 워커 머신들과 컨트롤 센터로 구성됩니다. 클러스터에는 최소한 하나의 워커 노드가 있습니다. kubectl CLI는 컨트롤 센터와 통신하고 컨트롤 센터는 워커 노드를 관리합니다.

쿠버네티스 클러스터 아키텍처

쿠버네티스는 클라이너트 - 서버 아키텍처를 따릅니다. 마스터는 하나의 리눅스 시스템에 설치되고 노드는 여러 리눅스 워크스테이션에 설치됩니다. 마스터 노드에는 API 서버, 컨트롤러 매니저, 스케줄러, 상태 저장을 위한 etcd 데이터베이스와 같은 구성 요소가 포함됩니다. Kubelet은 마스터와 통신하고, kube-proxy는 네트워킹을 담당하며, 도커와 같은 컨테이너 런타임은 컨테이너를 관리합니다.

쿠버네티스 구성 요소

쿠버네티스는 각각 전체 시스템에서 특정 역할을 수행하는 여러 구성 요소로 구성됩니다. 이러한 구성 요소는 두 가지 범주로 나눌 수 있습니다.

  • 노드: 각 쿠버네티스 클러스터는 최소한 하나의 워커 노드가 필요합니다. 이는 컨테이너가 배포될 노드들로 이루어진 워커 머신 모음입니다.
  • 컨트롤 센터: 워커 노드와 그 안에 포함된 모드 파드는 컨트롤 센터에 의해 관리됩니다.

컨트롤 센터 구성 요소

클러스터의 전반적인 상태를 관리하는 데 도움을 주는 다양한 구성 요소입니다. 새로운 파드를 설정하거나, 파드를 삭제하거나, 파드를 확장하는 등의 작업을 수행할 수 있습니다.

  • API 서버: 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤 센터의 구성 요소입니다. 이는 클러스터에 대한 초기 게이트웨이 역할을 하여 kubectl과 같은 CLI를 통해 업데이트나 쿼리를 수신합니다. kubectl은 API 서버와 통신하여 파드 생성이나 삭제 등 필요한 작업을 지시합니다. API 서버는 요청을 검증하고 다른 프로세스로 전달하는 게이트키퍼 역할도 합니다. 요청은 직접 클러스터로 전달될 수 없으며 반드시 API 서버를 통해야 합니다.
  • 스케줄러: API 서버가 파드 스케줄링 요청을 받으면 해당 요청은 스케줄러로 전달됩니다. 스케줄러는 클러스터의 효율성을 높이기 위해 파드를 어느 노드에 스케줄링할지 결정합니다.
  • 컨트롤러 매니저: 클러스터의 제어 루프의 다양한 측면을 처리하는 컨트롤러를 실행하는 역할을 합니다. 이러한 컨트롤러에는 주어진 애플리케이션의 원하는 수의 복제본이 실행되고 있는지 확인하는 복제 컨트롤러와 노드의 현재 상태에 따라 노드가 준비됨 또는 준비되지 않음으로 올바르게 표시되도록 하는 노드 컨트롤러가 포함됩니다.
  • etcd: 클러스터의 키-값 저장소입니다. 클러스터 상태 변경 사항이 etcd에 저장됩니다. 이는 스케줄러와 다른 프로세스에 사용 가능한 리소스와 클러스터 상태 변경 사항에 대해 알려주는 역할을 합니다.

노드 구성 요소

이곳에서 실제 작업이 이루어집니다. 각 노드는 여러 파드를 가질 수 있으며 파드 안에는 컨테이너가 실행됩니다. 각 노드에는 파드를 스케줄링하고 관리하는 데 사용되는 3가지 프로세스가 있습니다.

  • 컨테이너 런타임: 파드 내부에서 실행되는 애플리케이션 컨테이너를 실행하는 데 필요합니다.
  • kubelet: 컨테이너 런타임과 노드 모두와 상호 작용합니다. 이는 파드 내부의 컨테이너를 시작하는 책임을 지는 프로세스입니다.
  • kube-proxy: 서비스에서 파드로 요청을 전달하는 역할을 합니다. 이는 워커 노드 내의 올바른 파드로 요청을 전달하는 로직을 가지고 있습니다.

애드온 플러그인

쿠버네티스 애드온은 클러스터의 기능을 확장하는 플러그인으로 일반적으로 DaemonSets, deployments 등으로 쿠버네티스 리소스로 설치됩니다. 이러한 애드온은 일반적으로 kube-system 네임스페이스 내에 배포되어 클러스터 수준의 기능을 제공하고 쿠버네티스의 기본 기능을 확장합니다.

주요 애드온

  • CoreDNS: 쿠버네티스 클러스터에 대한 이름 확인 서비스를 제공하여 효율적인 서비스 발견 및 네트워크 라우팅을 보장하는 유연하고 확장 가능한 DNS 서버입니다.
  • KubeVirt: 컨테이너와 함께 가상 머신을 실행할 수 있도록 하여 VM과 컨테이너화된 애플리케이션을 통합 관리 플랫폼을 제공합니다.
  • ACI: 다양한 환경에서 컨테이너의 통합 및 관리를 용이하게하여 애플리케이션의 이식성과 확장성을 향상시킵니다.
  • Calico: 쿠버네티스 클러스터에 대해 안전하고 고성능 네트워킹과 네트워크 정책 강화를 제공하는 네트워크 정책엔진입니다.

 

'Kubernetes(K8S)' 카테고리의 다른 글

[K8S] 쿠버네티스란 무엇인가  (0) 2024.06.21