13.5. 컨트롤 플레인 복구 및 복구

컨트롤 플레인 머신 세트를 사용하여 OpenShift Container Platform 클러스터의 컨트롤 플레인의 복원력을 개선할 수 있습니다.

13.5.1. 장애 도메인을 통한 고가용성 및 내결함성

가능한 경우 컨트롤 플레인 머신 세트는 컨트롤 플레인 시스템을 여러 장애 도메인에 분배합니다. 이 구성은 컨트롤 플레인 내에서 고가용성 및 내결함성을 제공합니다. 이 전략은 인프라 공급자 내에서 문제가 발생할 때 컨트롤 플레인을 보호하는 데 도움이 될 수 있습니다.

13.5.1.1. 장애 도메인 플랫폼 지원 및 구성

장애 도메인의 컨트롤 플레인 머신 세트는 클라우드 공급자의 기존 개념과 유사합니다. 모든 플랫폼이 실패 도메인 사용을 지원하는 것은 아닙니다.

표 13.2. 실패 도메인 지원 매트릭스

클라우드 공급자실패 도메인 지원공급자 nomenclature

AWS(Amazon Web Services)

X

가용 영역(AZ)

Microsoft Azure

X

Azure 가용성 영역

VMware vSphere

 

해당 없음

컨트롤 플레인 머신 세트 CR(사용자 정의 리소스)의 실패 도메인 구성은 플랫폼에 따라 다릅니다. CR의 실패 도메인 매개변수에 대한 자세한 내용은 공급자의 샘플 실패 도메인 구성을 참조하십시오.

13.5.1.2. 컨트롤 플레인 시스템 밸런싱

컨트롤 플레인 머신 세트는 CR(사용자 정의 리소스)에 지정된 실패 도메인에서 컨트롤 플레인 시스템을 조정합니다.

가능한 경우 컨트롤 플레인 머신 세트는 각 장애 도메인을 동일하게 사용하여 적절한 내결함성을 보장합니다. 컨트롤 플레인 시스템보다 실패 도메인이 적은 경우 이름별로 알파벳순으로 재사용할 수 있도록 실패 도메인이 선택됩니다. 장애 도메인이 지정되지 않은 클러스터의 경우 모든 컨트롤 플레인 시스템이 단일 장애 도메인 내에 배치됩니다.

장애 도메인 구성을 변경하면 컨트롤 플레인 시스템이 컨트롤 플레인 시스템을 재조정합니다. 예를 들어 컨트롤 플레인 시스템보다 장애 도메인이 적은 클러스터에 실패 도메인을 추가하는 경우 컨트롤 플레인 머신 세트는 사용 가능한 모든 장애 도메인에서 머신을 재조정합니다.

13.5.2. 실패한 컨트롤 플레인 시스템 복구

컨트롤 플레인 머신 세트 Operator는 컨트롤 플레인 시스템의 복구를 자동화합니다. 컨트롤 플레인 머신이 삭제되면 Operator는 ControlPlaneMachineSet CR(사용자 정의 리소스)에 지정된 구성으로 교체를 생성합니다.

컨트롤 플레인 머신 세트를 사용하는 클러스터의 경우 머신 상태 점검을 구성할 수 있습니다. 머신 상태 점검은 비정상적인 컨트롤 플레인 머신을 삭제하여 교체됩니다.

중요

컨트롤 플레인에 대해 MachineHealthCheck 리소스를 구성하는 경우 maxUnhealthy 값을 1 로 설정합니다.

이 구성을 사용하면 여러 컨트롤 플레인 머신이 비정상으로 표시되면 머신 상태 점검이 수행되지 않습니다. 비정상적인 여러 컨트롤 플레인 시스템은 etcd 클러스터의 성능이 저하되었거나 실패한 머신을 교체하는 확장 작업이 진행 중임을 나타낼 수 있습니다.

etcd 클러스터가 성능이 저하되면 수동 개입이 필요할 수 있습니다. 스케일링 작업이 진행 중인 경우 머신 상태 점검을 통해 완료할 수 있어야 합니다.

추가 리소스

13.5.3. 머신 라이프사이클 후크를 통한 쿼럼 보호

