6.6. Self Node Remediation Operator로 노드 수정


Self Node Remediation Operator를 사용하여 비정상적인 노드를 자동으로 재부팅할 수 있습니다. 이 수정 전략은 상태 저장 애플리케이션 및 ReadWriteOnce(RWO) 볼륨의 다운타임을 최소화하고 일시적인 오류가 발생할 경우 컴퓨팅 용량을 복원합니다.

6.6.1. Self Node Remediation Operator 정보

Self Node Remediation Operator는 클러스터 노드에서 실행되며 비정상으로 식별되는 노드를 재부팅합니다. Operator는 MachineHealthCheck 또는 NodeHealthCheck 컨트롤러를 사용하여 클러스터에서 노드의 상태를 감지합니다. 노드가 비정상으로 식별되면 MachineHealthCheck 또는 NodeHealthCheck 리소스는 SelfNodeRemediation CR(사용자 정의 리소스)을 생성하여 Self Node Remediation Operator를 트리거합니다.

SelfNodeRemediation CR은 다음 YAML 파일과 유사합니다.

apiVersion: self-node-remediation.medik8s.io/v1alpha1
kind: SelfNodeRemediation
metadata:
  name: selfnoderemediation-sample
  namespace: openshift-operators
spec:
status:
  lastError: <last_error_message> 1
1
수정 중에 발생한 마지막 오류를 표시합니다. 수정이 성공하거나 오류가 발생하지 않으면 필드가 비어 있습니다.

Self Node Remediation Operator는 상태 저장 애플리케이션의 다운타임을 최소화하고 일시적인 오류가 발생하면 컴퓨팅 용량을 복원합니다. IPMI 또는 API와 같은 관리 인터페이스와 관계없이 이 Operator를 사용하여 노드를 프로비저닝할 수 있으며, 설치 관리자 프로비저닝 인프라 또는 사용자 프로비저닝 인프라와 같은 클러스터 설치 유형에 관계없이 이 Operator를 사용할 수 있습니다.

6.6.1.1. 셀프 노드 해결 Operator 구성 이해

Self Node Remediation Operator는 self-node-remediation-config 라는 이름으로 SelfNodeRemediationConfig CR을 생성합니다. CR은 Self Node Remediation Operator의 네임스페이스에 생성됩니다.

SelfNodeRemediationConfig CR의 변경 사항은 Self Node Remediation 데몬 세트를 다시 만듭니다.

SelfNodeRemediationConfig CR은 다음 YAML 파일과 유사합니다.

apiVersion: self-node-remediation.medik8s.io/v1alpha1
kind: SelfNodeRemediationConfig
metadata:
  name: self-node-remediation-config
  namespace: openshift-operators
spec:
  safeTimeToAssumeNodeRebootedSeconds: 180 1
  watchdogFilePath: /dev/watchdog 2
  isSoftwareRebootEnabled: true 3
  apiServerTimeout: 15s 4
  apiCheckInterval: 5s 5
  maxApiErrorThreshold: 3 6
  peerApiServerTimeout: 5s 7
  peerDialTimeout: 5s 8
  peerRequestTimeout: 5s 9
  peerUpdateInterval: 15m 10
1
유휴 상태의 피어의 시간 초과 기간을 지정합니다. 이 기간 후에는 Operator에서 비정상 노드가 재부팅되었다고 가정할 수 있습니다. Operator는 이 값의 하한값을 자동으로 계산합니다. 그러나 다른 노드에 다른 워치독 시간 초과가 있는 경우 이 값을 더 높은 값으로 변경해야 합니다.
2
노드에서 워치독 장치의 파일 경로를 지정합니다. 워치독 장치에 잘못된 경로를 입력하면 Self Node Remediation Operator에서 softdog 장치 경로를 자동으로 탐지합니다.

워치독 장치를 사용할 수 없는 경우 SelfNodeRemediationConfig CR은 소프트웨어 재부팅을 사용합니다.

