2.5. Self Node Remediation Operator 구성

Self Node Remediation Operator는 SelfNodeRemediationConfig CR 및 SelfNodeRemediationTemplate CRD(Custom Resource Definition)를 생성합니다.

2.5.1. Self Node Remediation 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
비정상 노드의 소프트웨어 재부팅을 활성화하려면 지정합니다. 기본적으로 isSoftwareRebootEnabled 값은 true 로 설정됩니다. 소프트웨어 재부팅을 비활성화하려면 매개 변수 값을 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"}

2.5.2. Self Node Remediation Template 구성 이해

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

ResourceDeletion
이 수정 전략에서는 노드 오브젝트가 아닌 노드에서 Pod 및 관련 볼륨 연결을 제거합니다. 이 전략은 워크로드를 더 빨리 복구하는 데 도움이 됩니다. ResourceDeletion 은 기본 수정 전략입니다.
NodeDeletion
이 수정 전략은 더 이상 사용되지 않으며 향후 릴리스에서 제거됩니다. 현재 릴리스에서는 NodeDeletion 전략이 선택된 경우에도 ResourceDeletion 전략이 사용됩니다.

Self Node Remediation Operator는 ResourceDeletion 수정 전략이 사용하는 self-node-remediation-resource-deletion-template 에 대한 self NodeRemediationTemplate CR을 생성합니다.

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
수정 전략에 따라 수정 템플릿 유형을 지정합니다. & lt;remediation_object >를 리소스 또는 노드로 교체합니다. 예를 들어 self-node-remediation-resource-deletion-template.
2
수정 전략을 지정합니다. 수정 전략은 ResourceDeletion 입니다.