12.6. OpenShift Virtualization Runbooks
이러한 실행북의 절차를 사용하여 OpenShift Virtualization 경고를 트리거하는 문제를 진단하고 해결할 수 있습니다.
OpenShift Virtualization 경고는 웹 콘솔의 가상화
12.6.1. CDIDataImportCronOutdated
의미
이 경고는 DataImportCron
이 최신 디스크 이미지 버전을 폴링하거나 가져올 수 없는 경우 실행됩니다.
DataImportCron
은 디스크 이미지를 폴링하고 최신 버전을 확인하고 이미지를 PVC(영구 볼륨 클레임)로 가져옵니다. 이 프로세스에서는 PVC가 최신 버전으로 업데이트되어 가상 머신(VM)의 안정적인 복제 소스 또는 골든 이미지로 사용할 수 있습니다.
골든 이미지의 경우 latest 는 배포판의 최신 운영 체제를 나타냅니다. 기타 디스크 이미지의 경우 latest 는 사용 가능한 이미지의 최신 해시를 나타냅니다.
보안 등급
오래된 디스크 이미지에서 VM을 생성할 수 있습니다.
복제에 소스 PVC를 사용할 수 없기 때문에 VM을 시작하지 못할 수 있습니다.
진단
기본 스토리지 클래스가 있는지 클러스터를 확인합니다.
$ oc get sc
출력에 기본 스토리지 클래스의 이름 옆에
(기본값)
가 있는 스토리지 클래스가 표시됩니다.DataImportCron
이 이미지를 폴링하고 가져오려면 클러스터 또는DataImportCron
사양에 기본 스토리지 클래스를 설정해야 합니다. 스토리지 클래스가 정의되지 않은 경우 DataVolume 컨트롤러에서 PVC를 생성하지 못하고 다음 이벤트가 표시됩니다. DataVolume.storage 사양에 accessMode가 없으며 profile을 선택할 storageClass가 없습니다
.DataImportCron
네임스페이스 및 이름을 가져옵니다.$ oc get dataimportcron -A -o json | jq -r '.items[] | \ select(.status.conditions[] | select(.type == "UpToDate" and \ .status == "False")) | .metadata.namespace + "/" + .metadata.name'
기본 스토리지 클래스가 클러스터에 정의되지 않은 경우 기본 스토리지 클래스의
DataImportCron
사양을 확인합니다.$ oc get dataimportcron <dataimportcron> -o yaml | \ grep -B 5 storageClassName
출력 예
url: docker://.../cdi-func-test-tinycore storage: resources: requests: storage: 5Gi storageClassName: rook-ceph-block
DataImportCron
오브젝트와 연결된DataVolume
의 이름을 가져옵니다.$ oc -n <namespace> get dataimportcron <dataimportcron> -o json | \ jq .status.lastImportedPVC.name
DataVolume
로그에 오류 메시지가 있는지 확인합니다.$ oc -n <namespace> get dv <datavolume> -o yaml
CDI_NAMESPACE
환경 변수를 설정합니다.$ export CDI_NAMESPACE="$(oc get deployment -A | \ grep cdi-operator | awk '{print $1}')"
cdi-deployment
로그에 오류 메시지가 있는지 확인합니다.$ oc logs -n $CDI_NAMESPACE deployment/cdi-deployment
완화 방법
-
클러스터 또는
DataImportCron
사양에서 기본 스토리지 클래스를 설정하여 골든 이미지를 폴링하고 가져옵니다. 업데이트된 CDI(Containerized Data Importer)는 몇 초 내에 문제를 해결합니다. -
문제가 자체적으로 해결되지 않으면 영향을 받는
DataImportCron
오브젝트와 연결된 데이터 볼륨을 삭제합니다. CDI는 기본 스토리지 클래스를 사용하여 데이터 볼륨을 다시 생성합니다. 클러스터가 제한된 네트워크 환경에 설치된 경우 자동 업데이트를 옵트아웃하려면
enableCommonBootImageImport
기능 게이트를 비활성화합니다.$ oc patch hco kubevirt-hyperconverged -n $CDI_NAMESPACE --type json \ -p '[{"op": "replace", "path": \ "/spec/featureGates/enableCommonBootImageImport", "value": false}]'
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.2. CDIDataVolumeUnusualRestartCount
의미
이 경고는 DataVolume
오브젝트가 세 번 이상 다시 시작되면 발생합니다.
보안 등급
데이터 볼륨은 영구 볼륨 클레임에서 가상 머신 디스크를 가져오고 생성합니다. 데이터 볼륨이 세 번 이상 다시 시작되면 이러한 작업이 성공할 수 없습니다. 문제를 진단하고 해결해야 합니다.
진단
세 번의 재시작이 있는 CDI(Containerized Data Importer) Pod를 찾습니다.
$ oc get pods --all-namespaces -l app=containerized-data-importer \ -o=jsonpath='{range .items[?(@.status.containerStatuses[0].restartCount>3)]}{.metadata.name}{"/"}{.metadata.namespace}{"\n"}'
Pod의 세부 정보를 가져옵니다.
$ oc -n <namespace> describe pods <pod>
Pod 로그에 오류 메시지가 있는지 확인합니다.
$ oc -n <namespace> logs <pod>
완화 방법
데이터 볼륨을 삭제하고 문제를 해결한 다음 새 데이터 볼륨을 생성합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 Diagnosis 절차 중에 수집된 아티팩트를 연결합니다.
12.6.3. CDINotReady
의미
이 경고는 CDI(Containerized Data Importer)가 degraded 상태가 되면 발생합니다.
- 진행되지 않음
- 사용할 수 없음
보안 등급
CDI는 사용할 수 없으므로 사용자가 CDI 데이터 볼륨을 사용하여 PVC(영구 볼륨 클레임)에서 가상 머신 디스크를 빌드할 수 없습니다. CDI 구성 요소는 준비되지 않았으며 준비 상태로 진행을 중지했습니다.
진단
CDI_NAMESPACE
환경 변수를 설정합니다.$ export CDI_NAMESPACE="$(oc get deployment -A | \ grep cdi-operator | awk '{print $1}')"
준비되지 않은 구성 요소가 CDI 배포를 확인합니다.
$ oc -n $CDI_NAMESPACE get deploy -l cdi.kubevirt.io
실패한 Pod의 세부 정보를 확인합니다.
$ oc -n $CDI_NAMESPACE describe pods <pod>
실패한 Pod의 로그를 확인합니다.
$ oc -n $CDI_NAMESPACE logs <pod>
완화 방법
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.4. CDIOperatorDown
의미
이 경고는 CDI(Containerized Data Importer) Operator가 다운되면 실행됩니다. CDI Operator는 데이터 볼륨 및 PVC(영구 볼륨 클레임) 컨트롤러와 같은 CDI 인프라 구성 요소를 배포하고 관리합니다. 이러한 컨트롤러는 사용자가 PVC에 가상 머신 디스크를 빌드하는 데 도움이 됩니다.
보안 등급
CDI 구성 요소를 배포하지 못하거나 필수 상태를 유지할 수 있습니다. CDI 설치가 제대로 작동하지 않을 수 있습니다.
진단
CDI_NAMESPACE
환경 변수를 설정합니다.$ export CDI_NAMESPACE="$(oc get deployment -A | grep cdi-operator | \ awk '{print $1}')"
cdi-operator
Pod가 현재 실행 중인지 확인합니다.$ oc -n $CDI_NAMESPACE get pods -l name=cdi-operator
cdi-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $CDI_NAMESPACE describe pods -l name=cdi-operator
cdi-operator
Pod에서 오류가 있는지 확인합니다.$ oc -n $CDI_NAMESPACE logs -l name=cdi-operator
완화 방법
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.5. CDIStorageProfilesIncomplete
의미
이 경고는 CDI(Containerized Data Importer) 스토리지 프로필이 불완전하면 발생합니다.
스토리지 프로파일이 불완전하면 CDI는 VM(가상 머신) 디스크를 생성하는 데 필요한 volumeMode
및 accessModes
와 같은 PVC(영구 볼륨 클레임) 필드를 추측할 수 없습니다.
보안 등급
CDI는 PVC에 VM 디스크를 생성할 수 없습니다.
진단
불완전한 스토리지 프로필을 확인합니다.
$ oc get storageprofile <storage_class>
완화 방법
다음 예와 같이 누락된 스토리지 프로필 정보를 추가합니다.
$ oc patch storageprofile <storage_class> --type=merge -p '{"spec": {"claimPropertySets": [{"accessModes": ["ReadWriteOnce"], "volumeMode": "Filesystem"}]}}'
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.6. CnaoDown
의미
이 경고는 CNAO(Cluster Network Addons Operator)가 다운되면 발생합니다. CNAO는 클러스터 상단에 추가 네트워킹 구성 요소를 배포합니다.
보안 등급
CNAO가 실행 중이 아닌 경우 클러스터는 가상 머신 구성 요소에 대한 변경 사항을 조정할 수 없습니다. 결과적으로 변경 사항을 적용하지 못할 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get deployment -A | \ grep cluster-network-addons-operator | awk '{print $1}')"
cluster-network-addons-operator
Pod의 상태를 확인합니다.$ oc -n $NAMESPACE get pods -l name=cluster-network-addons-operator
오류 메시지가
cluster-network-addons-operator
로그를 확인합니다.$ oc -n $NAMESPACE logs -l name=cluster-network-addons-operator
cluster-network-addons-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pods -l name=cluster-network-addons-operator
완화 방법
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.7. HCOInstallationIncomplete
의미
이 경고는 HyperConverged CR(사용자 정의 리소스) 없이 HCO( HyperConverged
Cluster Operator)가 1시간 이상 실행되면 실행됩니다.
이 경고에는 다음과 같은 원인이 있습니다.
-
설치 프로세스 중에 HCO를 설치했지만
HyperConverged
CR을 생성하지 않았습니다. -
설치 제거 프로세스 중에 HCO를 제거하기 전에
HyperConverged
CR을 제거한 후 HCO가 계속 실행되고 있습니다.
완화 방법
완화 방법은 HCO를 설치 또는 제거하는지 여부에 따라 다릅니다.
기본값을 사용하여
HyperConverged
CR을 생성하여 설치를 완료합니다.$ cat <<EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: hco-operatorgroup namespace: kubevirt-hyperconverged spec: {} EOF
- HCO를 제거합니다. 제거 프로세스가 계속 실행되는 경우 경고를 취소하려면 해당 문제를 해결해야 합니다.
12.6.8. HPPNotReady
의미
이 경고는 HPP(Hostpath provisioner) 설치가 degraded 상태가 되면 실행됩니다.
HPP는 PVC(영구 볼륨 클레임)에 스토리지를 제공하기 위해 hostpath 볼륨을 동적으로 프로비저닝합니다.
보안 등급
HPP는 사용할 수 없습니다. 해당 구성 요소는 준비 상태가 아니며 준비 상태로 진행되지 않습니다.
진단
HPP_NAMESPACE
환경 변수를 설정합니다.$ export HPP_NAMESPACE="$(oc get deployment -A | \ grep hostpath-provisioner-operator | awk '{print $1}')"
현재 준비되지 않은 HPP 구성 요소를 확인합니다.
$ oc -n $HPP_NAMESPACE get all -l k8s-app=hostpath-provisioner
실패한 Pod의 세부 정보를 가져옵니다.
$ oc -n $HPP_NAMESPACE describe pods <pod>
실패한 Pod의 로그를 확인합니다.
$ oc -n $HPP_NAMESPACE logs <pod>
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.9. HPPOperatorDown
의미
이 경고는 HPP(Hostpath provisioner) Operator가 다운되면 실행됩니다.
HPP Operator는 hostpath 볼륨을 프로비저닝하는 데몬 세트와 같은 HPP 인프라 구성 요소를 배포하고 관리합니다.
보안 등급
HPP 구성 요소를 배포하지 못하거나 필수 상태로 유지할 수 있습니다. 이로 인해 클러스터에서 HPP 설치가 제대로 작동하지 않을 수 있습니다.
진단
HPP_NAMESPACE
환경 변수를 구성합니다.$ HPP_NAMESPACE="$(oc get deployment -A | grep \ hostpath-provisioner-operator | awk '{print $1}')"
hostpath-provisioner-operator
Pod가 현재 실행 중인지 확인합니다.$ oc -n $HPP_NAMESPACE get pods -l name=hostpath-provisioner-operator
hostpath-provisioner-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $HPP_NAMESPACE describe pods -l name=hostpath-provisioner-operator
hostpath-provisioner-operator
Pod의 로그에 오류가 있는지 확인합니다.$ oc -n $HPP_NAMESPACE logs -l name=hostpath-provisioner-operator
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.10. HPPSharingPoolPathWithOS
의미
이 경고는 HPP(Hostpath provisioner)가 kubelet
또는 OS(운영 체제)와 같은 다른 중요한 구성 요소와 파일 시스템을 공유할 때 실행됩니다.
HPP는 PVC(영구 볼륨 클레임)에 스토리지를 제공하기 위해 hostpath 볼륨을 동적으로 프로비저닝합니다.
보안 등급
공유 hostpath 풀은 노드의 디스크에 압력을 가합니다. 노드에 성능이 저하될 수 있으며 안정성이 저하될 수 있습니다.
진단
HPP_NAMESPACE
환경 변수를 구성합니다.$ export HPP_NAMESPACE="$(oc get deployment -A | \ grep hostpath-provisioner-operator | awk '{print $1}')"
hostpath-provisioner-csi
데몬 세트 Pod의 상태를 가져옵니다.$ oc -n $HPP_NAMESPACE get pods | grep hostpath-provisioner-csi
hostpath-provisioner-csi
로그를 확인하여 공유 풀 및 경로를 식별합니다.$ oc -n $HPP_NAMESPACE logs <csi_daemonset> -c hostpath-provisioner
출력 예
I0208 15:21:03.769731 1 utils.go:221] pool (<legacy, csi-data-dir>/csi), shares path with OS which can lead to node disk pressure
완화 방법
Diagnosis 섹션에서 얻은 데이터를 사용하여 풀 경로가 OS와 공유되지 않도록 합니다. 특정 단계는 노드 및 기타 상황에 따라 다릅니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.11. KubemacpoolDown
의미
KubeMacPool
이 다운되었습니다. KubeMacPool
은 MAC 주소를 할당하고 MAC 주소 충돌을 방지합니다.
보안 등급
KubeMacPool
이 다운된 경우 VirtualMachine
오브젝트를 생성할 수 없습니다.
진단
KMP_NAMESPACE
환경 변수를 설정합니다.$ export KMP_NAMESPACE="$(oc get pod -A --no-headers -l \ control-plane=mac-controller-manager | awk '{print $1}')"
KMP_NAME
환경 변수를 설정합니다.$ export KMP_NAME="$(oc get pod -A --no-headers -l \ control-plane=mac-controller-manager | awk '{print $2}')"
KubeMacPool-manager
Pod 세부 정보를 가져옵니다.$ oc describe pod -n $KMP_NAMESPACE $KMP_NAME
KubeMacPool-manager
로그에 오류 메시지가 있는지 확인합니다.$ oc logs -n $KMP_NAMESPACE $KMP_NAME
완화 방법
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.12. KubeMacPoolDuplicateMacsFound
의미
이 경고는 KubeMacPool
이 중복 MAC 주소를 감지하면 발생합니다.
KubeMacPool
은 MAC 주소를 할당하고 MAC 주소 충돌을 방지합니다. KubeMacPool
이 시작되면 관리형 네임스페이스에서 VM(가상 머신)의 MAC 주소가 클러스터를 검사합니다.
보안 등급
동일한 LAN의 MAC 주소를 중복하면 네트워크 문제가 발생할 수 있습니다.
진단
kubemacpool-mac-controller
Pod의 네임스페이스 및 이름을 가져옵니다.$ oc get pod -A -l control-plane=mac-controller-manager --no-headers \ -o custom-columns=":metadata.namespace,:metadata.name"
kubemacpool-mac-controller
로그에서 중복된 MAC 주소를 가져옵니다.$ oc logs -n <namespace> <kubemacpool_mac_controller> | \ grep "already allocated"
출력 예
mac address 02:00:ff:ff:ff:ff already allocated to vm/kubemacpool-test/testvm, br1, conflict with: vm/kubemacpool-test/testvm2, br1
완화 방법
- VM을 업데이트하여 중복된 MAC 주소를 제거합니다.
kubemacpool-mac-controller
Pod를 다시 시작합니다.$ oc delete pod -n <namespace> <kubemacpool_mac_controller>
12.6.13. KubeVirtComponentExceedsRequestedCPU
의미
이 경고는 구성 요소의 CPU 사용량이 요청된 제한을 초과하면 실행됩니다.
보안 등급
CPU 리소스 사용량이 최적이 아니며 노드가 과부하될 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
구성 요소의 CPU 요청 제한을 확인합니다.
$ oc -n $NAMESPACE get deployment <component> -o yaml | grep requests: -A 2
PromQL 쿼리를 사용하여 실제 CPU 사용량을 확인합니다.
node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate {namespace="$NAMESPACE",container="<component>"}
자세한 내용은 Prometheus 설명서 를 참조하십시오.
완화 방법
HCO
사용자 정의 리소스에서 CPU 요청 제한을 업데이트합니다.
12.6.14. KubeVirtComponentExceedsRequestedMemory
의미
이 경고는 구성 요소의 메모리 사용량이 요청된 제한을 초과하면 실행됩니다.
보안 등급
메모리 리소스를 사용하는 것이 최적이 아니며 노드가 과부하될 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
구성 요소의 메모리 요청 제한을 확인합니다.
$ oc -n $NAMESPACE get deployment <component> -o yaml | \ grep requests: -A 2
PromQL 쿼리를 사용하여 실제 메모리 사용량을 확인합니다.
container_memory_usage_bytes{namespace="$NAMESPACE",container="<component>"}
자세한 내용은 Prometheus 설명서 를 참조하십시오.
완화 방법
HCO
사용자 정의 리소스에서 메모리 요청 제한을 업데이트합니다.
12.6.15. KubeVirtCRModified
의미
이 경고는 HCO( HyperConverged Cluster Operator)의 피연산자가 HCO 이외의 다른 사용자에 의해 변경될 때 발생합니다.
HCO는 OpenShift Virtualization 및 해당 지원 Operator를 의견으로 구성하고 예기치 않은 변경이 있을 때 해당 피연산자를 덮어씁니다. 사용자는 피연산자를 직접 수정할 수 없습니다. HyperConverged
사용자 정의 리소스는 구성에 대한 정보 소스입니다.
보안 등급
피연산자를 수동으로 변경하면 클러스터 구성이 변동되고 불안정해질 수 있습니다.
진단
경고 세부 정보에서
component_name
값을 확인하여 변경 중인 피연산자 이름(kubevirt
-kubevirt-hyperconverged )과 피연산자 이름(kubevirt-kubevirt-hyperconverged
)을 확인합니다.Labels alertname=KubevirtHyperconvergedClusterOperatorCRModification component_name=kubevirt/kubevirt-kubevirt-hyperconverged severity=warning
완화 방법
HCO 피연산자를 직접 변경하지 마십시오. HyperConverged
오브젝트를 사용하여 클러스터를 구성합니다.
피연산자가 수동으로 변경되지 않은 경우 경고는 10분 후에 자체적으로 해결됩니다.
12.6.16. KubeVirtDeprecatedAPIRequested
의미
이 경고는 더 이상 사용되지 않는 KubeVirt
API가 사용되면 실행됩니다.
보안 등급
향후 릴리스에서 API가 제거되면 요청이 실패하므로 더 이상 사용되지 않는 API를 사용하는 것이 권장되지 않습니다.
진단
다음 예와 같이 더 이상 사용되지 않는 API를 확인하려면 경고의 Description 및 Summary 섹션을 확인합니다.
설명
더 이상 사용되지 않는 가상machines.kubevirt.io/v1alpha3 API에 대한 감지된 요청입니다.
요약
지난 10분 동안 2개의 요청이 감지되었습니다.
완화 방법
완전히 지원되는 API를 사용합니다. 더 이상 사용되지 않는 API가 사용되지 않는 경우 경고는 10분 후에 자체적으로 해결됩니다.
12.6.17. KubeVirtNoAvailableNodesToRunVMs
의미
이 경고는 클러스터의 노드 CPU가 가상화를 지원하지 않거나 가상화 확장이 활성화되지 않은 경우 발생합니다.
보안 등급
노드는 가상화를 지원해야 하며 BIOS에서 VM(가상 머신)을 실행하려면 가상화 기능을 활성화해야 합니다.
진단
하드웨어 가상화 지원이 있는지 노드를 확인합니다.
$ oc get nodes -o json|jq '.items[]|{"name": .metadata.name, "kvm": .status.allocatable["devices.kubevirt.io/kvm"]}'
출력 예
{ "name": "shift-vwpsz-master-0", "kvm": null } { "name": "shift-vwpsz-master-1", "kvm": null } { "name": "shift-vwpsz-master-2", "kvm": null } { "name": "shift-vwpsz-worker-8bxkp", "kvm": "1k" } { "name": "shift-vwpsz-worker-ctgmc", "kvm": "1k" } { "name": "shift-vwpsz-worker-gl5zl", "kvm": "1k" }
"kvm": null
또는"kvm": 0
인 노드는 가상화 확장을 지원하지 않습니다."kvm": "1k"
가 있는 노드는 가상화 확장을 지원합니다.
완화 방법
모든 노드에서 하드웨어 및 CPU 가상화 확장 기능이 활성화되어 있고 노드의 레이블이 올바르게 지정되어 있는지 확인합니다.
자세한 내용은 OpenShift Virtualization에서 사용 가능한 노드가 없음으로 보고하고 VM을 시작할 수 없습니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 엽니다.
12.6.18. KubevirtVmHighMemoryUsage
의미
이 경고는 VM(가상 머신)을 호스팅하는 컨테이너가 20MB 미만의 여유 메모리가 있는 경우 실행됩니다.
보안 등급
컨테이너의 메모리 제한을 초과하는 경우 컨테이너 내에서 실행 중인 가상 머신은 런타임에 의해 종료됩니다.
진단
virt-launcher
Pod 세부 정보를 가져옵니다.$ oc get pod <virt-launcher> -o yaml
virt-launcher
Pod에서 메모리 사용량이 높은컴퓨팅
컨테이너 프로세스를 식별합니다.$ oc exec -it <virt-launcher> -c compute -- top
완화 방법
다음 예와 같이
VirtualMachine
사양에서 메모리 제한을 늘립니다.spec: running: false template: metadata: labels: kubevirt.io/vm: vm-name spec: domain: resources: limits: memory: 200Mi requests: memory: 128Mi
12.6.19. KubeVirtVMIExcessiveMigrations
의미
이 경고는 VMI(가상 머신 인스턴스)가 24시간 동안 12회 이상 실시간 마이그레이션될 때 발생합니다.
이 마이그레이션 속도는 업그레이드 중에도 비정상적으로 높습니다. 이 경고는 네트워크 중단 또는 리소스가 충분하지 않은 등 클러스터 인프라에 문제가 표시될 수 있습니다.
보안 등급
너무 자주 마이그레이션하는 VM(가상 머신)은 전환 중에 메모리 페이지 결함이 발생하기 때문에 성능이 저하될 수 있습니다.
진단
작업자 노드에 충분한 리소스가 있는지 확인합니다.
$ oc get nodes -l node-role.kubernetes.io/worker= -o json | \ jq .items[].status.allocatable
출력 예
{ "cpu": "3500m", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/sev": "0", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "38161122446", "hugepages-1Gi": "0", "hugepages-2Mi": "0", "memory": "7000128Ki", "pods": "250" }
작업자 노드의 상태를 확인합니다.
$ oc get nodes -l node-role.kubernetes.io/worker= -o json | \ jq .items[].status.conditions
출력 예
{ "lastHeartbeatTime": "2022-05-26T07:36:01Z", "lastTransitionTime": "2022-05-23T08:12:02Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure" }, { "lastHeartbeatTime": "2022-05-26T07:36:01Z", "lastTransitionTime": "2022-05-23T08:12:02Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure" }, { "lastHeartbeatTime": "2022-05-26T07:36:01Z", "lastTransitionTime": "2022-05-23T08:12:02Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure" }, { "lastHeartbeatTime": "2022-05-26T07:36:01Z", "lastTransitionTime": "2022-05-23T08:24:15Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready" }
작업자 노드에 로그인하고
kubelet
서비스가 실행 중인지 확인합니다.$ systemctl status kubelet
kubelet
저널 로그에 오류 메시지가 있는지 확인합니다.$ journalctl -r -u kubelet
완화 방법
작업자 노드에 중단 없이 VM 워크로드를 실행할 수 있는 충분한 리소스(CPU, 메모리, 디스크)가 있는지 확인합니다.
문제가 지속되면 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.20. LowKVMNodesCount
의미
이 경고는 클러스터의 두 개 미만의 노드에 KVM 리소스가 있는 경우 실행됩니다.
보안 등급
실시간 마이그레이션을 위해 클러스터에 KVM 리소스가 있는 두 개 이상의 노드가 있어야 합니다.
노드에 KVM 리소스가 없는 경우 가상 머신을 예약하거나 실행할 수 없습니다.
진단
KVM 리소스를 사용하여 노드를 식별합니다.
$ oc get nodes -o jsonpath='{.items[*].status.allocatable}' | \ grep devices.kubevirt.io/kvm
완화 방법
KVM 리소스가 없는 노드에 KVM을 설치합니다.
12.6.21. LowReadyVirtControllersCount
의미
이 경고는 하나 이상의 virt-controller
Pod가 실행 중이지만 지난 5분 동안 이러한 Pod가 Ready
상태에 있지 않은 경우 실행됩니다.
virt-controller
장치는 VMI(가상 머신 인스턴스)의 CRD(사용자 정의 리소스 정의)를 모니터링하고 관련 Pod를 관리합니다. 장치는 VMI에 대한 Pod를 생성하고 라이프사이클을 관리합니다. 장치는 클러스터 전체 가상화 기능에 중요합니다.
보안 등급
이 경고는 클러스터 수준 오류가 발생할 수 있음을 나타냅니다. 새 VMI 시작 또는 기존 VMI 종료와 같은 VM 라이프사이클 관리와 관련된 작업이 실패합니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-controller
장치를 사용할 수 있는지 확인합니다.$ oc get deployment -n $NAMESPACE virt-controller \ -o jsonpath='{.status.readyReplicas}'
virt-controller
배포의 상태를 확인합니다.$ oc -n $NAMESPACE get deploy virt-controller -o yaml
virt-controller
배포의 세부 정보를 가져와 이미지를 가져오는 Pod 또는 실패와 같은 상태 조건을 확인합니다.$ oc -n $NAMESPACE describe deploy virt-controller
노드에서 문제가 있는지 확인합니다. 예를 들어
NotReady
상태에 있을 수 있습니다.$ oc get nodes
완화 방법
이 경고에는 다음을 포함하여 여러 가지 원인이 있을 수 있습니다.
- 클러스터에 메모리가 충분하지 않습니다.
- 노드가 다운되었습니다.
- API 서버가 과부하됩니다. 예를 들어 스케줄러는 많은 부하가 있을 수 있으므로 완전히 사용할 수 없습니다.
- 네트워크 문제가 있습니다.
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.22. LowReadyVirtOperatorsCount
의미
이 경고는 하나 이상의 virt-operator
Pod가 실행 중이지만 마지막 10분 동안 이러한 Pod가 Ready
상태에 있지 않은 경우 실행됩니다.
virt-operator
는 클러스터에서 시작하는 첫 번째 Operator입니다. virt-operator
배포에는 두 개의 virt-operator
Pod의 기본 복제본이 있습니다.
주요 책임은 다음과 같습니다.
- 클러스터 설치, 실시간 업그레이드
-
virt-controller
,virt-handler
,virt-launcher
와 같은 최상위 컨트롤러의 라이프사이클 모니터링 및 조정 관리 - 인증서 교체 및 인프라 관리와 같은 특정 클러스터 전체 작업
보안 등급
클러스터 수준 오류가 발생할 수 있습니다. 컨트롤러의 인증 교체, 업그레이드 및 조정과 같은 중요한 클러스터 전체 관리 기능을 사용할 수 없게 될 수 있습니다. 이러한 상태는 NoReadyVirtOperator
경고도 트리거합니다.
virt-operator
는 클러스터의 VM(가상 머신)을 직접 처리하지 않습니다. 따라서 임시 사용할 수 없는 경우 VM 워크로드에 크게 영향을 미치지 않습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-operator
배포의 이름을 가져옵니다.$ oc -n $NAMESPACE get deploy virt-operator -o yaml
virt-operator
배포의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe deploy virt-operator
NotReady
상태와 같은 노드 문제를 확인합니다.$ oc get nodes
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.23. LowVirtAPICount
의미
이 경고는 예약에 최소 두 개 이상의 노드를 사용할 수 있지만 60분 동안 사용 가능한 하나의 virt-api
Pod만 탐지될 때 실행됩니다.
보안 등급
virt-api
Pod가 단일 장애 지점이 되기 때문에 노드 제거 중에 API 호출 중단이 발생할 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
사용 가능한
virt-api
Pod 수를 확인합니다.$ oc get deployment -n $NAMESPACE virt-api \ -o jsonpath='{.status.readyReplicas}'
오류 조건을 확인하려면
virt-api
배포 상태를 확인합니다.$ oc -n $NAMESPACE get deploy virt-api -o yaml
NotReady
상태의 노드와 같은 문제가 있는지 노드에서 확인합니다.$ oc get nodes
완화 방법
근본 원인을 식별하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.24. LowVirtControllersCount
의미
이 경고는 낮은 수의 virt-controller
Pod가 감지되면 실행됩니다. 고가용성을 위해 하나 이상의 virt-controller
Pod를 사용할 수 있어야 합니다. 기본 복제본 수는 2입니다.
virt-controller
장치는 VMI(가상 머신 인스턴스)의 CRD(사용자 정의 리소스 정의)를 모니터링하고 관련 Pod를 관리합니다. 장치는 VMI에 대한 Pod를 생성하고 Pod의 라이프사이클을 관리합니다. 장치는 클러스터 전체 가상화 기능에 중요합니다.
보안 등급
OpenShift Virtualization의 대응성이 부정적인 영향을 받을 수 있습니다. 예를 들어 특정 요청이 누락될 수 있습니다.
또한 다른 virt-launcher
인스턴스가 예기치 않게 종료되면 OpenShift Virtualization이 완전히 응답하지 않을 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
실행 중인
virt-controller
pod를 사용할 수 있는지 확인합니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-controller
virt-launcher
로그에 오류 메시지가 있는지 확인합니다.$ oc -n $NAMESPACE logs <virt-launcher>
virt-launcher
Pod의 세부 정보를 가져와 예기치 않은 종료 또는NotReady
상태와 같은 상태 조건을 확인합니다.$ oc -n $NAMESPACE describe pod/<virt-launcher>
완화 방법
이 경고에는 다음을 포함하여 다양한 원인이 있을 수 있습니다.
- 클러스터에 메모리가 충분하지 않음
- 노드가 다운됨
- API 서버가 과부하됩니다. 예를 들어 스케줄러는 많은 부하가 있을 수 있으므로 완전히 사용할 수 없습니다.
- 네트워킹 문제
근본 원인을 확인하고 가능한 경우 수정합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.25. LowVirtOperatorCount
의미
이 경고는 Ready
상태의 하나의 virt-operator
Pod만 지난 60분 동안 실행 중인 경우 실행됩니다.
virt-operator
는 클러스터에서 시작하는 첫 번째 Operator입니다. 주요 책임은 다음과 같습니다.
- 클러스터 설치, 실시간 업그레이드
-
virt-controller
,virt-handler
,virt-launcher
와 같은 최상위 컨트롤러의 라이프사이클 모니터링 및 조정 관리 - 인증서 교체 및 인프라 관리와 같은 특정 클러스터 전체 작업
보안 등급
virt-operator
는 배포에 HA(고가용성)를 제공할 수 없습니다. HA에는 Ready
상태의 두 개 이상의 virt-operator
Pod가 필요합니다. 기본 배포는 두 개의 pod입니다.
virt-operator
는 클러스터의 VM(가상 머신)을 직접 처리하지 않습니다. 따라서 가용성 감소는 VM 워크로드에 크게 영향을 미치지 않습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-operator
Pod의 상태를 확인합니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-operator
영향을 받는
virt-operator
Pod의 로그를 확인합니다.$ oc -n $NAMESPACE logs <virt-operator>
영향을 받는
virt-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pod <virt-operator>
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 Diagnosis 절차 중에 수집된 아티팩트를 연결합니다.
12.6.26. NetworkAddonsConfigNotReady
의미
이 경고는 CNAO(Cluster Network Addons Operator)의 NetworkAddonsConfig
CR(사용자 정의 리소스)이 준비되지 않은 경우 실행됩니다.
CNAO는 클러스터에 추가 네트워킹 구성 요소를 배포합니다. 이 경고는 배포된 구성 요소 중 하나가 준비되지 않았음을 나타냅니다.
보안 등급
네트워크 기능이 영향을 받습니다.
진단
NetworkAddonsConfig
CR의 상태 조건을 확인하여 준비되지 않은 배포 또는 데몬 세트를 확인합니다.$ oc get networkaddonsconfig \ -o custom-columns="":.status.conditions[*].message
출력 예
DaemonSet "cluster-network-addons/macvtap-cni" update is being processed...
구성 요소의 Pod에 오류가 있는지 확인합니다.
$ oc -n cluster-network-addons get daemonset <pod> -o yaml
구성 요소의 로그를 확인합니다.
$ oc -n cluster-network-addons logs <pod>
오류 조건에 대한 구성 요소의 세부 정보를 확인합니다.
$ oc -n cluster-network-addons describe <pod>
완화 방법
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.27. NoLeadingVirtOperator
의미
이 경고는 virt-operator
Pod가 Ready
상태에 있어도 리더 리스가 10분 동안 탐지되지 않은 virt-operator
Pod가 없는 경우 실행됩니다. 경고는 리더 Pod를 사용할 수 없음을 나타냅니다.
virt-operator
는 클러스터에서 시작하는 첫 번째 Operator입니다. 주요 책임은 다음과 같습니다.
- 클러스터 설치, 실시간 업데이트 및 실시간 업그레이드
-
virt-controller
,virt-handler
,virt-launcher
와 같은 최상위 컨트롤러의 라이프사이클 모니터링 및 조정 관리 - 인증서 교체 및 인프라 관리와 같은 특정 클러스터 전체 작업
virt-operator
배포에는 두 개의 Pod의 기본 복제본이 있으며 하나의 Pod에는 리더 리스를 보유하고 있습니다.
보안 등급
이 경고는 클러스터 수준에서 실패를 나타냅니다. 결과적으로 컨트롤러의 인증 교체, 업그레이드 및 조정과 같은 중요한 클러스터 전체 관리 기능을 사용할 수 없을 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A -o \ custom-columns="":.metadata.namespace)"
virt-operator
Pod의 상태를 가져옵니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-operator
virt-operator
Pod 로그를 확인하여 리더 상태를 확인합니다.$ oc -n $NAMESPACE logs | grep lead
리더 Pod 예:
{"component":"virt-operator","level":"info","msg":"Attempting to acquire leader status","pos":"application.go:400","timestamp":"2021-11-30T12:15:18.635387Z"} I1130 12:15:18.635452 1 leaderelection.go:243] attempting to acquire leader lease <namespace>/virt-operator... I1130 12:15:19.216582 1 leaderelection.go:253] successfully acquired lease <namespace>/virt-operator {"component":"virt-operator","level":"info","msg":"Started leading", "pos":"application.go:385","timestamp":"2021-11-30T12:15:19.216836Z"}
Leader가 아닌 Pod의 예:
{"component":"virt-operator","level":"info","msg":"Attempting to acquire leader status","pos":"application.go:400","timestamp":"2021-11-30T12:15:20.533696Z"} I1130 12:15:20.533792 1 leaderelection.go:243] attempting to acquire leader lease <namespace>/virt-operator...
영향을 받는
virt-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pod <virt-operator>
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 찾아 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.28. NoReadyVirtController
의미
이 경고는 사용 가능한 virt-controller
장치가 5분 동안 감지되지 않은 경우 실행됩니다.
virt-controller
장치는 VMI(가상 머신 인스턴스)의 사용자 정의 리소스 정의를 모니터링하고 관련 Pod를 관리합니다. 장치는 VMI에 대한 Pod를 생성하고 Pod의 라이프사이클을 관리합니다.
따라서 virt-controller
장치는 모든 클러스터 전체 가상화 기능에 중요합니다.
보안 등급
VM 라이프사이클 관리와 관련된 모든 작업이 실패합니다. 여기에는 새 VMI를 시작하거나 기존 VMI를 종료하는 작업이 포함됩니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-controller
장치 수를 확인합니다.$ oc get deployment -n $NAMESPACE virt-controller \ -o jsonpath='{.status.readyReplicas}'
virt-controller
배포의 상태를 확인합니다.$ oc -n $NAMESPACE get deploy virt-controller -o yaml
virt-controller
배포의 세부 정보를 가져와서 Pod 충돌 또는 이미지 가져오기 실패와 같은 상태 조건을 확인합니다.$ oc -n $NAMESPACE describe deploy virt-controller
virt-controller
Pod의 세부 정보를 가져옵니다.$ get pods -n $NAMESPACE | grep virt-controller
virt-controller
Pod의 로그에서 오류 메시지를 확인합니다.$ oc logs -n $NAMESPACE <virt-controller>
NotReady
상태와 같은 문제가 있는지 노드를 확인합니다.$ oc get nodes
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 찾아 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.29. NoReadyVirtOperator
의미
이 경고는 Ready
상태의 virt-operator
Pod가 10분 동안 탐지되지 않은 경우 실행됩니다.
virt-operator
는 클러스터에서 시작하는 첫 번째 Operator입니다. 주요 책임은 다음과 같습니다.
- 클러스터 설치, 실시간 업그레이드
-
virt-controller
,virt-handler
,virt-launcher
와 같은 최상위 컨트롤러의 라이프 사이클 모니터링 및 조정 관리 - 인증서 교체 및 인프라 관리와 같은 특정 클러스터 전체 작업
기본 배포는 두 개의 virt-operator
Pod입니다.
보안 등급
이 경고는 클러스터 수준 실패를 나타냅니다. 컨트롤러의 인증 교체, 업그레이드 및 조정과 같은 중요한 클러스터 관리 기능을 사용할 수 없을 수 있습니다.
virt-operator
는 클러스터의 가상 머신을 직접 처리하지 않습니다. 따라서 일시적인 사용 불가는 워크로드에 크게 영향을 미치지 않습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-operator
배포의 이름을 가져옵니다.$ oc -n $NAMESPACE get deploy virt-operator -o yaml
virt-operator
배포에 대한 설명을 생성합니다.$ oc -n $NAMESPACE describe deploy virt-operator
NotReady
상태와 같은 노드 문제를 확인합니다.$ oc get nodes
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 Diagnosis 절차 중에 수집된 아티팩트를 연결합니다.
12.6.30. OrphanedVirtualMachineInstances
의미
이 경고는 VMI(가상 머신 인스턴스) 또는 virt-launcher
Pod가 실행 중인 virt-handler
Pod가 없는 노드에서 실행될 때 실행됩니다. 이러한 VMI를 고립된 이라고 합니다.
보안 등급
분리된 VMI는 관리할 수 없습니다.
진단
virt-handler
Pod의 상태를 확인하여 실행 중인 노드를 확인합니다.$ oc get pods --all-namespaces -o wide -l kubevirt.io=virt-handler
VMI의 상태를 확인하여 실행 중인
virt-handler
Pod가 없는 노드에서 실행 중인 VMI를 확인합니다.$ oc get vmis --all-namespaces
virt-handler
데몬의 상태를 확인합니다.$ oc get daemonset virt-handler --all-namespaces
출력 예
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE ... virt-handler 2 2 2 2 2 ...
Desired
,Ready
및Available
열에 동일한 값이 포함된 경우 데몬 세트가 정상으로 간주됩니다.virt-handler
데몬 세트가 정상이 아닌 경우 Pod 배포 문제가 있는지virt-handler
데몬 세트를 확인합니다.$ oc get daemonset virt-handler --all-namespaces -o yaml | jq .status
NotReady
상태와 같은 문제가 있는지 노드에서 확인합니다.$ oc get nodes
워크로드 배치 정책에 대해
KubeVirt
CR(사용자 정의 리소스)의spec.workloads
스탠자를 확인합니다.$ oc get kubevirt kubevirt --all-namespaces -o yaml
완화 방법
워크로드 배치 정책이 구성된 경우 VMI가 있는 노드를 정책에 추가합니다.
노드에서 virt-handler
Pod를 제거할 수 있는 경우 노드의 테인트 및 허용 오차 또는 Pod의 스케줄링 규칙 변경 사항이 포함됩니다.
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.31. OutdatedVirtualMachineInstanceWorkloads
의미
이 경고는 OpenShift Virtualization 컨트롤 플레인을 업데이트한 후 24시간 후에 오래된 virt-launcher
Pod에서 VMI(가상 머신 인스턴스)를 실행할 때 발생합니다.
보안 등급
오래된 VMI가 새로운 OpenShift Virtualization 기능에 액세스하지 못할 수 있습니다.
오래된 VMI에는 virt-launcher
Pod 업데이트와 관련된 보안 수정 사항이 제공되지 않습니다.
진단
오래된 VMI를 확인합니다.
$ oc get vmi -l kubevirt.io/outdatedLauncherImage --all-namespaces
KubeVirt
CR(사용자 정의 리소스)을 확인하여workloadUpdateStrategy
스탠자에workloadUpdateMethods
가 구성되었는지 확인합니다.$ oc get kubevirt --all-namespaces -o yaml
각 오래된 VMI를 확인하여 라이브 업그레이드 가능한지 확인합니다.
$ oc get vmi <vmi> -o yaml
출력 예
apiVersion: kubevirt.io/v1 kind: VirtualMachineInstance # ... status: conditions: - lastProbeTime: null lastTransitionTime: null message: cannot migrate VMI which does not use masquerade to connect to the pod network reason: InterfaceNotLiveMigratable status: "False" type: LiveMigratable
완화 방법
자동화된 워크로드 업데이트 구성
HyperConverged
CR을 업데이트하여 자동 워크로드 업데이트를 활성화합니다.
실시간이 아닌 VMI와 연결된 VM 중지
VMI가 활성 상태가 아니며
runStrategy: always
가 해당VirtualMachine
오브젝트에 설정된 경우 VM(가상 머신)을 수동으로 중지하여 VMI를 업데이트할 수 있습니다.$ virctl stop --namespace <namespace> <vm>
중지된 VMI를 교체하기 위해 업데이트된 virt-launcher
Pod에서 새 VMI가 즉시 실행됩니다. 이는 재시작 작업과 동일합니다.
실시간 업그레이드할 수 있는 VM을 수동으로 중지하는 것은 안전하지 않으며 워크로드가 중단되므로 권장되지 않습니다.
실시간 업그레이드할 수 있는 VMI 마이그레이션
VMI가 Live-migratable인 경우 실행 중인 특정 VMI를 대상으로 하는 VirtualMachineInstanceMigration
오브젝트를 생성하여 업데이트할 수 있습니다. VMI가 업데이트된 virt-launcher
Pod로 마이그레이션됩니다.
VirtualMachineInstanceMigration
매니페스트를 생성하여migration.yaml
로 저장합니다.apiVersion: kubevirt.io/v1 kind: VirtualMachineInstanceMigration metadata: name: <migration_name> namespace: <namespace> spec: vmiName: <vmi_name>
마이그레이션을 트리거할
VirtualMachineInstanceMigration
오브젝트를 생성합니다.$ oc create -f migration.yaml
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.32. SingleStackIPv6Unsupported
의미
이 경고는 단일 스택 IPv6 클러스터에 OpenShift Virtualization을 설치할 때 발생합니다.
보안 등급
가상 머신을 생성할 수 없습니다.
진단
다음 명령을 실행하여 클러스터 네트워크 구성을 확인합니다.
$ oc get network.config cluster -o yaml
출력에는 클러스터 네트워크의 IPv6 CIDR만 표시됩니다.
출력 예
apiVersion: config.openshift.io/v1 kind: Network metadata: name: cluster spec: clusterNetwork: - cidr: fd02::/48 hostPrefix: 64
완화 방법
단일 스택 IPv4 클러스터 또는 듀얼 스택 IPv4/IPv6 클러스터에 OpenShift Virtualization을 설치합니다.
12.6.33. SSPCommonTemplatesModificationReverted
의미
이 경고는 스케줄링, 스케일 및 성능(SSP) Operator가 조정 절차의 일부로 공통 템플릿에 대한 변경 사항을 되돌릴 때 실행됩니다.
SSP Operator는 공통 템플릿 및 Template Validator를 배포하고 조정합니다. 사용자 또는 스크립트가 공통 템플릿을 변경하면 SSP Operator에서 변경 사항을 되돌립니다.
보안 등급
공통 템플릿에 대한 변경 사항을 덮어씁니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get deployment -A | grep ssp-operator | \ awk '{print $1}')"
되돌리는 변경 사항이 있는 템플릿에 대해
ssp-operator
로그를 확인합니다.$ oc -n $NAMESPACE logs --tail=-1 -l control-plane=ssp-operator | \ grep 'common template' -C 3
완화 방법
변경 사항의 원인을 확인하고 해결하십시오.
템플릿 자체가 아닌 템플릿 복사본에만 변경 사항이 적용되었는지 확인합니다.
12.6.34. SSPDown
의미
이 경고는 모든 스케줄링, 스케일 및 성능(SSP) Operator Pod가 다운되면 실행됩니다.
SSP Operator는 공통 템플릿 및 템플릿 유효성 검사기를 배포 및 조정합니다.
보안 등급
종속 구성 요소가 배포되지 않을 수 있습니다. 구성 요소의 변경 사항이 조정되지 않을 수 있습니다. 따라서 실패하는 경우 공통 템플릿 및/또는 Template Validator가 업데이트되지 않거나 재설정되지 않을 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get deployment -A | grep ssp-operator | \ awk '{print $1}')"
ssp-operator
Pod의 상태를 확인합니다.$ oc -n $NAMESPACE get pods -l control-plane=ssp-operator
ssp-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pods -l control-plane=ssp-operator
ssp-operator
로그에 오류 메시지가 있는지 확인합니다.$ oc -n $NAMESPACE logs --tail=-1 -l control-plane=ssp-operator
완화 방법
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.35. SSPFailingToReconcile
의미
이 경고는 SSP Operator가 실행 중인 경우에도 스케줄링, 스케일 및 성능(SSP) Operator의 조정 주기가 반복적으로 실패할 때 발생합니다.
SSP Operator는 공통 템플릿 및 템플릿 유효성 검사기를 배포 및 조정합니다.
보안 등급
종속 구성 요소가 배포되지 않을 수 있습니다. 구성 요소의 변경 사항이 조정되지 않을 수 있습니다. 따라서 실패하는 경우 공통 템플릿 또는 Template Validator가 업데이트되지 않거나 재설정되지 않을 수 있습니다.
진단
NAMESPACE
환경 변수를 내보냅니다.$ export NAMESPACE="$(oc get deployment -A | grep ssp-operator | \ awk '{print $1}')"
ssp-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pods -l control-plane=ssp-operator
ssp-operator
로그에 오류가 있는지 확인합니다.$ oc -n $NAMESPACE logs --tail=-1 -l control-plane=ssp-operator
virt-template-validator
Pod의 상태를 가져옵니다.$ oc -n $NAMESPACE get pods -l name=virt-template-validator
virt-template-validator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pods -l name=virt-template-validator
virt-template-validator
로그에 오류가 있는지 확인합니다.$ oc -n $NAMESPACE logs --tail=-1 -l name=virt-template-validator
완화 방법
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.36. SSPHighRateRejectedVms
의미
이 경고는 잘못된 구성을 사용하여 사용자 또는 스크립트가 많은 VM(가상 머신)을 생성하거나 수정하려고 할 때 실행됩니다.
보안 등급
VM이 생성되거나 수정되지 않습니다. 결과적으로 환경이 예상대로 작동하지 않을 수 있습니다.
진단
NAMESPACE
환경 변수를 내보냅니다.$ export NAMESPACE="$(oc get deployment -A | grep ssp-operator | \ awk '{print $1}')"
virt-template-validator
로그에 원인을 나타낼 수 있는 오류가 있는지 확인합니다.$ oc -n $NAMESPACE logs --tail=-1 -l name=virt-template-validator
출력 예
{"component":"kubevirt-template-validator","level":"info","msg":"evalution summary for ubuntu-3166wmdbbfkroku0:\nminimal-required-memory applied: FAIL, value 1073741824 is lower than minimum [2147483648]\n\nsucceeded=false", "pos":"admission.go:25","timestamp":"2021-09-28T17:59:10.934470Z"}
완화 방법
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.37. SSPTemplateValidatorDown
의미
이 경고는 모든 Template Validator Pod가 종료되면 실행됩니다.
Template Validator는 VM(가상 머신)이 템플릿을 위반하지 않는지 확인합니다.
보안 등급
VM은 해당 템플릿에 대해 검증되지 않습니다. 결과적으로 해당 워크로드와 일치하지 않는 사양을 사용하여 VM을 생성할 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get deployment -A | grep ssp-operator | \ awk '{print $1}')"
virt-template-validator
Pod의 상태를 가져옵니다.$ oc -n $NAMESPACE get pods -l name=virt-template-validator
virt-template-validator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pods -l name=virt-template-validator
virt-template-validator
로그에 오류 메시지가 있는지 확인합니다.$ oc -n $NAMESPACE logs --tail=-1 -l name=virt-template-validator
완화 방법
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.38. 지원되지 않는HCOModification
의미
이 경고는 JSON Patch 주석을 사용하여 HyperConverged Cluster Operator(HCO)의 피연산자를 변경할 때 발생합니다.
HCO는 OpenShift Virtualization 및 해당 지원 Operator를 의견으로 구성하고 예기치 않은 변경이 있을 때 해당 피연산자를 덮어씁니다. 사용자는 피연산자를 직접 수정할 수 없습니다.
그러나 HCO API에서 변경이 필요하며 HCO API에서 지원하지 않는 경우 JSON Patch 주석을 사용하여 HCO에서 Operator 변경 사항을 설정할 수 있습니다. 이러한 변경 사항은 조정 과정에서 HCO에 의해 반환되지 않습니다.
보안 등급
JSON Patch 주석을 잘못 사용하면 예기치 않은 결과 또는 불안정한 환경이 발생할 수 있습니다.
구성 요소 사용자 정의 리소스의 구조가 변경될 수 있으므로 JSON Patch 주석을 사용하여 시스템을 업그레이드하는 것은 위험합니다.
진단
경고 세부 정보에서
annotations_name을
확인하여 JSON Patch 주석을 확인합니다.Labels alertname=KubevirtHyperconvergedClusterOperatorUSModification annotation_name=kubevirt.kubevirt.io/jsonpatch severity=info
완화 방법
HCO API를 사용하여 피연산자를 변경하는 것이 가장 좋습니다. 그러나 JSON Patch 주석으로만 변경할 수 있는 경우 주의하십시오.
잠재적인 문제를 방지하기 위해 업그레이드 전에 JSON Patch 주석을 제거합니다.
12.6.39. VirtAPIDown
의미
이 경고는 모든 API 서버 Pod가 종료되면 실행됩니다.
보안 등급
OpenShift Virtualization 오브젝트는 API 호출을 보낼 수 없습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-api
Pod의 상태를 확인합니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-api
virt-api
배포의 상태를 확인합니다.$ oc -n $NAMESPACE get deploy virt-api -o yaml
Pod 충돌 또는 이미지 가져오기 실패와 같은 문제에 대한
virt-api
배포 세부 정보를 확인합니다.$ oc -n $NAMESPACE describe deploy virt-api
NotReady
상태의 노드와 같은 문제가 있는지 확인합니다.$ oc get nodes
완화 방법
근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.40. VirtApiRESTErrorsBurst
의미
지난 5분 동안 virt-api
Pod에서 REST 호출의 80% 이상이 실패했습니다.
보안 등급
virt-api
에 대한 실패한 REST 호출의 매우 높은 속도로 인해 API 호출이 느려지고 API 호출이 완전히 중단될 수 있습니다.
그러나 현재 실행 중인 가상 머신 워크로드는 영향을 받지 않습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
배포에서
virt-api
Pod 목록을 가져옵니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-api
virt-api
로그에 오류 메시지가 있는지 확인합니다.$ oc logs -n $NAMESPACE <virt-api>
virt-api
Pod의 세부 정보를 가져옵니다.$ oc describe -n $NAMESPACE <virt-api>
노드에서 문제가 있는지 확인합니다. 예를 들어
NotReady
상태에 있을 수 있습니다.$ oc get nodes
virt-api
배포의 상태를 확인합니다.$ oc -n $NAMESPACE get deploy virt-api -o yaml
virt-api
배포의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe deploy virt-api
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.41. VirtApiRESTErrorsHigh
의미
지난 60분 동안 virt-api
Pod에서 REST 호출의 5 % 이상이 실패했습니다.
보안 등급
virt-api
에 대한 실패한 REST 호출 속도가 길어지면 API 호출의 응답 및 실행 속도가 느려질 수 있습니다.
그러나 현재 실행 중인 가상 머신 워크로드는 영향을 받지 않습니다.
진단
NAMESPACE
환경 변수를 다음과 같이 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-api
Pod의 상태를 확인합니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-api
virt-api
로그를 확인합니다.$ oc logs -n $NAMESPACE <virt-api>
virt-api
Pod의 세부 정보를 가져옵니다.$ oc describe -n $NAMESPACE <virt-api>
노드에서 문제가 있는지 확인합니다. 예를 들어
NotReady
상태에 있을 수 있습니다.$ oc get nodes
virt-api
배포의 상태를 확인합니다.$ oc -n $NAMESPACE get deploy virt-api -o yaml
virt-api
배포의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe deploy virt-api
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.42. VirtControllerDown
의미
5분 동안 실행 중인 virt-controller
Pod가 탐지되지 않았습니다.
보안 등급
VM(가상 머신) 라이프사이클 관리와 관련된 모든 작업이 실패합니다. 여기에는 새로운 VMI(가상 머신 인스턴스) 시작 또는 기존 VMI 종료가 포함됩니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-controller
배포의 상태를 확인합니다.$ oc get deployment -n $NAMESPACE virt-controller -o yaml
virt-controller
Pod의 로그를 확인합니다.$ oc get logs <virt-controller>
완화 방법
이 경고에는 다음을 포함하여 다양한 원인이 있을 수 있습니다.
- 노드 리소스 소진
- 클러스터에 메모리가 충분하지 않음
- 노드가 다운됨
- API 서버가 과부하됩니다. 예를 들어 스케줄러는 많은 부하가 있을 수 있으므로 완전히 사용할 수 없습니다.
- 네트워킹 문제
근본 원인을 확인하고 가능한 경우 수정합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.43. VirtControllerRESTErrorsBurst
의미
virt-controller
Pod에서 REST 호출의 80% 이상이 지난 5분 동안 실패했습니다.
virt-controller
가 API 서버에 대한 연결이 완전히 손실되었을 가능성이 큽니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 메트릭을 확인하고 응답 시간 및 전체 호출을 확인합니다.
-
virt-controller
pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
상태 업데이트는 전파되지 않으며 마이그레이션과 같은 작업이 수행될 수 없습니다. 그러나 실행 중인 워크로드는 영향을 받지 않습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
사용 가능한
virt-controller
Pod를 나열합니다.$ oc get pods -n $NAMESPACE -l=kubevirt.io=virt-controller
API 서버에 연결할 때
virt-controller
로그에서 오류 메시지가 있는지 확인합니다.$ oc logs -n $NAMESPACE <virt-controller>
완화 방법
virt-controller
Pod가 API 서버에 연결할 수 없는 경우 Pod를 삭제하여 강제로 다시 시작합니다.$ oc delete -n $NAMESPACE <virt-controller>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.44. VirtControllerRESTErrorsHigh
의미
지난 60분 동안 virt-controller
에서 REST 호출의 5 % 이상이 실패했습니다.
이는 virt-controller
가 API 서버에 대한 연결이 부분적으로 손실되었기 때문에 가장 가능성이 높습니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 메트릭을 확인하고 응답 시간 및 전체 호출을 확인합니다.
-
virt-controller
pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
가상 머신 시작 및 마이그레이션 및 예약과 같은 노드 관련 작업이 지연됩니다. 실행 중인 워크로드는 영향을 받지 않지만 현재 상태를 보고하는 작업이 지연될 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
사용 가능한
virt-controller
Pod를 나열합니다.$ oc get pods -n $NAMESPACE -l=kubevirt.io=virt-controller
API 서버에 연결할 때
virt-controller
로그에서 오류 메시지가 있는지 확인합니다.$ oc logs -n $NAMESPACE <virt-controller>
완화 방법
virt-controller
Pod가 API 서버에 연결할 수 없는 경우 Pod를 삭제하여 강제로 다시 시작합니다.$ oc delete -n $NAMESPACE <virt-controller>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.45. VirtHandlerDaemonSetRolloutFailing
의미
virt-handler
데몬 세트는 15분 후에 하나 이상의 작업자 노드에 배포하지 못했습니다.
보안 등급
이 경고는 경고입니다. 모든 virt-handler
데몬 세트가 배포되지 않았음을 나타내는 것은 아닙니다. 따라서 클러스터가 과부하되지 않는 한 가상 머신의 일반 라이프사이클은 영향을 받지 않습니다.
진단
실행 중인 virt-handler
Pod가 없는 작업자 노드를 식별합니다.
NAMESPACE
환경 변수를 내보냅니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-handler
Pod의 상태를 확인하여 배포되지 않은 Pod를 식별합니다.$ oc get pods -n $NAMESPACE -l=kubevirt.io=virt-handler
virt-handler
Pod의 작업자 노드의 이름을 가져옵니다.$ oc -n $NAMESPACE get pod <virt-handler> -o jsonpath='{.spec.nodeName}'
완화 방법
리소스가 부족하여 virt-handler
Pod가 배포되지 않은 경우 영향을 받는 작업자 노드에서 다른 Pod를 삭제할 수 있습니다.
12.6.46. VirtHandlerRESTErrorsBurst
의미
지난 5분 동안 virt-handler
에서 REST 호출의 80% 이상이 실패했습니다. 이 경고는 일반적으로 virt-handler
Pod가 API 서버에 연결할 수 없음을 나타냅니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 메트릭을 확인하고 응답 시간 및 전체 호출을 확인합니다.
-
virt-handler
Pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
상태 업데이트는 전파되지 않으며 마이그레이션과 같은 노드 관련 작업이 실패합니다. 그러나 영향을 받는 노드에서 워크로드를 실행하는 것은 영향을 받지 않습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-handler
Pod의 상태를 확인합니다.$ oc get pods -n $NAMESPACE -l=kubevirt.io=virt-handler
API 서버에 연결할 때
virt-handler
로그에 오류 메시지가 있는지 확인합니다.$ oc logs -n $NAMESPACE <virt-handler>
완화 방법
virt-handler
가 API 서버에 연결할 수 없는 경우 Pod를 삭제하여 강제로 다시 시작합니다.$ oc delete -n $NAMESPACE <virt-handler>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.47. VirtHandlerRESTErrorsHigh
의미
지난 60분 동안 virt-handler
에서 REST 호출의 5 % 이상이 실패했습니다. 이 경고는 일반적으로 virt-handler
Pod가 API 서버에 대한 연결이 부분적으로 손실되었음을 나타냅니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 메트릭을 확인하고 응답 시간 및 전체 호출을 확인합니다.
-
virt-handler
Pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
워크로드 시작 및 마이그레이션과 같은 노드 관련 작업은 virt-handler
가 실행 중인 노드에서 지연됩니다. 실행 중인 워크로드는 영향을 받지 않지만 현재 상태를 보고하는 작업이 지연될 수 있습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-handler
Pod의 상태를 확인합니다.$ oc get pods -n $NAMESPACE -l=kubevirt.io=virt-handler
API 서버에 연결할 때
virt-handler
로그에 오류 메시지가 있는지 확인합니다.$ oc logs -n $NAMESPACE <virt-handler>
완화 방법
virt-handler
가 API 서버에 연결할 수 없는 경우 Pod를 삭제하여 강제로 다시 시작합니다.$ oc delete -n $NAMESPACE <virt-handler>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.48. VirtOperatorDown
의미
이 경고는 Running
상태의 virt-operator
Pod가 10분 동안 탐지되지 않은 경우 실행됩니다.
virt-operator
는 클러스터에서 시작하는 첫 번째 Operator입니다. 주요 책임은 다음과 같습니다.
- 클러스터 설치, 실시간 업그레이드
-
virt-controller
,virt-handler
,virt-launcher
와 같은 최상위 컨트롤러의 라이프 사이클 모니터링 및 조정 관리 - 인증서 교체 및 인프라 관리와 같은 특정 클러스터 전체 작업
virt-operator
배포에는 두 개의 Pod의 기본 복제본이 있습니다.
보안 등급
이 경고는 클러스터 수준에서 실패를 나타냅니다. 컨트롤러의 인증 교체, 업그레이드 및 조정과 같은 중요한 클러스터 전체 관리 기능을 사용할 수 없을 수 있습니다.
virt-operator
는 클러스터의 VM(가상 머신)을 직접 처리하지 않습니다. 따라서 임시 사용할 수 없는 경우 VM 워크로드에 크게 영향을 미치지 않습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-operator
배포의 상태를 확인합니다.$ oc -n $NAMESPACE get deploy virt-operator -o yaml
virt-operator
배포의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe deploy virt-operator
virt-operator
Pod의 상태를 확인합니다.$ oc get pods -n $NAMESPACE -l=kubevirt.io=virt-operator
NotReady
상태와 같은 노드 문제를 확인합니다.$ oc get nodes
완화 방법
진단 절차 중에 얻은 정보를 기반으로 근본 원인을 찾아 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.49. VirtOperatorRESTErrorsBurst
의미
이 경고는 virt-operator
Pod의 REST 호출의 80% 이상이 지난 5분 동안 실패한 경우 실행됩니다. 일반적으로 virt-operator
pod가 API 서버에 연결할 수 없음을 나타냅니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 메트릭을 확인하고 응답 시간 및 전체 호출을 확인합니다.
-
virt-operator
pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
업그레이드 및 컨트롤러 조정과 같은 클러스터 수준 작업을 사용할 수 없을 수 있습니다.
그러나 VM(가상 머신) 및 VMI(VM 인스턴스)와 같은 워크로드는 영향을 받을 수 없습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-operator
Pod의 상태를 확인합니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-operator
API 서버에 연결할 때
virt-operator
로그에서 오류 메시지를 확인합니다.$ oc -n $NAMESPACE logs <virt-operator>
virt-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pod <virt-operator>
완화 방법
virt-operator
Pod가 API 서버에 연결할 수 없는 경우 Pod를 삭제하여 강제로 다시 시작합니다.$ oc delete -n $NAMESPACE <virt-operator>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.50. VirtOperatorRESTErrorsHigh
의미
이 경고는 virt-operator
Pod의 REST 호출의 5% 이상이 지난 60분 동안 실패한 경우 실행됩니다. 일반적으로 virt-operator
pod가 API 서버에 연결할 수 없음을 나타냅니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 메트릭을 확인하고 응답 시간 및 전체 호출을 확인합니다.
-
virt-operator
pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
업그레이드 및 컨트롤러 조정과 같은 클러스터 수준 작업이 지연될 수 있습니다.
그러나 VM(가상 머신) 및 VMI(VM 인스턴스)와 같은 워크로드는 영향을 받을 수 없습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-operator
Pod의 상태를 확인합니다.$ oc -n $NAMESPACE get pods -l kubevirt.io=virt-operator
API 서버에 연결할 때
virt-operator
로그에서 오류 메시지를 확인합니다.$ oc -n $NAMESPACE logs <virt-operator>
virt-operator
Pod의 세부 정보를 가져옵니다.$ oc -n $NAMESPACE describe pod <virt-operator>
완화 방법
virt-operator
Pod가 API 서버에 연결할 수 없는 경우 Pod를 삭제하여 강제로 다시 시작합니다.$ oc delete -n $NAMESPACE <virt-operator>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.
12.6.51. VMCannotBeEvicted
의미
이 경고는 VM(가상 머신)의 제거 전략이 LiveMigration
으로 설정되어 있지만 VM이 편두되지 않을 때 발생합니다.
보안 등급
조각할 수 없는 VM은 노드 제거를 방지합니다. 이 조건은 노드 드레이닝 및 업데이트와 같은 작업에 영향을 미칩니다.
진단
VMI 구성을 확인하여
evictionStrategy
값이LiveMigrate
:인지 확인합니다.$ oc get vmis -o yaml
LIVE-MIGRA
Cryostat 열에서False
상태를 확인하여 편두할 수 없는 VMI를 확인합니다.$ oc get vmis -o wide
VMI의 세부 정보를 가져오고
spec.conditions
를 확인하여 문제를 확인합니다.$ oc get vmi <vmi> -o yaml
출력 예
status: conditions: - lastProbeTime: null lastTransitionTime: null message: cannot migrate VMI which does not use masquerade to connect to the pod network reason: InterfaceNotLiveMigratable status: "False" type: LiveMigratable
완화 방법
VMI의 evictionStrategy
를 종료
하거나 VMI가 마이그레이션되지 않도록 문제를 해결합니다.
12.6.52. VMStorageClassWarning
의미
이 경고는 스토리지 클래스가 잘못 구성된 경우 실행됩니다. 시스템 전체 공유 dummy 페이지에서는 여러 프로세스 또는 스레드에서 데이터를 작성하고 읽을 때 CRC 오류가 발생합니다.
보안 등급
많은 수의 CRC 오류로 인해 클러스터가 심각한 성능 저하를 표시할 수 있습니다.
진단
- 웹 콘솔에서 모니터링 → 메트릭 으로 이동합니다.
다음 PromQL 쿼리를 실행하여 스토리지 클래스가 잘못 구성된 가상 머신 목록을 가져옵니다.
kubevirt_ssp_vm_rbd_volume{rxbounce_enabled="false", volume_mode="Block"} == 1
출력에
rxbounce_enabled
없이 스토리지 클래스를 사용하는 가상 머신 목록이 표시됩니다.출력 예
kubevirt_ssp_vm_rbd_volume{name="testvmi-gwgdqp22k7", namespace="test_ns", pv_name="testvmi-gwgdqp22k7", rxbounce_enabled="false", volume_mode="Block"} 1
다음 명령을 실행하여 스토리지 클래스 이름을 가져옵니다.
$ oc get pv <pv_name> -o=jsonpath='{.spec.storageClassName}'
완화 방법
krbd:rxbounce
맵 옵션을 사용하여 기본 OpenShift Virtualization 스토리지 클래스를 생성합니다. 자세한 내용은 Windows VM용 ODF PersistentVolume 최적화 를 참조하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 연결합니다.