3
비정상 노드의 소프트웨어 재부팅을 활성화하려면 지정합니다. 기본적으로 값은 SoftwareRebootEnabledtrue 로 설정됩니다. 소프트웨어 재부팅을 비활성화하려면 매개변수 값을 false 로 설정합니다.
4
각 API 서버와의 연결을 확인하려면 시간 초과 기간을 지정합니다. 이 기간이 경과하면 Operator에서 수정을 시작합니다. 시간제한 기간은 10밀리초보다 크거나 같아야 합니다.
5
각 API 서버와의 연결을 확인할 빈도를 지정합니다. 제한 시간은 1초 이상이어야 합니다.
6
임계값을 지정합니다. 이 임계값에 도달한 후 노드는 피어에 연결을 시작합니다. 임계값은 1초보다 크거나 같아야 합니다.
7
API 서버를 연결하는 피어의 시간 제한 기간을 지정합니다. 시간제한 기간은 10밀리초보다 크거나 같아야 합니다.
8
피어와의 연결을 설정하는 시간 제한 기간을 지정합니다. 시간제한 기간은 10밀리초보다 크거나 같아야 합니다.
9
피어에서 응답을 가져올 시간 제한 기간을 지정합니다. 시간제한 기간은 10밀리초보다 크거나 같아야 합니다.
10
IP 주소와 같은 피어 정보를 업데이트할 빈도를 지정합니다. 제한 시간은 10초보다 크거나 같아야 합니다.
참고

Self Node Remediation Operator에서 생성한 self-node-remediation-config CR을 편집할 수 있습니다. 그러나 Self Node Remediation Operator에 대한 새 CR을 생성하려고 하면 로그에 다음 메시지가 표시됩니다.

controllers.SelfNodeRemediationConfig
ignoring selfnoderemediationconfig CRs that are not named 'self-node-remediation-config'
or not in the namespace of the operator:
'openshift-operators' {"selfnoderemediationconfig":
"openshift-operators/selfnoderemediationconfig-copy"}

6.6.1.2. 셀프 노드 해결 템플릿 구성 이해

Self Node Remediation Operator는 selfNodeRemediationTemplate CRD(Custom Resource Definition)도 생성합니다. 이 CRD는 노드에 대한 수정 전략을 정의합니다. 다음 수정 전략을 사용할 수 있습니다.

ResourceDeletion
이 수정 전략에서는 노드 오브젝트가 아닌 노드의 Pod 및 관련 볼륨 연결을 제거합니다. 이 전략은 워크로드를 더 빨리 복구하는 데 도움이 됩니다. ResourceDeletion 은 기본 수정 전략입니다.
NodeDeletion
이 수정 전략은 노드 오브젝트를 제거합니다.

Self Node Remediation Operator는 각 전략에 대해 다음과 같은 SelfNodeRemediationTemplate CR을 생성합니다.

  • ResourceDeletion 수정 전략에서 사용하는 self-node-remediation-resource-deletion-template
  • NodeDeletion 수정 전략에서 사용하는 self-node-remediation-node-deletion-template

SelfNodeRemediationTemplate CR은 다음 YAML 파일과 유사합니다.

apiVersion: self-node-remediation.medik8s.io/v1alpha1
kind: SelfNodeRemediationTemplate
metadata:
  creationTimestamp: "2022-03-02T08:02:40Z"
  name: self-node-remediation-<remediation_object>-deletion-template 1
  namespace: openshift-operators
spec:
  template:
    spec:
      remediationStrategy: <remediation_strategy>  2
1
수정 전략을 기반으로 수정 템플릿 유형을 지정합니다. < remediation_object >를 리소스 또는 노드 (예: self-node-remediation-resource-deletion-template )로 바꿉니다.
2
수정 전략을 지정합니다. 수정 전략은 ResourceDeletion 또는 NodeDeletion 일 수 있습니다.

6.6.1.3. 워치독 장치 정보

워치독 장치는 다음 중 하나일 수 있습니다.

  • 독립적으로 전원이 켜진 하드웨어 장치
  • 전원을 제어하는 호스트와 공유하는 하드웨어 장치
  • 소프트웨어에 구현된 가상 장치 또는 softdog

하드웨어 워치독 및 소프트도그 장치에는 각각 전자 또는 소프트웨어 타이머가 있습니다. 이러한 워치독 장치는 오류 조건이 감지될 때 머신이 안전 상태가 되도록 하는 데 사용됩니다. 클러스터가 정상 상태임을 증명하기 위해 워치독 타이머를 반복적으로 재설정해야 합니다. 교착 상태, CPU 부족 및 네트워크 또는 디스크 액세스 손실과 같은 오류 조건으로 인해 이 타이머가 느려질 수 있습니다. 타이머가 만료되면 워치독 장치는 오류가 발생하고 장치가 노드의 강제 재설정을 트리거한다고 가정합니다.

하드웨어 워치독 장치는 softdog 장치보다 더 안정적입니다.

