2.5. Self Node Remediation Operator 구성
Self Node Remediation Operator는 SelfNodeRemediationConfig CR 및 SelfNodeRemediationTemplate CRD(Custom Resource Definition)를 생성합니다.
특정 노드의 예기치 않은 재부팅을 방지하기 위해 Node Maintenance Operator는 노드를 유지보수 모드에 배치하고 SNR 데몬 세트가 특정 노드에서 실행되지 않도록 노드 선택기를 자동으로 추가합니다.
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-workload-availability
spec:
safeTimeToAssumeNodeRebootedSeconds: 180
watchdogFilePath: /dev/watchdog
isSoftwareRebootEnabled: true
apiServerTimeout: 15s
apiCheckInterval: 5s
maxApiErrorThreshold: 3
peerApiServerTimeout: 5s
peerDialTimeout: 5s
peerRequestTimeout: 5s
peerUpdateInterval: 15m
hostPort: 30001
customDsTolerations:
- effect: NoSchedule
key: node-role.kubernetes.io.infra
operator: Equal
value: "value1"
tolerationSeconds: 3600
- 1
- 비정상 노드에서 실행되는 영향을 받는 워크로드를 복구하기 전에 Operator가 대기하는 선택적 시간 기간을 지정합니다. 실패한 노드에서 계속 실행되는 동안 대체 Pod를 시작하면 데이터가 손상되고 run-once 의미 체계가 위반될 수 있습니다. Operator는
ApiServerTimeout,ApiCheckInterval,MaxApiErrorThreshold,PeerDial워치독 시간 초과 및 클러스터 크기를 사용하여 최소 기간을 계산합니다. 최소 기간 계산을 확인하려면 관리자 Pod 로그를 보고Timeout필드와 수정 시계산된 최소 시간에 대한 참조를 초 단위로찾습니다.최소 기간보다 낮은 값을 지정하면 Operator는 최소 기간을 사용합니다. 그러나 이 최소값보다 높은 값으로 기간을 늘리려면
safeTimeTosumeNodeRebootedSeconds를 최소 기간보다 높은 값으로 설정할 수 있습니다. - 2
- 노드에서 워치독 장치의 파일 경로를 지정합니다. 워치독 장치에 대한 잘못된 경로를 입력하면 Self Node Remediation Operator에서 softdog 장치 경로를 자동으로 감지합니다.
워치독 장치를 사용할 수 없는 경우
SelfNodeRemediationConfigCR은 소프트웨어 재부팅을 사용합니다. - 3
- 비정상 노드의 소프트웨어 재부팅을 활성화하려면 다음을 지정합니다. 기본적으로 값은
SoftwareRebootEnabled입니다.소프트웨어 재부팅을 비활성화하려면 매개 변수 값을false로 설정합니다. - 4
- 각 API 서버와의 연결을 확인하려면 타임아웃 기간을 지정합니다. 이 기간이 지나면 Operator가 수정을 시작합니다. 시간 초과 기간은 10밀리초보다 크거나 같아야 합니다.
- 5
- 각 API 서버와의 연결을 확인할 빈도를 지정합니다. 시간제한 기간은 1초보다 크거나 같아야 합니다.
- 6
- 임계값을 지정합니다. 이 임계값에 도달하면 노드가 해당 피어에 연결하기 시작합니다. 임계값은 1초보다 크거나 같아야 합니다.
- 7
- API 서버를 연결할 피어의 시간 제한을 지정합니다. 시간 초과 기간은 10밀리초보다 크거나 같아야 합니다.
- 8
- 피어와의 연결을 설정하기 위한 시간 초과 기간을 지정합니다. 시간 초과 기간은 10밀리초보다 크거나 같아야 합니다.
- 9
- 피어에서 응답을 가져올 시간 초과 기간을 지정합니다. 시간 초과 기간은 10밀리초보다 크거나 같아야 합니다.
- 10
- IP 주소와 같은 피어 정보를 업데이트할 빈도를 지정합니다. 시간 초과 기간은 10초보다 크거나 같아야 합니다.
- 11
- Self Node Remediation 에이전트가 내부 통신에 사용하는 포트를 변경하려면 선택적 값을 지정합니다. 값은 0보다 커야 합니다. 기본값은 포트 30001입니다.
- 12
- 다양한 유형의 노드에 대한 수정을 지원하려면 DaemonSet에서 실행 중인 사용자 정의 허용 오차 Self Node Remediation 에이전트를 지정합니다. 다음 필드를 구성할 수 있습니다.
-
effect: effect는 일치시킬 테인트 효과를 나타냅니다. 이 필드가 비어 있으면 모든 테인트 효과가 일치합니다. 지정된 경우 허용되는 값은NoSchedule,PreferNoSchedule및NoExecute입니다. -
key: 키는 허용 오차가 적용되는 taint 키입니다. 이 필드가 비어 있으면 모든 taint 키가 일치합니다. 키가 비어 있으면operator필드가Exists여야 합니다. 이 조합은 모든 값과 모든 키와 일치하는 것을 의미합니다. -
operator: Operator는 키와 값의 관계를 나타냅니다. 유효한 연산자는Exists및Equal입니다. 기본값은Equal입니다.exists는 특정 카테고리의 모든 테인트를 허용할 수 있도록 값의 와일드카드와 동일합니다. -
value: 허용 오차가 일치하는 테인트 값입니다. 연산자가Exists인 경우 값은 비어 있어야 합니다. 그렇지 않으면 일반 문자열일 뿐입니다. -
tolerationSeconds: 허용 오차(영향이 NoExecute여야 하며, 그렇지 않으면 이 필드가 무시됨) 테인트를 허용하는 기간입니다. 기본적으로 설정되어 있지 않습니다. 즉, 테인트를 영구적으로 허용한다는 의미입니다(즉, 제거하지 마십시오). 0 및 음수 값은 시스템에서 0(즉 즉시 제거됨)으로 처리됩니다. - 사용자 정의 허용 오차를 사용하면 Self Node Remediation 에이전트 Pod에 허용 오차를 추가할 수 있습니다. 자세한 내용은 허용 오차를 사용하여 OpenShift Logging Pod 배치 제어를 참조하십시오.
-
- Self Node Remediation Operator는 배포 네임스페이스에 기본적으로 CR을 생성합니다.
-
CR의 이름은
self-node-remediation-config여야 합니다. -
SelfNodeRemediationConfigCR이 하나만 있을 수 있습니다. -
SelfNodeRemediationConfigCR을 삭제하면 Self Node Remediation이 비활성화됩니다. -
Self Node Remediation Operator가 생성한
self-node-remediation-configCR을 편집할 수 있습니다. 그러나 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-workload-availability' {"selfnoderemediationconfig":
"openshift-workload-availability/selfnoderemediationconfig-copy"}
2.5.2. Self Node Remediation 템플릿 구성 이해 링크 복사링크가 클립보드에 복사되었습니다!
Self Node Remediation Operator는 SelfNodeRemediationTemplate CRD(Custom Resource Definition)도 생성합니다. 이 CRD는 워크로드를 더 빨리 복구하기 위한 노드의 수정 전략을 정의합니다. 다음 수정 전략을 사용할 수 있습니다.
자동-
이 수정 전략은 Self Node Remediation Operator가 클러스터에 가장 적합한 수정 전략을 결정하도록 하여 수정 프로세스를 단순화합니다. 이 전략은 클러스터에서
OutOfServiceTaint전략을 사용할 수 있는지 확인합니다.OutOfServiceTaint전략을 사용할 수 있는 경우 Operator는OutOfServiceTaint전략을 선택합니다.OutOfServiceTaint전략을 사용할 수 없는 경우 Operator는ResourceDeletion전략을 선택합니다.Automatic은 기본 수정 전략입니다. ResourceDeletion- 이 수정 전략에서는 노드 오브젝트가 제거되지 않고 노드의 Pod를 제거합니다.
OutOfServiceTaint-
이 수정 전략으로 인해 노드 오브젝트가 제거되지 않고 노드에서 Pod 및 관련 볼륨 연결이 제거됩니다. 노드에
OutOfServiceTaint전략을 배치하여 이를 달성합니다. 이 전략은 OpenShift Container Platform 버전 4.13 이후의 기술 프리뷰 및 OpenShift Container Platform 버전 4.15 이후의 일반 가용성에서 지원됩니다.
Self Node Remediation Operator는 자동 수정 전략에서 사용하는 strategy self-node-remediation-automatic-strategy-template 에 대한 SelfNodeRemediationTemplate 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
namespace: openshift-workload-availability
spec:
template:
spec:
remediationStrategy: <remediation_strategy>
2.5.3. Self Node Remediation Operator 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
2.5.3.1. 일반 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
- Self Node Remediation Operator 관련 문제를 해결하려고 합니다.
- 해결
- Operator 로그를 확인합니다.
2.5.3.2. 데몬 세트 확인 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
- Self Node Remediation Operator가 설치되었지만 데몬 세트를 사용할 수 없습니다.
- 해결
- Operator 로그에 오류 또는 경고가 있는지 확인합니다.
2.5.3.3. 수정 실패 링크 복사링크가 클립보드에 복사되었습니다!
- 문제
- 비정상 노드가 수정되지 않았습니다.
- 해결
다음 명령을 실행하여
SelfNodeRemediationCR이 생성되었는지 확인합니다.$ oc get snr -A노드가 비정상 상태가 되면
MachineHealthCheck컨트롤러에서SelfNodeRemediationCR을 생성하지 않은 경우MachineHealthCheck컨트롤러의 로그를 확인합니다. 또한MachineHealthCheckCR에 수정 템플릿을 사용하는 데 필요한 사양이 포함되어 있는지 확인합니다.SelfNodeRemediationCR이 생성된 경우 이름이 비정상 노드 또는 머신 오브젝트와 일치하는지 확인합니다.
2.5.3.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>
2.5.4. Self Node Remediation Operator에 대한 데이터 수집 링크 복사링크가 클립보드에 복사되었습니다!
Self Node Remediation Operator에 대한 디버깅 정보를 수집하려면 must-gather 툴을 사용합니다. Self Node Remediation Operator의 must-gather 이미지에 대한 자세한 내용은 특정 기능에 대한 데이터 수집을 참조하십시오.