13.4. 베어 메탈의 전원 기반 업데이트 적용 정보
베어 메탈 클러스터에서 노드의 업데이트 적용은 클러스터의 전반적인 상태를 보장하는 데 중요합니다. 물리적으로 클러스터에 업데이트를 적용하는 것은 어려움이 있을 수 있으며 머신을 안전하거나 운영 체제로 전환하기 위한 지연으로 인해 클러스터가 성능 저하된 상태로 유지되는 시간이 길어지고 이후의 장애 발생으로 인해 클러스터가 클러스터를 오프라인 상태가 될 수 있습니다. 전원 기반 문제 해결은 이러한 문제에 대응하는 데 도움이 됩니다.
전원 기반 업데이트 적용에서는 노드를 재프로비저닝하는 대신 전원 컨트롤러를 사용하여 작동하지 않는 노드의 전원을 끕니다. 이러한 유형의 수정을 전원 펜싱이라고 합니다.
OpenShift Container Platform은 MachineHealthCheck
컨트롤러를 사용하여 문제가 있는 베어 메탈 노드를 감지합니다. 전원 기반 업데이트 적용은 신속하게 수행되며 클러스터에서 문제가 있는 노드를 제거하는 대신 재부팅합니다.
전원 기반 업데이트 적용은 다음과 같은 기능을 제공합니다.
- 컨트롤 플레인 노드를 복구 가능
- 하이퍼 컨버지드 환경에서 데이터 손실 위험 감소
- 물리적 머신 복구와 관련된 다운타임 감소
13.4.1. 베어 메탈에서 MachineHealthCheck
베어 메탈 클러스터에서 머신 삭제를 사용하면 베어 메탈 호스트의 재프로비저닝이 트리거됩니다. 일반적으로 베어 메탈 재프로비저닝은 시간이 오래 걸리는 프로세스로, 이 과정에서 클러스터에 컴퓨팅 리소스가 누락되고 애플리케이션이 중단될 수 있습니다. 기본 수정 프로세스를 머신 삭제에서 호스트 전원 사이클로 변경하려면 machine.openshift.io/remediation-strategy: external-baremetal
주석을 MachineHealthCheck
리소스에 추가합니다.
주석을 설정하면 BMC 인증 정보를 사용하여 비정상 머신이 전원을 껐다가 켭니다.
13.4.2. 수정 프로세스 이해
수정 프로세스는 다음과 같이 작동합니다.
- MHC(MachineHealthCheck) 컨트롤러는 노드가 비정상임을 감지합니다.
- MHC는 비정상 노드의 전원을 끄도록 요청하는 베어 메탈 머신 컨트롤러에 통지합니다.
- 전원이 꺼지면 노드가 삭제되어 클러스터가 다른 노드에서 영향을 받는 워크로드를 다시 예약할 수 있습니다.
- 베어 메탈 머신 컨트롤러에서 노드의 전원을 켜도록 요청합니다.
- 노드가 가동되면 노드가 클러스터와 함께 다시 등록되어 새 노드가 생성됩니다.
- 노드가 다시 생성되면 베어 메탈 머신 컨트롤러는 삭제하기 전에 비정상 노드에 존재하는 주석 및 레이블을 복원합니다.
전원 작업이 완료되지 않은 경우 베어 메탈 머신 컨트롤러는 컨트롤 플레인 노드 또는 외부 프로비저닝 노드가 아닌 한 비정상 노드의 재프로비저닝을 트리거합니다.
13.4.3. 베어 메탈의 MachineHealthCheck 리소스 생성
사전 요구 사항
- OpenShift Container Platform은 설치 관리자 프로비저닝 인프라(IPI)를 사용하여 설치됩니다.
- BMC(Baseboard Management Controller) 인증 정보 (또는 각 노드에 대한 BMC 액세스)에 액세스합니다.
- 비정상 노드의 BMC 인터페이스에 대한 네트워크 액세스가 있어야 합니다.
절차
-
머신 상태 점검 정의가 포함된
healthcheck.yaml
파일을 생성합니다. -
다음 명령을 사용하여
healthcheck.yaml
파일을 클러스터에 적용합니다.
$ oc apply -f healthcheck.yaml
베어 메탈의 MachineHealthCheck
리소스 샘플
apiVersion: machine.openshift.io/v1beta1 kind: MachineHealthCheck metadata: name: example 1 namespace: openshift-machine-api annotations: machine.openshift.io/remediation-strategy: external-baremetal 2 spec: selector: matchLabels: machine.openshift.io/cluster-api-machine-role: <role> 3 machine.openshift.io/cluster-api-machine-type: <role> 4 machine.openshift.io/cluster-api-machineset: <cluster_name>-<label>-<zone> 5 unhealthyConditions: - type: "Ready" timeout: "300s" 6 status: "False" - type: "Ready" timeout: "300s" 7 status: "Unknown" maxUnhealthy: "40%" 8 nodeStartupTimeout: "10m" 9
- 1
- 배포할 머신 상태 점검의 이름을 지정합니다.
- 2
- 베어 메탈 클러스터의 경우 전원 사이클 수정을 활성화하려면
annotations
섹션에machine.openshift.io/remediation-strategy: external-baremetal
주석을 포함해야 합니다. 이 업데이트 적용 전략으로 비정상 호스트가 클러스터에서 제거되지 않고 재부팅됩니다. - 3 4
- 확인할 머신 풀의 레이블을 지정합니다.
- 5
- 추적할 머신 세트를
<cluster_name>-<label>-<zone>
형식으로 지정합니다. 예를 들어prod-node-us-east-1a
입니다. - 6 7
- 노드 상태에 대한 시간 제한을 지정합니다. 시간 제한 기간 중 상태가 일치되면 머신이 수정됩니다. 시간 제한이 길어지면 비정상 머신의 워크로드에 대한 다운타임이 길어질 수 있습니다.
- 8
- 대상 풀에서 동시에 복구할 수 있는 시스템 수를 지정합니다. 이는 백분율 또는 정수로 설정할 수 있습니다. 비정상 머신의 수가
maxUnhealthy
에서의 설정 제한을 초과하면 복구가 수행되지 않습니다. - 9
- 머신 상태가 비정상으로 확인되기 전에 노드가 클러스터에 참여할 때까지 기다려야 하는 시간 초과 기간을 지정합니다.
matchLabels
는 예제일 뿐입니다. 특정 요구에 따라 머신 그룹을 매핑해야 합니다.
전원 기반 수정 문제를 해결하려면 다음을 확인합니다.
- BMC에 액세스할 수 있습니다.
- BMC는 수정 작업을 실행하는 컨트롤 플레인 노드에 연결됩니다.