6.6.1.3.1. 워치독 장치를 사용하여 셀프 노드 해결 Operator 동작 이해

Self Node Remediation Operator는 존재하는 워치독 장치를 기반으로 수정 전략을 결정합니다.

하드웨어 워치독 장치가 구성되어 사용 가능한 경우 Operator는 이를 해결하기 위해 사용합니다. 하드웨어 워치독 장치가 구성되지 않은 경우 Operator는 업데이트를 위해 소프트dog 장치를 활성화하고 사용합니다.

시스템 또는 구성으로 워치독 장치가 모두 지원되는 경우 Operator는 소프트웨어 재부팅을 사용하여 노드를 해결합니다.

추가 리소스

워치독 구성

6.6.2. 웹 콘솔을 사용하여 자체 노드 해결 Operator 설치

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

사전 요구 사항

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

절차

  1. OpenShift Container Platform 웹 콘솔에서 Operator OperatorHub로 이동합니다.
  2. 사용 가능한 Operator 목록에서 Self Node Remediation Operator를 검색한 다음 설치를 클릭합니다.
  3. 기본 설치 모드네임스페이스 를 계속 선택하여 Operator가 openshift-operators 네임스페이스에 설치되었는지 확인합니다.
  4. 설치를 클릭합니다.

검증

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

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

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

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

6.6.3. CLI를 사용하여 자체 노드 해결 Operator 설치

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

자체 네임스페이스 또는 openshift-operators 네임스페이스에 Self Node Remediation Operator를 설치할 수 있습니다.

자체 네임스페이스에 Operator를 설치하려면 절차의 단계를 따르십시오.

openshift-operators 네임스페이스에 Operator를 설치하려면 새 네임스페이스 CR(사용자 정의 리소스) 및 OperatorGroup CR을 생성하는 단계가 필요하지 않기 때문에 절차의 3단계로 건너뛰십시오.

사전 요구 사항

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

절차

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

    1. Namespace CR을 정의하고 YAML 파일을 저장합니다(예: self-node-remediation-namespace.yaml ).

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

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

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

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

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

    1. Subscription CR을 정의하고 YAML 파일을 저장합니다(예: self-node-remediation-subscription.yaml ).

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
          name: self-node-remediation-operator
          namespace: self-node-remediation 1
      spec:
          channel: stable
          installPlanApproval: Manual 2
          name: self-node-remediation-operator
          source: redhat-operators
          sourceNamespace: openshift-marketplace
          package: self-node-remediation
      1
      Self Node Remediation Operator를 설치할 네임스페이스 를 지정합니다. openshift-operators 네임스페이스에 Self Node Remediation Operator를 설치하려면 Subscription CR에서 openshift-operators 를 지정합니다.
      2
      지정된 버전이 카탈로그의 이후 버전으로 대체되는 경우 승인 전략을 Manual로 설정합니다. 이 계획에서는 이후 버전으로 자동 업그레이드할 수 없으므로 시작 CSV에서 설치를 완료하려면 수동 승인이 필요합니다.
    2. 서브스크립션 CR을 생성하려면 다음 명령을 실행합니다.

      $ oc create -f self-node-remediation-subscription.yaml

검증

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

    $ oc get csv -n self-node-remediation

    출력 예

    NAME                               DISPLAY                          VERSION   REPLACES   PHASE
    self-node-remediation.v.0.4.0      Self Node Remediation Operator   v.0.4.0              Succeeded

  2. Self Node Remediation Operator가 실행 중인지 확인합니다.

    $ oc get deploy -n self-node-remediation

    출력 예

    NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
    self-node-remediation-controller-manager    1/1     1            1           28h

  3. Self Node Remediation Operator가 SelfNodeRemediationConfig CR을 생성했는지 확인합니다.

    $ oc get selfnoderemediationconfig -n self-node-remediation

    출력 예

    NAME                           AGE
    self-node-remediation-config   28h

  4. 각 작업자 노드에서 각 노드 수정 Pod가 예약되고 실행되고 있는지 확인합니다.

    $ oc get daemonset -n self-node-remediation

    출력 예

    NAME                      DESIRED  CURRENT  READY  UP-TO-DATE  AVAILABLE  NODE SELECTOR  AGE
    self-node-remediation-ds  3        3        3      3           3          <none>         28h

    참고

    이 명령은 컨트롤 플레인 노드에 지원되지 않습니다.

6.6.4. Self Node Remediation Operator를 사용하도록 머신 상태 점검 구성

