6.7. Node Health Check Operator를 사용하여 노드 상태 점검 배포
Node Health Check Operator를 사용하여 비정상 노드를 식별합니다. Operator는 Self Node Remediation Operator를 사용하여 비정상 노드를 해결합니다.
6.7.1. Node Health Check Operator 정보
Node Health Check Operator는 클러스터의 노드 상태를 감지합니다. NodeHealthCheck
컨트롤러는 노드의 상태를 결정하는 기준 및 임계값 집합을 정의하는 NodeHealthCheck
사용자 정의 리소스(CR)를 생성합니다.
Node Health Check Operator도 자체 노드 해결 Operator를 기본 수정 공급자로 설치합니다.
Node Health Check Operator에서 비정상 노드를 감지하면 수정 공급자를 트리거하는 수정 CR이 생성됩니다. 예를 들어 컨트롤러에서 SelfNodeRemediation
CR을 생성하여 Self Node Remediation Operator를 트리거하여 비정상 노드를 수정합니다.
NodeHealthCheck
CR은 다음 YAML 파일과 유사합니다.
apiVersion: remediation.medik8s.io/v1alpha1 kind: NodeHealthCheck metadata: name: nodehealthcheck-sample spec: minHealthy: 51% 1 pauseRequests: 2 - <pause-test-cluster> remediationTemplate: 3 apiVersion: self-node-remediation.medik8s.io/v1alpha1 name: self-node-remediation-resource-deletion-template namespace: openshift-operators kind: SelfNodeRemediationTemplate selector: 4 matchExpressions: - key: node-role.kubernetes.io/worker operator: Exists unhealthyConditions: 5 - type: Ready status: "False" duration: 300s 6 - type: Ready status: Unknown duration: 300s 7
- 1
- 수정 공급자가 대상 풀의 노드를 동시에 해결하는 데 필요한 정상 노드의 양(% 또는 수)을 지정합니다. 정상 노드 수가
minHealthy
에 의해 설정된 제한과 같거나 초과되면 복구가 수행됩니다. 기본값은 51입니다. - 2
- 향후 수정을 계속 진행할 수 있는 동안 새 수정이 시작되지 않도록 합니다. 기본값은 Empty입니다. 그러나 수정을 일시 중지한 원인을 식별하는 문자열 배열을 입력할 수 있습니다. 예:
pause-test-cluster
.참고업그레이드 프로세스 중에 클러스터의 노드를 일시적으로 사용할 수 없게 되고 비정상으로 식별될 수 있습니다. 작업자 노드의 경우 Operator에서 클러스터가 업그레이드 중임을 감지하면 이러한 노드가 재부팅되지 않도록 새로운 비정상적인 노드를 재구성하는 것을 중지합니다.
- 3
- 수정 공급자의 수정 템플릿을 지정합니다. 예를 들어 Self Node Remediation Operator에서 다음을 수행합니다.
- 4
- 확인할 레이블 또는 표현식과 일치하는
선택기
를 지정합니다. 기본값은 비어 있으며 이는 모든 노드를 선택합니다. - 5
- 노드가 비정상으로 간주되는지 여부를 결정하는 조건 목록을 지정합니다.
- 6 7
- 노드 상태에 대한 시간 제한을 지정합니다. 시간 제한 기간 중 상태가 충족되면 노드가 수정됩니다. 시간 제한이 길어지면 비정상 노드의 워크로드에 대한 다운타임이 길어질 수 있습니다.
6.7.1.1. Node Health Check Operator 워크플로 이해
노드가 비정상으로 확인되면 Node Health Check Operator는 비정상인 다른 노드 수를 확인합니다. 정상 노드 수가 NodeHealthCheck
CR의 minHealthy
필드에 지정된 양을 초과하는 경우 컨트롤러는 수정 공급자가 외부 수정 템플릿에 제공된 세부 사항에서 수정 CR을 생성합니다. 수정을 통해 kubelet은 노드의 상태를 업데이트합니다.
노드가 정상 상태가 되면 컨트롤러에서 외부 수정 템플릿을 삭제합니다.
6.7.1.2. 노드 상태 점검에서 머신 상태 점검의 충돌을 방지하는 방법
노드 상태 점검 및 머신 상태 점검이 둘 다 배포되면 노드 상태 점검에서 머신 상태 점검과 충돌하지 않습니다.
OpenShift Container Platform은 machine-api-termination-handler
를 기본 MachineHealthCheck
리소스로 배포합니다.
다음 목록은 노드 상태 점검 및 머신 상태 점검을 배포할 때 시스템 동작을 요약합니다.
기본 머신 상태 점검만 있는 경우 노드 상태 점검에서 비정상 노드를 계속 확인합니다. 그러나 노드 상태 점검에서는 Terminating 상태의 비정상적인 노드를 무시합니다. 기본 머신 상태 점검에서는 Terminating 상태를 사용하여 비정상 노드를 처리합니다.
로그 메시지 예
INFO MHCChecker ignoring unhealthy Node, it is terminating and will be handled by MHC {"NodeName": "node-1.example.com"}
기본 머신 상태 점검이 수정된 경우 (예:
unhealthyConditions
isReady
) 또는 추가 머신 상태 점검이 생성되면 노드 상태 점검이 비활성화됩니다.로그 메시지 예
INFO controllers.NodeHealthCheck disabling NHC in order to avoid conflict with custom MHCs configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}
기본 머신 상태 점검만 있는 경우 노드 상태 점검을 다시 활성화합니다.
로그 메시지 예
INFO controllers.NodeHealthCheck re-enabling NHC, no conflicting MHC configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}
6.7.2. 웹 콘솔을 사용하여 Node Health Check Operator 설치
OpenShift Container Platform 웹 콘솔을 사용하여 Node Health Check Operator를 설치할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
-
OpenShift Container Platform 웹 콘솔에서 Operator
OperatorHub로 이동합니다. - Node Health Check Operator를 검색한 다음 설치를 클릭합니다.
-
기본 설치 모드 및 네임스페이스 를 계속 선택하여 Operator가
openshift-operators
네임스페이스에 설치되도록 합니다. - 설치를 클릭합니다.
검증
설치에 성공했는지 확인하려면 다음을 수행하십시오.
-
Operator
설치된 Operator 페이지로 이동합니다. -
Operator가
openshift-operators
네임스페이스에 설치되어 있고 상태가Succeeded
인지 확인합니다.
Operator가 성공적으로 설치되지 않은 경우 다음을 수행하십시오.
-
Operator
설치된 Operator 페이지로 이동하여 Status
열에 오류 또는 실패가 있는지 점검합니다. -
워크로드
Pod 페이지로 이동하여 openshift-operators
프로젝트에서 문제를 보고하는 Pod의 로그를 확인합니다.
6.7.3. CLI를 사용하여 Node Health Check Operator 설치
OpenShift CLI(oc
)를 사용하여 Node Health Check Operator를 설치할 수 있습니다.
자체 네임스페이스에 Operator를 설치하려면 절차의 단계를 따르십시오.
openshift-operators
네임스페이스에 Operator를 설치하려면 새 네임스페이스 CR(사용자 정의 리소스) 및 OperatorGroup
CR을 생성하는 단계가 필요하지 않기 때문에 절차의 3단계로 건너뛰십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
Node Health Check Operator의
네임스페이스
CR(사용자 정의 리소스)을 생성합니다.네임스페이스
CR을 정의하고 YAML 파일을 저장합니다(예:node-health-check-namespace.yaml
):apiVersion: v1 kind: Namespace metadata: name: node-health-check
네임스페이스
CR을 생성하려면 다음 명령을 실행합니다.$ oc create -f node-health-check-namespace.yaml
OperatorGroup
CR을 생성합니다.OperatorGroup
CR을 정의하고 YAML 파일을 저장합니다(예:node-health-check-operator-group.yaml
).apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: node-health-check-operator namespace: node-health-check
OperatorGroup
CR을 생성하려면 다음 명령을 실행합니다.$ oc create -f node-health-check-operator-group.yaml
서브스크립션
CR을 생성합니다.Subscription
CR을 정의하고 YAML 파일을 저장합니다(예:node-health-check-subscription.yaml
):apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: node-health-check-operator namespace: node-health-check 1 spec: channel: stable 2 installPlanApproval: Manual 3 name: node-healthcheck-operator source: redhat-operators sourceNamespace: openshift-marketplace package: node-healthcheck-operator
- 1
- Node Health Check Operator를 설치할
네임스페이스
를 지정합니다.openshift-operators
네임스페이스에 Node Health Check Operator를 설치하려면서브스크립션
CR에서openshift-operators
를 지정합니다. - 2
- 서브스크립션의 채널 이름을 지정합니다. Node Health Check Operator의 최신 버전으로 업그레이드하려면 서브스크립션의 채널 이름을
candidate
에서stable
로 수동으로 변경해야 합니다. - 3
- 지정된 버전이 카탈로그의 이후 버전으로 대체되는 경우 승인 전략을 Manual로 설정합니다. 이 계획에서는 이후 버전으로 자동 업그레이드할 수 없으므로 시작 CSV에서 설치를 완료하려면 수동 승인이 필요합니다.
서브스크립션
CR을 생성하려면 다음 명령을 실행합니다.$ oc create -f node-health-check-subscription.yaml
검증
CSV 리소스를 검사하여 설치에 성공했는지 확인합니다.
$ oc get csv -n openshift-operators
출력 예
NAME DISPLAY VERSION REPLACES PHASE node-healthcheck-operator.v0.2.0. Node Health Check Operator 0.2.0 Succeeded
Node Health Check Operator가 실행 중인지 확인합니다.
$ oc get deploy -n openshift-operators
출력 예
NAME READY UP-TO-DATE AVAILABLE AGE node-health-check-operator-controller-manager 1/1 1 1 10d
6.7.4. Node Health Check Operator에 대한 데이터 수집
Node Health Check Operator에 대한 디버깅 정보를 수집하려면 must-gather
툴을 사용하십시오. Node Health Check Operator의 must-gather
이미지에 대한 자세한 내용은 특정 기능에 대한 데이터 수집을 참조하십시오.
6.7.5. 추가 리소스
- Operator의 업데이트 채널 변경
- Node Health Check Operator는 제한된 네트워크 환경에서 지원됩니다. 자세한 내용은 제한된 네트워크에서 Operator Lifecycle Manager 사용을 참조하십시오.