오픈시프트: 드라이 런 드레인 노드 오류로 인한 OCP 업그레이드 사전 검사 실패

요약: 일부 VM을 라이브 마이그레이션할 수 없거나 일부 포드를 제거할 수 없기 때문에 드라이런 드레인 노드 오류에 대한 OCP 업그레이드 사전 검사가 실패했습니다.

이 문서는 다음에 적용됩니다. 이 문서는 다음에 적용되지 않습니다. 이 문서는 특정 제품과 관련이 없습니다. 모든 제품 버전이 이 문서에 나와 있는 것은 아닙니다.

증상

LCM 사전 검사 중에 LCM 프로세스를 차단하는 드라이런 드레인 노드 장애가 발생할 수 있습니다.
image.png

오류 메시지에는 다음 시나리오가 포함될 수 있지만 이에 국한되지는 않습니다.
  • 시나리오 1: "VMI XXXXXX는 제거 전략으로 구성되지만 실시간 마이그레이션이 불가능합니다."
  • 시나리오 2: "포드의 중단 예산을 위반하므로 포드를 내보낼 수 없습니다."
  • 시나리오 3: 포드:xxxxxxxxxxxx에 대한 "포드 xxx"를 찾을 수 없음

원인

시나리오 1의 근본 원인: VM은 오류 보고 노드에서 실시간 마이그레이션할 수 없는 RWO(ReadWriteOnce) 스토리지 볼륨으로 구성됩니다.

시나리오 2의 근본 원인: 포드 "PodDistruptionBudget" 설정은 "minAvailable: 1", Pod 제거 프로세스를 차단합니다.

Senario 3 근본 원인: Openshift의 예약된 작업은 Pod를 시작하고 작업이 완료된 후 Pod는 종료됩니다. 따라서 사전 검사 드라이 런 드레이닝 노드 단계에서 포드를 찾지 못할 가능성이 있습니다.

해결

시나리오 1 해결 방법

1. PV 설정을 변경하기 전에 VM 인스턴스를 중지합니다.
image.png

2. VM을 클릭하고 YAML 탭으로 전환합니다.
image.png
image.png

3. accessModes를 "ReadWriteOnce"에서 "ReadWriteMany"로 변경합니다.
image.png

4. PV를 ReadWriteMany로 설정할 수 없는 경우(VM에서 ReadWriteMany를 사용하여 시작할 수 없음) evictionStrategy를 "LiveMigrate"에서 "None"으로 설정합니다.
image.png
참고: 환경에 적용되는 3단계 또는 4단계를 수행합니다. 두 단계를 모두 수행할 필요는 없습니다.

5. 저장을 클릭하고 VM을 재시작합니다.
image.png

6. LCM 사전 검사를 다시 시도하고 업그레이드를 진행하십시오.
 


시나리오 2 해결 방법

사용자 환경에 적용되는 다음 절차 중 하나를 수행합니다.

절차 1: 제거할 수 없는 포드를 수동으로 삭제합니다.
  • 아래 명령을 실행하여 제거할 수 없는 Pod/Pod를 삭제하고 다른 노드에서 다시 생성하도록 합니다.
$ oc delete pod <pod_name> -n <pod_namespace>
  • LCM 사전 검사를 다시 시도하고 업그레이드를 진행하십시오.


절차 2: 포드를 수동으로 삭제할 수 없는 경우 "PodDisruptionBudget"이 "minAvailable: 1"
  • 아래 명령을 실행하여 Pod "PodDisruptionBudget" 값을 확인합니다.
예:
$ oc get pdb <pdb_name> -n <pod_namespace> 
 
NAME         MIN AVAILABLE   MAX UNAVAILABLE   ALLOWED DISRUPTIONS   AGE
<pdb_name>   1               N/A               0                     18h
 
  • 명령 출력에 "MIN AVAILABLE"이 "1"로 표시되면, 아래 명령으로 PodDisruptionBudget minAvailable 값을 "0"으로 패치한다.
$ oc patch pdb <pdb_name> -n <pod_namespace> --type=merge -p '{"spec":{"minAvailable":0}}'
  • LCM 사전 검사를 다시 시도하고 업그레이드를 진행하십시오.
  • 업그레이드가 완료되고 MCO를 사용할 수 있을 때까지 기다렸다가 아래 명령을 실행하여 모든 것이 정상인지 확인합니다.
$ watch -n10 "oc get clusterversion; echo; oc get mcp; echo; oc get nodes -o wide; echo; oc get co"
예:
image.png
 
  • OCP 업그레이드가 완료되면 PodDisruptionBudget minAvailable 값을 "1"로 복원합니다.
$ oc patch pdb <pdb_name> -n <pod_namespace> --type=merge -p '{"spec":{"minAvailable":1}}'



절차 3: "PodDisruptionBudget.policy "<pdb_name>" is invalid 패치를 적용하는 경우: spec: Forbidden: poddisruptionbudget spec에 대한 업데이트가 금지됩니다.", 아래 단계에 따라 해결하십시오.
  • "minAvailable: 1"
$ oc get pdb <pdb_name> -n <pod_namespace> -o yaml > <pdb_name>_backup.yaml
 
  • "minAvailable: 1"
$ oc delete pdb <pdb_name> -n <pod_namespace>
 
  • LCM 사전 검사를 다시 시도하고 업그레이드를 진행하십시오.
  • 업그레이드가 완료되고 MCO를 사용할 수 있을 때까지 기다렸다가 아래 명령을 실행하여 모든 것이 정상인지 확인합니다.
$ watch -n10 "oc get clusterversion; echo; oc get mcp; echo; oc get nodes -o wide; echo; oc get co"
예:
image.png
 
  • OCP 업그레이드가 완료되면 백업 yaml 파일을 복원합니다.
$ oc create -f <pdb_name>_backup.yaml -n <pod_namespace>

 

시나리오 3 해결 방법

LCM 사전 검사를 다시 시도하면 됩니다. 이번에 통과해야 합니다.

추가 정보

가상 머신 디스크의 스토리지 볼륨에 대한 자세한 내용은 아래의 Openshift 문서를 참조하십시오.

https://access.redhat.com/documentation/en-us/openshift_container_platform/4.13/html/virtualization/about-virt

해당 제품

APEX Cloud Platform for Red Hat OpenShift
문서 속성
문서 번호: 000216907
문서 유형: Solution
마지막 수정 시간: 18 9월 2026
버전:  4
다른 Dell 사용자에게 질문에 대한 답변 찾기
지원 서비스
디바이스에 지원 서비스가 적용되는지 확인하십시오.