5.7. Node Health Check Operator를 사용하여 노드 상태 점검 배포

Node Health Check Operator를 사용하여 NodeHealthCheck 컨트롤러를 배포합니다. 컨트롤러는 비정상 노드를 식별하고 Poison Pill Operator를 사용하여 비정상 노드를 수정합니다.

중요

Node Health Check Operator는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

5.7.1. Node Health Check Operator 정보

Node Health Check Operator는 NodeHealthCheck 컨트롤러를 배포한 다음 NodeHealthCheck CR(사용자 정의 리소스)을 생성합니다. Node Health Check Operator는 또한 Poison Pill Operator를 기본 해결 공급자로 설치합니다.

Operator는 컨트롤러를 사용하여 클러스터의 노드 상태를 탐지합니다. 컨트롤러는 노드의 상태를 판별하기 위해 기준 집합과 임계값을 정의하는 NodeHealthCheck CR(사용자 정의 리소스)을 생성합니다.

노드 상태 점검에서 비정상적인 노드를 탐지하면 수정 공급자를 트리거하는 수정 CR을 생성합니다. 예를 들어 노드 상태 점검은 Poison Pill Operator를 트리거하여 비정상 노드를 교정하는 PoisonPillRemediation CR을 생성합니다.

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: poison-pill.medik8s.io/v1alpha1
    name: group-x
    namespace: openshift-operators
    kind: PoisonPillRemediationTemplate
  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
새로운 수정이 시작되지 않도록 방지하고 지속적인 수정을 지속할 수 있습니다. 기본값은 비어 있습니다. 그러나 수정을 일시 중지하는 원인을 식별하는 문자열 배열을 입력할 수 있습니다. 예를 들면 pause-test-cluster 입니다.
참고

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

3
해결 공급자의 수정 템플릿을 지정합니다. 예를 들어 Poison Pill Operator에서 다음을 수행합니다.
4
확인할 레이블 또는 표현식과 일치하는 선택기 를 지정합니다. 기본값은 비어 있으며 모든 노드를 선택합니다.
5
노드가 비정상으로 간주되는지 여부를 결정하는 조건 목록을 지정합니다.
6 7
노드 상태에 대한 시간 초과 기간을 지정합니다. 시간 초과 기간 중 상태가 일치되면 노드가 수정됩니다. 시간 제한이 길어지면 비정상 노드의 워크로드에 대한 다운타임이 길어질 수 있습니다.

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

노드가 비정상으로 식별되면 Operator는 비정상적인 다른 노드 수를 확인합니다. 정상 노드 수가 NodeHealthCheck CR의 minHealthy 필드에 지정된 양을 초과하는 경우 컨트롤러는 해결 공급자가 외부 해결 템플릿에 제공되는 세부 정보에서 수정 CR을 생성합니다. 수정 후 노드의 상태가 적절하게 업데이트됩니다.

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

5.7.1.2. 노드 상태 점검으로 머신 상태 점검과의 충돌을 방지하는 방법

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

참고

OpenShift Container Platform은 machine-api-termination-handler 를 기본 MachineHealthCheck 리소스로 배포합니다.

다음 목록에는 노드 상태 점검 및 머신 상태 점검이 배포될 때 시스템 동작이 요약되어 있습니다.

  • 기본 머신 상태 점검만 있는 경우 노드 상태 점검은 비정상 노드를 계속 식별합니다. 그러나 노드 상태 점검에서는 종료 상태의 비정상 노드를 무시합니다. 기본 머신 상태 점검에서는 종료 상태를 사용하여 비정상 노드를 처리합니다.

    로그 메시지 예

    INFO MHCChecker	ignoring unhealthy Node, it is terminating and will be handled by MHC	{"NodeName": "node-1.example.com"}

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

    로그 메시지 예

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

5.7.2. 웹 콘솔을 사용하여 Node Health Check Operator 설치

OpenShift Container Platform 웹 콘솔을 사용하여 Node Health Check Operator를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. OpenShift Container Platform 웹 콘솔에서 OperatorOperatorHub로 이동합니다.
  2. Node Health Check Operator를 검색한 다음 설치를 클릭합니다.
  3. 기본 설치 모드네임스페이스 를 계속 선택하여 Operator가 openshift-operators 네임스페이스에 설치되도록 합니다.
  4. 설치를 클릭합니다.

검증

설치에 성공했는지 확인하려면 다음을 수행하십시오.

  1. Operator설치된 Operator 페이지로 이동합니다.
  2. Operator가 openshift-operators 네임스페이스에 설치되어 있고 해당 상태가 Succeeded인지 확인합니다.

Operator가 성공적으로 설치되지 않은 경우 다음을 수행하십시오.

  1. Operator설치된 Operator 페이지로 이동하여 Status 열에 오류 또는 실패가 있는지 점검합니다.
  2. 워크로드Pod 페이지로 이동하여 openshift-operators 프로젝트에서 문제를 보고하는 Pod의 로그를 확인합니다.

5.7.3. CLI를 사용하여 Node Health Check Operator 설치

OpenShift CLI(oc)를 사용하여 Node Health Check Operator를 설치할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. Node Health Check Operator의 네임스페이스 CR(사용자 정의 리소스)을 생성합니다.

    1. 네임스페이스 CR을 정의하고 YAML 파일을 저장합니다(예: node-health-check-namespace.yaml ).

      apiVersion: v1
      kind: Namespace
      metadata:
        name: openshift-operators
    2. 네임스페이스 CR을 생성하려면 다음 명령을 실행합니다.

      $ oc create -f node-health-check-namespace.yaml
  2. OperatorGroup CR을 생성합니다.

    1. OperatorGroup CR을 정의하고 YAML 파일을 저장합니다(예: node-health-check-operator-group.yaml ).

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: node-health-check-operator
        namespace: openshift-operators
      spec:
        targetNamespaces:
        - openshift-operators
    2. OperatorGroup CR을 생성하려면 다음 명령을 실행합니다.

      $ oc create -f node-health-check-operator-group.yaml
  3. 서브스크립션 CR을 생성합니다.

    1. 서브스크립션 CR을 정의하고 YAML 파일을 저장합니다(예: node-health-check-subscription.yaml ).

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
          name: node-health-check-operator
          namespace: openshift-operators
      spec:
          channel: alpha
          name: node-healthcheck-operator
          source: redhat-operators
          sourceNamespace: openshift-marketplace
          package: node-health-check-operator
    2. 서브스크립션 CR을 생성하려면 다음 명령을 실행합니다.

      $ oc create -f node-health-check-subscription.yaml

검증

  1. CSV 리소스를 검사하여 설치에 성공했는지 확인합니다.

    $ oc get csv -n openshift-operators

    출력 예

    NAME                               DISPLAY                      VERSION   REPLACES   PHASE
    node-health-check-operator.v0.1.1  Node Health Check Operator   0.1.1                Succeeded

  2. 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