12.6. 컨트롤 플레인 복원력 및 복구
컨트롤 플레인 머신 세트를 사용하여 OpenShift Container Platform 클러스터의 컨트롤 플레인의 복원력을 향상시킬 수 있습니다.
12.6.1. 장애 도메인을 통한 고가용성 및 내결함성
가능한 경우 컨트롤 플레인 머신 세트는 컨트롤 플레인 시스템을 여러 장애 도메인에 분배합니다. 이 구성은 컨트롤 플레인 내에서 고가용성 및 내결함성을 제공합니다. 이 전략은 인프라 공급자 내에서 문제가 발생할 때 컨트롤 플레인을 보호하는 데 도움이 될 수 있습니다.
12.6.1.1. 장애 도메인 플랫폼 지원 및 구성
장애 도메인의 컨트롤 플레인 머신 세트 개념은 클라우드 공급자의 기존 개념과 유사합니다. 모든 플랫폼이 장애 도메인 사용을 지원하는 것은 아닙니다.
클라우드 공급자 | 실패 도메인 지원 | 공급자 nomenclature |
---|---|---|
AWS(Amazon Web Services) | X | |
GCP(Google Cloud Platform) | X | |
Microsoft Azure | X | |
Nutanix | X | |
Red Hat OpenStack Platform (RHOSP) | X | |
VMware vSphere | X | vSphere 영역에 매핑된 실패 도메인 [1] |
- 자세한 내용은 " VMware vCenter의 지역 및 영역"을 참조하십시오.
컨트롤 플레인 머신 세트 CR(사용자 정의 리소스)의 장애 도메인 구성은 플랫폼에 따라 다릅니다. CR의 실패 도메인 매개변수에 대한 자세한 내용은 공급자의 샘플 실패 도메인 구성을 참조하십시오.
12.6.1.2. 컨트롤 플레인 시스템 밸런싱
컨트롤 플레인 머신 세트는 CR(사용자 정의 리소스)에 지정된 장애 도메인에서 컨트롤 플레인 시스템의 균형을 조정합니다.
가능한 경우 컨트롤 플레인 머신 세트는 각 장애 도메인을 동일하게 사용하여 적절한 내결함성을 보장합니다. 컨트롤 플레인 시스템보다 장애 도메인이 적은 경우 이름으로 알파벳순으로 재사용하기 위해 장애 도메인을 선택합니다. 장애 도메인이 지정되지 않은 클러스터의 경우 모든 컨트롤 플레인 시스템이 단일 장애 도메인에 배치됩니다.
장애 도메인 구성을 변경하면 컨트롤 플레인 머신 세트가 컨트롤 플레인 시스템을 재조정합니다. 예를 들어 컨트롤 플레인 시스템보다 장애 도메인이 적은 클러스터에 장애 도메인을 추가하는 경우 컨트롤 플레인 머신 세트는 사용 가능한 모든 장애 도메인에서 시스템을 재조정합니다.
12.6.2. 실패한 컨트롤 플레인 시스템 복구
Control Plane Machine Set Operator는 컨트롤 플레인 머신의 복구를 자동화합니다. 컨트롤 플레인 머신이 삭제되면 Operator는 ControlPlaneMachineSet
CR(사용자 정의 리소스)에 지정된 구성으로 교체를 생성합니다.
컨트롤 플레인 머신 세트를 사용하는 클러스터의 경우 머신 상태 점검을 구성할 수 있습니다. 머신 상태 점검에서 비정상 컨트롤 플레인 머신이 삭제되어 교체됩니다.
컨트롤 플레인에 대해 MachineHealthCheck
리소스를 구성하는 경우 maxUnhealthy
값을 1
로 설정합니다.
이 구성을 사용하면 여러 컨트롤 플레인 머신이 비정상으로 표시될 때 머신 상태 점검에서 아무 작업도 수행하지 않습니다. 여러 비정상적인 컨트롤 플레인 시스템은 etcd 클러스터의 성능이 저하되거나 실패한 머신을 교체하는 확장 작업이 진행 중임을 나타낼 수 있습니다.
etcd 클러스터의 성능이 저하된 경우 수동 개입이 필요할 수 있습니다. 스케일링 작업이 진행 중인 경우 머신 상태 점검에서 이 작업을 완료할 수 있어야 합니다.
추가 리소스
12.6.3. 머신 라이프사이클 후크를 통한 쿼럼 보호
Machine API Operator를 사용하는 OpenShift Container Platform 클러스터의 경우 etcd Operator는 머신 삭제 단계에 라이프사이클 후크를 사용하여 쿼럼 보호 메커니즘을 구현합니다.
etcd Operator는 preDrain
라이프사이클 후크를 사용하여 컨트롤 플레인 머신의 Pod를 드레이닝하고 제거하는 시기를 제어할 수 있습니다. etcd 쿼럼을 보호하기 위해 etcd Operator는 클러스터 내의 새 노드로 해당 멤버를 마이그레이션할 때까지 etcd 멤버를 제거하지 않습니다.
이 메커니즘을 사용하면 etcd Operator가 etcd 쿼럼의 멤버를 정확하게 제어할 수 있으며 Machine API Operator가 etcd 클러스터에 대한 특정 운영 지식없이 컨트롤 플레인 머신을 안전하게 생성하고 제거할 수 있습니다.
12.6.3.1. 쿼럼 보호 처리 순서를 사용하여 컨트롤 플레인 삭제
컨트롤 플레인 시스템 세트를 사용하는 클러스터에서 컨트롤 플레인 시스템을 교체하면 클러스터에 일시적으로 4개의 컨트롤 플레인 시스템이 있습니다. 네 번째 컨트롤 플레인 노드가 클러스터에 결합되면 etcd Operator가 교체 노드에서 새 etcd 멤버를 시작합니다. etcd Operator에서 이전 컨트롤 플레인 머신이 삭제로 표시된 것을 관찰하면 이전 노드에서 etcd 멤버를 중지하고 교체 etcd 멤버가 클러스터의 쿼럼에 참여하도록 승격합니다.
컨트롤 플레인 머신 Deleting
단계는 다음 순서로 진행됩니다.
- 삭제를 위해 컨트롤 플레인 시스템이 지정되었습니다.
-
컨트롤 플레인 시스템은
Deleting
단계에 들어갑니다. preDrain
라이프사이클 후크를 충족하기 위해 etcd Operator는 다음 작업을 수행합니다.-
etcd Operator는 네 번째 컨트롤 플레인 머신이 클러스터에 etcd 멤버로 추가될 때까지 기다립니다. 이 새 etcd 멤버의 상태는
Running
이지만 etcd 리더에서 전체 데이터베이스 업데이트가 수신될 때까지ready
되지 않았습니다. - 새 etcd 멤버가 전체 데이터베이스 업데이트를 수신하면 etcd Operator는 새 etcd 멤버를 투표 멤버로 승격하고 클러스터에서 이전 etcd 멤버를 제거합니다.
이 전환이 완료되면 이전 etcd pod 및 해당 데이터를 제거하는 것이 안전하므로
preDrain
라이프사이클 후크가 제거됩니다.-
etcd Operator는 네 번째 컨트롤 플레인 머신이 클러스터에 etcd 멤버로 추가될 때까지 기다립니다. 이 새 etcd 멤버의 상태는
-
컨트롤 플레인 시스템 상태
Drainable
은True
로 설정됩니다. 머신 컨트롤러는 컨트롤 플레인 시스템에서 지원하는 노드를 드레이닝하려고 합니다.
-
드레이닝에 실패하면
Drained
가False
로 설정되고 머신 컨트롤러에서 노드를 다시 드레이닝하려고 합니다. -
드레이닝이 성공하면
Drained
가True
로 설정됩니다.
-
드레이닝에 실패하면
-
컨트롤 플레인 시스템 상태
Drained
가True
로 설정됩니다. -
다른 Operator에서
preTerminate
라이프사이클 후크를 추가하지 않은 경우 컨트롤 플레인 머신 상태 조건Terminable
이True
로 설정됩니다. - 머신 컨트롤러는 인프라 공급자에서 인스턴스를 제거합니다.
-
머신 컨트롤러에서
Node
오브젝트를 삭제합니다.
etcd 쿼럼 보호 preDrain
라이프사이클 후크를 보여주는 YAML 스니펫
apiVersion: machine.openshift.io/v1beta1 kind: Machine metadata: ... spec: lifecycleHooks: preDrain: - name: EtcdQuorumOperator 1 owner: clusteroperator/etcd 2 ...
추가 리소스