Cluster API Book : 개념

개념

관리 클러스터(Management cluster)

워크로드 클러스터의 라이프사이클을 관리하는 쿠버네티스 클러스터다. 관리 클러스터는 하나 이상의 인프라 공급자가 실행되고, 머신과 같은 리소스가 저장되는 위치이기도 하다.

워크로드 클러스터(Workload cluster)

관리 클러스터에서 라이프사이클을 관리하는 쿠버네티스 클러스터다.

인프라 공급자(Infrastructure provider)

컴퓨팅 및 네트워킹과 같은 계산 리소스의 소스다. 예를 들어 클라우드 인프라 공급자에는 AWS, Azure 및 Google이 포함되고 베어 메탈 인프라 공급자에는 VMware, MAAS 및 metal3.io이 포함된다.

동일한 인프라 공급자(예: EC2와 EKS를 모두 제공하는 AWS)에서 리소스를 얻는 방법이 두 가지 이상 있을 경우 각 방법을 변형(variant)이라고 한다.

부트스트랩 공급자(Bootstrap provider)

부트스트랩 공급자는 다음을 담당한다.

  1. 지정되지 않은 경우 클러스터 인증서 생성
  2. 제어 평면 초기화 및 완료될 때까지 다른 노드 생성 게이팅(gating)
  3. 제어 평면 및 작업자 노드를 클러스터에 결합

제어 평면

제어 평면은 Kubernetes API를 제공하고 제어 루프를 사용하여 원하는 상태를 지속적으로 조정하는 서비스 집합이다.

  • 머신-기반 제어 평면이 가장 일반적인 유형이다. 전용 시스템이 프로비저닝되어 kube-apiserver, kube-controller-manager 및 kube-scheduler와 같은 구성 요소를 위한 정적 포드를 실행한다.
  • 포드-기반 구축에는 외부 호스팅 클러스터가 필요합니다. 제어평면 구성요소는 표준 Deployment와 StatefulSet 개체를 사용하여 배포되고 API는 Service를 사용하여 노출된다.
  • 외부 제어 평면은 GKE, AKS, EKS 또는 IKS와 같은 클러스터 API 이외의 시스템에 의해 제공되고 제어된다.

v1alpha2에서 머신-기반은 Cluster API가 지원하는 유일한 제어 평면 유형이다.

기본 제공자는 제어 평면을 부트스트랩하기 위해 kubeadm을 사용한다. v1alpha3부터는 KubedmControlPlane 개체를 통해 구성을 표시한다. 그런 다음 컨트롤러인 capi-kubeadm-control-plane-controller-managerKubedmControlPlane 객체에 요청된 복제본을 기반으로 Machine 및 BootstrapConfig 객체를 생성할 수 있다.

Custom Resource Definitions (CRDs)

Machine

“Machine”은 Kubernetes 노드(예: VM)를 호스팅하는 인프라 구성 요소의 선언적 사양이다. 새 머신 개체가 생성되면 공급자별 컨트롤러가 시스템 규격과 일치하는 새 노드로 등록할 새 호스트를 프로비저닝하고 설치한다. 시스템의 규격이 업데이트되면 컨트롤러는 업데이트된 규격과 일치하는 새 호스트로 호스트를 교체한다. 시스템 개체가 삭제되면 컨트롤러에 의해 해당 기본 인프라 및 해당 노드가 삭제된다.

Kubernetes 버전과 같은 일반 필드는 머신 사양에 따라 필드로 모델링된다. 공급자 관련 정보는 InfrastructureRef의 일부이며 서로 다른 공급자 간에 이동할 수 없다.

머신 불변성(가동중 업그레이드 대 교체)

클러스터 API의 관점에서 모든 시스템은 불변한다. 일단 시스템이 생성되면 업데이트되지 않고(레이블, 주석 및 상태를 제외하고) 삭제만 수행된다.

이러한 이유로 MachineDeployments가 선호된다. MachineDeployments는 코어 배포가 포드 사양에 대한 변경 사항을 처리하는 것과 동일한 방식으로 시스템 변경 사항을 교체하여 처리한다.

MachineDeployment

MachineDeployment는 Machine 및 MachineSet에 대한 선언적 업데이트를 제공한다.

MachineDeployment는 코어 Kubernetes Deployment와 유사하게 작동한다. MachineDeployment는 이전 및 새로 업데이트된 시스템 세트 등 2개의 MachineSet에 대한 변경 내용을 롤아웃하여 Machine 사양의 변경 내용을 조정한다.

MachineSet

MachineSet의 목적은 지정된 시간에 실행되는 안정적인 Machine 세트를 유지하는 것이다.

시스템 세트는 코어 Kubernetes ReplicaSet과 유사하게 작동한다. MachineSet는 직접 사용할 수 없지만, MachineDeployment가 원하는 상태를 조정하는 데 사용하는 메커니즘이다.

MachineHealthCheck

MachineHealthCheck은 노드가 건강하지 않은 것으로 간주되는 조건을 정의한다.

Node가 지정된 사용자 구성 시간 동안 이러한 상태가 좋지 않은 조건과 일치하는 경우 시스템 상태 점검은 노드에 대한 업데이트 적용을 시작한다. 노드 업데이트 적용은 해당 시스템을 삭제하여 수행된다.

MachineHealthCheck는 MachineSet이 노드를 소유한 경우에만 업데이트를 적용한다. 이렇게 하면 MachineSet이 고장난 컴퓨터를 대체할 새 컴퓨터를 만들기 때문에 Kubernetes 클러스터의 용량이 손실되지 않는다.

BootstrapData

부트스트랩 데이터에는 인프라 공급자가 시스템을 노드에 부트스트랩하는 데 사용하는 Machine 또는 Node 역할별 초기화 데이터(일반적으로 클라우드 시작)가 포함되어 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

Cluster API Book : 소개

Cluster API 프로젝트 Cluster API는 여러 Kubernetes 클러스터의 프로비저닝, 업그레이드 및 운영을 단순화하는 선언적 API 및 툴링을 제공하는…