다음 절차에 따라 self Node Remediation Operator를 수정 공급자로 사용하도록 머신 상태 점검을 구성합니다.

사전 요구 사항

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

절차

  1. SelfNodeRemediationTemplate CR을 생성합니다.

    1. SelfNodeRemediationTemplate CR을 정의합니다.

      apiVersion: self-node-remediation.medik8s.io/v1alpha1
      kind: SelfNodeRemediationTemplate
      metadata:
        namespace: openshift-machine-api
        name: selfnoderemediationtemplate-sample
      spec:
        template:
          spec:
            remediationStrategy: ResourceDeletion 1
      1
      수정 전략을 지정합니다. 기본 전략은 ResourceDeletion 입니다.
    2. SelfNodeRemediationTemplate CR을 생성하려면 다음 명령을 실행합니다.

      $ oc create -f <snr-name>.yaml
  2. SelfNodeRemediationTemplate CR을 가리키도록 MachineHealthCheck CR을 생성하거나 업데이트합니다.

    1. MachineHealthCheck CR을 정의하거나 업데이트합니다.

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineHealthCheck
      metadata:
        name: machine-health-check
        namespace: openshift-machine-api
      spec:
        selector:
          matchLabels:
            machine.openshift.io/cluster-api-machine-role: "worker"
            machine.openshift.io/cluster-api-machine-type: "worker"
        unhealthyConditions:
        - type:    "Ready"
          timeout: "300s"
          status: "False"
        - type:    "Ready"
          timeout: "300s"
          status: "Unknown"
        maxUnhealthy: "40%"
        nodeStartupTimeout: "10m"
        remediationTemplate: 1
          kind: SelfNodeRemediationTemplate
          apiVersion: self-node-remediation.medik8s.io/v1alpha1
          name: selfnoderemediationtemplate-sample
      1
      수정 템플릿의 세부 정보를 지정합니다.
    2. MachineHealthCheck CR을 생성하려면 다음 명령을 실행합니다.

      $ oc create -f <file-name>.yaml
    3. MachineHealthCheck CR을 업데이트하려면 다음 명령을 실행합니다.

      $ oc apply -f <file-name>.yaml

6.6.5. 셀프 노드 해결 Operator 문제 해결

6.6.5.1. 일반 문제 해결

문제
Self Node Remediation Operator의 문제를 해결하려고 합니다.
해결
Operator 로그를 확인합니다.

6.6.5.2. 데몬 세트 확인

문제
Self Node Remediation Operator가 설치되어 있지만 데몬 세트를 사용할 수 없습니다.
해결
Operator 로그에 오류 또는 경고가 있는지 확인합니다.

6.6.5.3. 실패한 수정

문제
비정상 노드가 수정되지 않았습니다.
해결

다음 명령을 실행하여 SelfNodeRemediation CR이 생성되었는지 확인합니다.

$ oc get snr -A

노드가 비정상으로 전환될 때 MachineHealthCheck 컨트롤러에서 SelfNodeRemediation CR을 생성하지 않은 경우 MachineHealthCheck 컨트롤러의 로그를 확인합니다. 또한 MachineHealthCheck CR에 수정 템플릿을 사용하는 데 필요한 사양이 포함되어 있는지 확인합니다.

SelfNodeRemediation CR이 생성된 경우 해당 이름이 비정상 노드 또는 머신 오브젝트와 일치하는지 확인합니다.

6.6.5.4. Operator를 설치 제거한 후에도 데몬 세트 및 기타 Self Node Remediation Operator 리소스가 있습니다.

문제
데몬 세트, 구성 CR 및 수정 템플릿 CR과 같은 Self Node Remediation Operator 리소스는 Operator를 설치 제거한 후도 존재합니다.
해결

Self Node Remediation Operator 리소스를 제거하려면 각 리소스 유형에 대해 다음 명령을 실행하여 리소스를 삭제합니다.

$ oc delete ds <self-node-remediation-ds> -n <namespace>
$ oc delete snrc <self-node-remediation-config> -n <namespace>
$ oc delete snrt <self-node-remediation-template> -n <namespace>

6.6.6. Self Node Remediation Operator에 대한 데이터 수집

Self Node Remediation Operator에 대한 디버깅 정보를 수집하려면 must-gather 툴을 사용하십시오. Self Node Remediation Operator의 must-gather 이미지에 대한 자세한 내용은 특정 기능에 대한 데이터 수집을 참조하십시오.

6.6.7. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.