6장. 노드 상태 점검으로 노드 수정


Node Health Check Operator를 사용하여 비정상 노드를 식별할 수 있습니다. 그런 다음 Operator는 다른 수정 공급자를 사용하여 비정상 노드를 수정합니다.

Node Health Check Operator는 다음을 포함하여 다른 수정 공급자와 함께 사용할 수 있습니다.

참고

ROSA(Red Hat OpenShift Service on AWS) 클러스터에 사전 설치된 머신 상태 점검이 존재하기 때문에 Node Health Check Operator가 이러한 환경에서 작동할 수 없습니다.

Node Health Check Operator는 "Rolling Stream" Operator입니다. 즉, OpenShift Container Platform 릴리스의 비동기식으로 업데이트를 사용할 수 있습니다. 자세한 내용은 Red Hat Customer Portal의 OpenShift Operator 라이프 사이클 을 참조하십시오.

6.1. Node Health Check Operator 정보

Node Health Check Operator는 클러스터의 노드 상태를 감지합니다. NodeHealthCheck 컨트롤러는 노드 상태를 결정하는 기준 및 임계값 세트를 정의하는 NodeHealthCheck CR(사용자 정의 리소스)을 생성합니다.

Node Health Check Operator가 비정상 노드를 감지하면 수정 공급자를 트리거하는 수정 CR을 생성합니다. 예를 들어 컨트롤러는 SelfNodeRemediation CR을 생성하여 Self Node Remediation Operator를 트리거하여 비정상 노드를 수정합니다.

NodeHealthCheck CR은 수정 공급자인 self-node-remediation을 사용하여 다음 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-workload-availability
    kind: SelfNodeRemediationTemplate
  escalatingRemediations: 
4

    - remediationTemplate:
        apiVersion: self-node-remediation.medik8s.io/v1alpha1
        name: self-node-remediation-resource-deletion-template
        namespace: openshift-workload-availability
        kind: SelfNodeRemediationTemplate
    order: 1
    timeout: 300s
  selector: 
5

    matchExpressions:
      - key: node-role.kubernetes.io/worker
        operator: Exists
  unhealthyConditions: 
6

    - type: Ready
      status: "False"
      duration: 300s 
7

    - type: Ready
      status: Unknown
      duration: 300s 
8
1
수정 공급자가 대상 풀의 노드를 동시에 수정하는 데 필요한 정상 노드(% 또는 숫자)를 지정합니다. 정상 노드의 수가 minHealthy 에 의해 설정된 제한과 같거나 초과하는 경우 수정이 수행됩니다. 기본값은 Cryostat입니다.
2
새 수정을 시작하는 것을 방지하고 지속적인 수정을 유지할 수 있습니다. 기본값은 비어 있습니다. 그러나 수정을 일시 중지하는 원인을 식별하는 문자열 배열을 입력할 수 있습니다. 예를 들면 pause-test-cluster 입니다.
참고

업그레이드 프로세스 중에 클러스터의 노드를 일시적으로 사용할 수 없게 되어 비정상으로 식별될 수 있습니다. 작업자 노드의 경우 Operator에서 클러스터가 업그레이드 중임을 감지하면 이러한 노드가 재부팅되지 않도록 새 비정상 노드 수정을 중지합니다.

3
수정 공급자의 수정 템플릿을 지정합니다. 예를 들어 Self Node Remediation Operator에서 다음을 수행합니다. remediationTemplate 은 Escalating Remediations와 함께 사용할 수 없습니다.
4
순서 및 시간 초과 필드가 포함된 RemediationTemplates 목록을 지정합니다. 정상적인 노드를 얻으려면 이 필드를 사용하여 여러 수정을 정렬하고 구성합니다. 이 전략은 성공하지 못할 수 있는 단일 수정에 따라 대신 정상 노드를 얻을 가능성이 높아집니다. order 필드에는 수정 사항이 호출되는 순서가 결정됩니다(더 낮은 순서 = 이전 호출). timeout 필드는 다음 수정이 호출될 시기를 결정합니다. EscalatingRemediationsremediationTemplate 과 함께 사용할 수 없습니다.
참고

수정 공급자를 에스컬레이션하는 경우 Self Node Remediation Operator 및 Fence Agents Remediation Operator를 다양한 remediationTemplate 구성으로 여러 번 사용할 수 있습니다. 그러나 다른 remediationTemplate 구성으로 동일한 Machine Deletion Remediation 구성을 사용할 수 없습니다.

5
확인할 레이블 또는 표현식과 일치하는 선택기를 지정합니다. 하나의 CR에서 control-plane 및 worker 노드를 모두 선택하지 마십시오.
6
노드가 비정상으로 간주되는지 여부를 결정하는 조건 목록을 지정합니다.
7 8
노드 상태에 대한 시간 초과 기간을 지정합니다. 시간 초과 기간 동안 조건이 충족되면 노드가 수정됩니다. 시간 초과가 길어지면 비정상 노드의 워크로드에 대한 다운타임이 길어질 수 있습니다.

NodeHealthCheck CR은 metal3을 수정 공급자로 사용하여 다음 YAML 파일과 유사합니다.

apiVersion: remediation.medik8s.io/v1alpha1
kind: NodeHealthCheck
metadata:
  name: nhc-worker-metal3
spec:
  minHealthy: 30%
  remediationTemplate:
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: Metal3RemediationTemplate
    name: metal3-remediation
    namespace: openshift-machine-api
  selector:
    matchExpressions:
    - key: node-role.kubernetes.io/worker
      operator: Exists
  unhealthyConditions:
  - duration: 300s
    status: 'False'
    type: Ready
  - duration: 300s
    status: 'Unknown'
    type: Ready
참고

matchExpressions 는 예제일 뿐입니다. 특정 요구에 따라 머신 그룹을 매핑해야 합니다.

Metal3RemediationTemplate 은 metal3을 수정 공급자로 사용하여 다음 YAML 파일과 유사합니다.

apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: Metal3RemediationTemplate
metadata:
  name: metal3-remediation
  namespace: openshift-machine-api
spec:
  template:
    spec:
      strategy:
        retryLimit: 1
        timeout: 5m0s
        type: Reboot
참고

NodeHealthCheck CR을 생성하는 것 외에도 Metal3RemediationTemplate 을 생성해야 합니다.

6.1.1. Node Health Check Operator 워크플로 이해

노드가 비정상으로 식별되면 Node Health Check Operator에서 비정상 노드 수를 확인합니다. 정상 노드 수가 NodeHealthCheck CR의 minHealthy 필드에 지정된 양을 초과하는 경우 컨트롤러는 수정 공급자가 외부 수정 템플릿에 제공하는 세부 사항에서 수정 CR을 생성합니다. 수정 후 kubelet은 노드의 상태를 업데이트합니다.

노드가 정상 상태가 되면 컨트롤러는 외부 수정 템플릿을 삭제합니다.

노드 상태 점검 및 머신 상태 점검이 모두 배포되면 노드 상태 점검에서 머신 상태 점검과 충돌하지 않습니다.

참고

Red Hat OpenShift는 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"}

  • 기본 머신 상태 점검이 수정되거나(예: unhealthyConditionsReady) 추가 머신 상태 점검이 생성되면 노드 상태 점검이 비활성화됩니다.

    로그 메시지 예

    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"}

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동