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 장치 경로를 자동으로 탐지합니다.
워치독 장치를 사용할 수 없는 경우
SelfNodeRemediationConfigCR은 소프트웨어 재부팅을 사용합니다. - 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