5.4. 노드를 정상적으로 재부팅
WMCO(Windows Machine Config Operator)는 가능한 한 노드 재부팅을 최소화합니다. 그러나 변경 사항이 정확하고 안전하게 적용되도록 특정 작업 및 업데이트를 재부팅해야 합니다. Windows 노드를 안전하게 재부팅하려면 정상 재부팅 프로세스를 사용하십시오. 표준 OpenShift Container Platform 노드를 정상적으로 재부팅하는 방법에 대한 자세한 내용은 노드 설명서의 "노드 재부팅"을 참조하십시오.
노드를 재부팅하기 전에 노드에서 데이터가 손실되지 않도록 etcd 데이터를 백업하는 것이 좋습니다.
클러스터를 관리하기 위해 kubeconfig
파일에 인증서가 없는 대신 사용자가 oc login
명령을 수행해야 하는 단일 노드 OpenShift 클러스터의 경우 노드를 차단하고 드레이닝한 후 oc adm
명령을 사용할 수 없을 수 있습니다. 이는 cordon으로 인해 openshift-oauth-apiserver
포드가 실행되지 않기 때문입니다. 다음 절차에 표시된 대로 SSH를 사용하여 노드에 액세스할 수 있습니다.
단일 노드 OpenShift 클러스터에서는 차단 및 드레인 시 Pod를 다시 예약할 수 없습니다. 그러나 이렇게 하면 Pod, 특히 워크로드 Pod, 관련 리소스를 올바르게 중지하고 해제하는 시간이 제공됩니다.
절차
노드를 정상적으로 재시작하려면 다음을 수행합니다.
노드를 예약 불가능으로 표시합니다.
oc adm cordon <node1>
Copy to clipboardCopied$ oc adm cordon <node1>
실행 중인 모든 Pod를 제거하려면 노드를 드레이닝합니다.
oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force
Copy to clipboardCopied$ oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force
PDB(사용자 정의 Pod 중단 예산)와 연결된 Pod를 제거할 수 없는 오류가 표시될 수 있습니다.
오류 예
error when evicting pods/"rails-postgresql-example-1-72v2w" -n "rails" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
Copy to clipboardCopiederror when evicting pods/"rails-postgresql-example-1-72v2w" -n "rails" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
이 경우 drain 명령을 다시 실행하여 PDB 검사를 바이패스하는
disable-eviction
플래그를 추가합니다.oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force --disable-eviction
Copy to clipboardCopied$ oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force --disable-eviction
Windows 노드에 SSH로 연결하고 다음 명령을 실행하여 PowerShell을 입력합니다.
powershell
Copy to clipboardCopiedC:\> powershell
다음 명령을 실행하여 노드를 다시 시작합니다.
Restart-Computer -Force
Copy to clipboardCopiedC:\> Restart-Computer -Force
AWS(Amazon Web Services)의 Windows 노드는 EC2 인스턴스 메타데이터 경로 및 HNS(Host Network Service) 네트워크와의 불일치로 인해 정상 재부팅 후
READY
상태로 되돌아가지 않습니다.재부팅 후 AWS의 모든 Windows 노드에 SSH로 연결하고 쉘 프롬프트에서 다음 명령을 실행하여 경로를 추가합니다.
route add 169.254.169.254 mask 255.255.255.0 <gateway_ip>
Copy to clipboardCopiedC:\> route add 169.254.169.254 mask 255.255.255.0 <gateway_ip>
다음과 같습니다.
169.254.169.254
- EC2 인스턴스 메타데이터 끝점의 주소를 지정합니다.
255.255.255.255
- EC2 인스턴스 메타데이터 끝점의 네트워크 마스크를 지정합니다.
<gateway_ip>
다음 명령을 실행하여 찾을 수 있는 Windows 인스턴스에서 게이트웨이의 해당 IP 주소를 지정합니다.
ipconfig | findstr /C:"Default Gateway"
Copy to clipboardCopiedC:\> ipconfig | findstr /C:"Default Gateway"
재부팅이 완료되면 다음 명령을 실행하여 노드를 예약 가능으로 표시합니다.
oc adm uncordon <node1>
Copy to clipboardCopied$ oc adm uncordon <node1>
노드가 준비되었는지 확인합니다.
oc get node <node1>
Copy to clipboardCopied$ oc get node <node1>
출력 예
NAME STATUS ROLES AGE VERSION <node1> Ready worker 6d22h v1.18.3+b0068a8
Copy to clipboardCopiedNAME STATUS ROLES AGE VERSION <node1> Ready worker 6d22h v1.18.3+b0068a8