Machine API Operator를 사용하는 OpenShift Container Platform 클러스터의 경우 etcd Operator는 머신 삭제 단계에 라이프사이클 후크를 사용하여 쿼럼 보호 메커니즘을 구현합니다.

preDrain 라이프사이클 후크를 사용하면 etcd Operator에서 컨트롤 플레인 시스템의 pod가 드레이닝 및 제거되는 시기를 제어할 수 있습니다. etcd 쿼럼을 보호하기 위해 etcd Operator는 해당 멤버를 클러스터 내의 새 노드로 마이그레이션할 때까지 etcd 멤버를 제거할 수 있습니다.

이 메커니즘을 통해 etcd Operator는 etcd 쿼럼의 멤버를 정확하게 제어할 수 있으며 Machine API Operator는 etcd 클러스터에 대한 특정 운영 지식 없이도 컨트롤 플레인 머신을 안전하게 생성 및 제거할 수 있습니다.

13.5.3.1. 쿼럼 보호 처리 순서를 사용한 컨트롤 플레인 삭제

컨트롤 플레인 머신 세트를 사용하는 클러스터에서 컨트롤 플레인 머신이 교체되면 클러스터에 4개의 컨트롤 플레인 시스템이 일시적으로 부여됩니다. 네 번째 컨트롤 플레인 노드가 클러스터에 참여하면 etcd Operator는 교체 노드에서 새 etcd 멤버를 시작합니다. etcd Operator는 이전 컨트롤 플레인 머신이 삭제로 표시된 것을 관찰하면 이전 노드에서 etcd 멤버를 중지하고 대체 etcd 멤버를 승격하여 클러스터의 쿼럼에 참여하도록 합니다.

컨트롤 플레인 머신 삭제 단계는 다음 순서로 진행됩니다.

  1. 컨트롤 플레인 시스템이 삭제될 예정입니다.
  2. 컨트롤 플레인 시스템이 삭제 단계에 들어갑니다.
  3. preDrain 라이프사이클 후크를 충족하기 위해 etcd Operator는 다음 작업을 수행합니다.

    1. etcd Operator는 중단된 컨트롤 플레인 시스템이 etcd 멤버로 클러스터에 추가될 때까지 기다립니다. 이 새 etcd 멤버는 Running 이지만 etcd 리더에서 전체 데이터베이스 업데이트를 수신 할 때까지 준비되지 않았습니다.
    2. 새 etcd 멤버가 전체 데이터베이스 업데이트를 수신하면 etcd Operator는 새 etcd 멤버를 투표 멤버로 승격하고 클러스터에서 이전 etcd 멤버를 제거합니다.

    이 전환이 완료되면 이전 etcd pod 및 해당 데이터를 제거할 수 있으므로 preDrain 라이프사이클 후크가 제거됩니다.

  4. 컨트롤 플레인 머신 상태 조건 DrainableTrue 로 설정됩니다.
  5. 머신 컨트롤러는 컨트롤 플레인 머신에서 지원하는 노드를 드레이닝하려고 합니다.

    • 드레인링에 실패하면 DrainedFalse 로 설정되고 머신 컨트롤러에서 노드를 다시 드레이닝하려고 합니다.
    • 드레인링에 성공하면 DrainedTrue 로 설정됩니다.
  6. 컨트롤 플레인 시스템 상태 조건이 True 로 설정됩니다.
  7. 다른 Operator에 preTerminate 라이프사이클 후크를 추가하지 않은 경우 컨트롤 플레인 머신 상태 조건 TerminableTrue 로 설정됩니다.
  8. 머신 컨트롤러는 인프라 공급자에서 인스턴스를 제거합니다.
  9. 머신 컨트롤러는 Node 오브젝트를 삭제합니다.

etcd 쿼럼 보호 preDrain 라이프사이클 후크를 보여주는 YAML 스니펫

apiVersion: machine.openshift.io/v1beta1
kind: Machine
metadata:
  ...
spec:
  lifecycleHooks:
    preDrain:
    - name: EtcdQuorumOperator 1
      owner: clusteroperator/etcd 2
  ...

1
preDrain 라이프사이클 후크의 이름입니다.
2
preDrain 라이프사이클 후크를 관리하는 hook-i>-< 컨트롤러입니다.