14.14. OpenShift Virtualization runbook
이러한 runbook의 프로시저를 사용하여 OpenShift Virtualization 경고를 트리거하는 문제를 진단하고 해결할 수 있습니다.
OpenShift Virtualization 경고는 가상화 > 개요 페이지에 표시됩니다.
14.14.1. CDIDataImportCronOutdated
meaning
이 경고는 DataImportCron
이 최신 디스크 이미지 버전을 폴링하거나 가져올 수 없는 경우 발생합니다.
DataImportCron
은 디스크 이미지를 폴링하고 최신 버전을 확인하고 이미지를 PVC(영구 볼륨 클레임)로 가져옵니다. 이 프로세스를 통해 PVC가 최신 버전으로 업데이트되므로 안정적인 복제 소스 또는 VM(가상 머신)의 골든 이미지로 사용할 수 있습니다.
golden 이미지의 경우 latest 는 배포의 최신 운영 체제를 나타냅니다. 기타 디스크 이미지의 경우 latest 는 사용 가능한 이미지의 최신 해시를 나타냅니다.
보안 등급
오래된 디스크 이미지에서 VM을 생성할 수 있습니다.
복제에 소스 PVC를 사용할 수 없기 때문에 VM이 시작되지 않을 수 있습니다.
진단
클러스터에 기본 스토리지 클래스가 있는지 확인합니다.
$ oc get sc
출력에는 기본 스토리지 클래스의 이름 옆에
(기본값)
스토리지 클래스가 표시됩니다.DataImportCron
이 golden 이미지를 폴링하고 가져오려면 클러스터 또는DataImportCron
사양에서 기본 스토리지 클래스를 설정해야 합니다. 스토리지 클래스가 정의되지 않은 경우 DataVolume 컨트롤러에서 PVC를 생성하지 못하고 다음 이벤트가 표시됩니다. DataVolume.storage 사양은 accessMode이고 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}]'
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.2. CDIDataVolumeUnusualRestartCount
meaning
이 경고는 DataVolume
오브젝트가 세 번 이상 재시작될 때 실행됩니다.
보안 등급
데이터 볼륨은 영구 볼륨 클레임에서 가상 머신 디스크를 가져오고 생성합니다. 데이터 볼륨이 세 번 이상 다시 시작되면 이러한 작업이 성공할 가능성이 없습니다. 문제를 진단하고 해결해야 합니다.
진단
데이터 볼륨의 이름과 네임스페이스를 가져옵니다.
$ oc get dv -A -o json | jq -r '.items[] | \ select(.status.restartCount>3)' | jq '.metadata.name, .metadata.namespace'
데이터 볼륨과 연결된 Pod의 상태를 확인합니다.
$ oc get pods -n <namespace> -o json | jq -r '.items[] | \ select(.metadata.ownerReferences[] | \ select(.name=="<dv_name>")).metadata.name'
Pod의 세부 정보를 가져옵니다.
$ oc -n <namespace> describe pods <pod>
Pod 로그에 오류 메시지가 있는지 확인합니다.
$ oc -n <namespace> describe logs <pod>
완화 방법
데이터 볼륨을 삭제하고, 문제를 해결한 다음 새 데이터 볼륨을 생성합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.3. CDINotReady
meaning
이 경고는 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>
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.4. CDIOperatorDown
meaning
이 경고는 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
완화 방법
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.5. CDIStorageProfilesIncomplete
meaning
이 경고는 CDI(Containerized Data Importer) 스토리지 프로필이 불완전할 때 실행됩니다.
스토리지 프로필이 완료되지 않으면 CDI는 VM(가상 머신) 디스크를 생성하는 데 필요한 volumeMode
및 accessModes
와 같은 PVC(영구 볼륨 클레임) 필드를 추측할 수 없습니다.
보안 등급
CDI는 PVC에서 VM 디스크를 생성할 수 없습니다.
진단
불완전한 스토리지 프로필을 확인합니다.
$ oc get storageprofile <storage_class>
완화 방법
다음 예와 같이 누락된 스토리지 프로필 정보를 추가합니다.
$ oc patch storageprofile local --type=merge -p '{"spec": \ {"claimPropertySets": [{"accessModes": ["ReadWriteOnce"], \ "volumeMode": "Filesystem"}]}}'
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.6. CnaoDown
meaning
이 경고는 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
완화 방법
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.7. HPPNotReady
meaning
이 경고는 HPP(hostpath provisioner) 설치가 degraded 상태가 될 때 실행됩니다.
HPP는 hostpath 볼륨을 동적으로 프로비저닝하여 PVC(영구 볼륨 클레임)에 스토리지를 제공합니다.
보안 등급
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>
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.8. HPPOperatorDown
meaning
이 경고는 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
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.9. HPPSharingPoolPathWithOS
meaning
이 경고는 HPP(hostpath provisioner)에서 kubelet
또는 OS(운영 체제)와 같은 다른 중요한 구성 요소와 파일 시스템을 공유할 때 실행됩니다.
HPP는 hostpath 볼륨을 동적으로 프로비저닝하여 PVC(영구 볼륨 클레임)에 스토리지를 제공합니다.
보안 등급
공유 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
완화 방법
진단 섹션에서 얻은 데이터를 사용하여 풀 경로가 OS와 공유되지 않도록 합니다. 특정 단계는 노드 및 기타 상황에 따라 다릅니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.10. KubeMacPoolDown
meaning
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
완화 방법
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.11. KubeMacPoolDuplicateMacsFound
meaning
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>
14.14.12. KubeVirtComponentExceedsRequestedCPU
meaning
이 경고는 구성 요소의 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 요청 제한을 업데이트합니다.
14.14.13. KubeVirtComponentExceedsRequestedMemory
meaning
이 경고는 구성 요소의 메모리 사용량이 요청된 제한을 초과할 때 실행됩니다.
보안 등급
메모리 리소스 사용량이 최적이 아니며 노드에 과부하가 발생할 수 있습니다.
진단
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
사용자 정의 리소스에서 메모리 요청 제한을 업데이트합니다.
14.14.14. KubevirtHyperconvergedClusterOperatorCRModification
meaning
이 경고는 HyperConverged Cluster Operator(HCO)의 피연산자가 HCO가 아닌 다른 사람에 의해 변경될 때 실행됩니다.
HCO는 의견 있는 방식으로 OpenShift Virtualization 및 지원 Operator를 구성하고 예기치 않은 변경 사항이 있을 때 해당 피연산자를 덮어씁니다. 사용자는 피연산자를 직접 수정할 수 없습니다. HyperConverged
사용자 정의 리소스는 구성에 대한 정보의 소스입니다.
보안 등급
피연산자를 수동으로 변경하면 클러스터 구성이 변동하고 불안정해질 수 있습니다.
진단
경고 세부 사항에서
component_name
값을 확인하여 변경 중인 피연산자 종류(kubevirt
) 및 피연산자 이름(kubevirt-kubevirt-hyperconverged
)을 결정합니다.Labels alertname=KubevirtHyperconvergedClusterOperatorCRModification component_name=kubevirt/kubevirt-kubevirt-hyperconverged severity=warning
완화 방법
HCO 피연산자를 직접 변경하지 마십시오. HyperConverged
오브젝트를 사용하여 클러스터를 구성합니다.
피연산자가 수동으로 변경되지 않으면 10분 후에 경고가 자동으로 해결됩니다.
14.14.15. KubevirtHyperconvergedClusterOperatorInstallationNotCompletedAlert
meaning
이 경고는 HyperConverged Cluster Operator(HCO)가 HyperConverged
CR(사용자 정의 리소스) 없이 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를 제거합니다. 제거 프로세스가 계속 실행되는 경우 경고를 취소하기 위해 해당 문제를 해결해야 합니다.
14.14.16. KubevirtHyperconvergedClusterOperatorUSModification
meaning
이 경고는 HyperConverged Cluster Operator(HCO)의 피연산자를 변경하는 데 JSON Patch 주석을 사용할 때 실행됩니다.
HCO는 의견 있는 방식으로 OpenShift Virtualization 및 지원 Operator를 구성하고 예기치 않은 변경 사항이 있을 때 해당 피연산자를 덮어씁니다. 사용자는 피연산자를 직접 수정할 수 없습니다.
그러나 변경이 필요하며 HCO API에서 지원되지 않는 경우 JSON 패치 주석을 사용하여 HCO에서 Operator 변경을 설정할 수 있습니다. 이러한 변경 사항은 조정 프로세스 중에 HCO에서 되돌릴 수 없습니다.
보안 등급
JSON 패치 주석을 잘못 사용하면 예기치 않은 결과가 발생하거나 불안정한 환경이 발생할 수 있습니다.
구성 요소 사용자 정의 리소스의 구조가 변경될 수 있으므로 JSON 패치 주석을 사용하여 시스템을 업그레이드하는 것은 위험합니다.
진단
경고 세부 사항에서
annotations_name
을 확인하여 JSON Patch 주석을 확인합니다.Labels alertname=KubevirtHyperconvergedClusterOperatorUSModification annotation_name=kubevirt.kubevirt.io/jsonpatch severity=info
완화 방법
HCO API를 사용하여 피연산자를 변경하는 것이 가장 좋습니다. 그러나 JSON Patch 주석만 변경할 수 있는 경우 신중하게 진행합니다.
잠재적인 문제를 방지하기 위해 업그레이드하기 전에 JSON 패치 주석을 제거합니다.
14.14.17. KubevirtVmHighMemoryUsage
meaning
이 경고는 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
14.14.18. KubeVirtVMIExcessiveMigrations
meaning
이 경고는 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, 메모리, 디스크)가 있는지 확인합니다.
문제가 지속되면 근본 원인을 확인하고 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.19. KubeVirtVMStuckInErrorState
meaning
이 경고는 VM(가상 머신)이 5분 이상 오류 상태가 될 때 실행됩니다.
오류 상태:
- CrashLoopBackOff
- 알 수 없음
- 예약 불가
- ErrImagePull
- ImagePullBackOff
- PvcNotFound
- DataVolumeError
이 경고는 VM 구성의 누락된 영구 볼륨 클레임 또는 네트워크 중단 또는 노드 리소스 부족과 같은 클러스터 인프라의 문제를 나타낼 수 있습니다.
보안 등급
즉각적인 영향은 없습니다. 그러나 이 경고가 지속되는 경우 근본 원인을 조사하고 문제를 해결해야 합니다.
진단
VMI(가상 머신 인스턴스) 세부 정보를 확인합니다.
$ oc describe vmi <vmi> -n <namespace>
출력 예
Name: testvmi-hxghp Namespace: kubevirt-test-default1 Labels: name=testvmi-hxghp Annotations: kubevirt.io/latest-observed-api-version: v1 kubevirt.io/storage-observed-api-version: v1alpha3 API Version: kubevirt.io/v1 Kind: VirtualMachineInstance ... Spec: Domain: ... Resources: Requests: Cpu: 5000000Gi Memory: 5130000240Mi ... Status: ... Conditions: Last Probe Time: 2022-10-03T11:11:07Z Last Transition Time: 2022-10-03T11:11:07Z Message: Guest VM is not reported as running Reason: GuestNotRunning Status: False Type: Ready Last Probe Time: <nil> Last Transition Time: 2022-10-03T11:11:07Z Message: 0/2 nodes are available: 2 Insufficient cpu, 2 Insufficient memory. Reason: Unschedulable Status: False Type: PodScheduled Guest OS Info: Phase: Scheduling Phase Transition Timestamps: Phase: Pending Phase Transition Timestamp: 2022-10-03T11:11:07Z Phase: Scheduling Phase Transition Timestamp: 2022-10-03T11:11:07Z Qos Class: Burstable Runtime User: 0 Virtual Machine Revision Name: revision-start-vm-3503e2dc-27c0-46ef-9167-7ae2e7d93e6e-1 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 27s virtualmachine-controller Created virtual machine pod virt-launcher-testvmi-hxghp-xh9qn
노드 리소스를 확인합니다.
$ oc get nodes -l node-role.kubernetes.io/worker= -o json | jq '.items | \ .[].status.allocatable'
출력 예
{ "cpu": "5", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/sev": "0", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "33812468066", "hugepages-1Gi": "0", "hugepages-2Mi": "128Mi", "memory": "3783496Ki", "pods": "110" }
노드에서 오류 상태를 확인합니다.
$ oc get nodes -l node-role.kubernetes.io/worker= -o json | jq '.items | \ .[].status.conditions'
출력 예
[ { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:20Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure" }, { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:20Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure" }, { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:20Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure" }, { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:30Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready" } ]
완화 방법
문제를 확인하고 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.20. KubeVirtVMStuckInMigratingState
meaning
이 경고는 VM(가상 머신)이 5분 이상 마이그레이션 상태가 될 때 실행됩니다.
이 경고는 네트워크 중단 또는 노드 리소스 부족과 같은 클러스터 인프라의 문제를 나타낼 수 있습니다.
보안 등급
즉각적인 영향은 없습니다. 그러나 이 경고가 지속되는 경우 근본 원인을 조사하고 문제를 해결해야 합니다.
진단
노드 리소스를 확인합니다.
$ oc get nodes -l node-role.kubernetes.io/worker= -o json | jq '.items | \ .[].status.allocatable'
출력 예
{ "cpu": "5", "devices.kubevirt.io/kvm": "1k", "devices.kubevirt.io/sev": "0", "devices.kubevirt.io/tun": "1k", "devices.kubevirt.io/vhost-net": "1k", "ephemeral-storage": "33812468066", "hugepages-1Gi": "0", "hugepages-2Mi": "128Mi", "memory": "3783496Ki", "pods": "110" }
노드 상태 조건을 확인합니다.
$ oc get nodes -l node-role.kubernetes.io/worker= -o json | jq '.items | \ .[].status.conditions'
출력 예
[ { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:20Z", "message": "kubelet has sufficient memory available", "reason": "KubeletHasSufficientMemory", "status": "False", "type": "MemoryPressure" }, { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:20Z", "message": "kubelet has no disk pressure", "reason": "KubeletHasNoDiskPressure", "status": "False", "type": "DiskPressure" }, { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:20Z", "message": "kubelet has sufficient PID available", "reason": "KubeletHasSufficientPID", "status": "False", "type": "PIDPressure" }, { "lastHeartbeatTime": "2022-10-03T11:13:34Z", "lastTransitionTime": "2022-10-03T10:14:30Z", "message": "kubelet is posting ready status", "reason": "KubeletReady", "status": "True", "type": "Ready" } ]
완화 방법
가상 머신의 마이그레이션 구성을 확인하여 워크로드에 적합한지 확인합니다.
KubeVirt
사용자 정의 리소스의 MigrationConfiguration
스탠자를 편집하여 클러스터 전체 마이그레이션 구성을 설정합니다.
마이그레이션 정책을 생성하여 특정 범위에 대한 마이그레이션 구성을 설정합니다.
vm.Status.MigrationState.MigrationPolicyName
매개변수를 확인하여 VM이 마이그레이션 정책에 바인딩되는지 여부를 확인할 수 있습니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.21. KubeVirtVMStuckInStartingState
meaning
이 경고는 VM(가상 머신)이 5분 이상 시작 상태가 될 때 실행됩니다.
이 경고는 잘못된 우선 순위 클래스 또는 누락된 네트워크 장치와 같은 VM 구성의 문제를 나타낼 수 있습니다.
보안 등급
즉각적인 영향은 없습니다. 그러나 이 경고가 지속되는 경우 근본 원인을 조사하고 문제를 해결해야 합니다.
진단
오류 상태에 대한 VMI(가상 머신 인스턴스) 세부 정보를 확인합니다.
$ oc describe vmi <vmi> -n <namespace>
출력 예
Name: testvmi-ldgrw Namespace: kubevirt-test-default1 Labels: name=testvmi-ldgrw Annotations: kubevirt.io/latest-observed-api-version: v1 kubevirt.io/storage-observed-api-version: v1alpha3 API Version: kubevirt.io/v1 Kind: VirtualMachineInstance ... Spec: ... Networks: Name: default Pod: Priority Class Name: non-preemtible Termination Grace Period Seconds: 0 Status: Conditions: Last Probe Time: 2022-10-03T11:08:30Z Last Transition Time: 2022-10-03T11:08:30Z Message: virt-launcher pod has not yet been scheduled Reason: PodNotExists Status: False Type: Ready Last Probe Time: <nil> Last Transition Time: 2022-10-03T11:08:30Z Message: failed to create virtual machine pod: pods "virt-launcher-testvmi-ldgrw-" is forbidden: no PriorityClass with name non-preemtible was found Reason: FailedCreate Status: False Type: Synchronized Guest OS Info: Phase: Pending Phase Transition Timestamps: Phase: Pending Phase Transition Timestamp: 2022-10-03T11:08:30Z Runtime User: 0 Virtual Machine Revision Name: revision-start-vm-6f01a94b-3260-4c5a-bbe5-dc98d13e6bea-1 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedCreate 8s (x13 over 28s) virtualmachine-controller Error creating pod: pods "virt-launcher-testvmi-ldgrw-" is forbidden: no PriorityClass with name non-preemtible was found
완화 방법
VM이 올바르게 구성되어 필요한 리소스가 있는지 확인합니다.
Pending
상태는 VM이 아직 예약되지 않았음을 나타냅니다. 다음과 같은 가능한 원인을 확인하십시오.
-
virt-launcher
Pod는 예약되지 않습니다. - VMI의 토폴로지 힌트는 최신 상태가 아닙니다.
- 데이터 볼륨이 프로비저닝되거나 준비되지 않았습니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.22. LowKVMNodesCount
meaning
이 경고는 클러스터의 두 개 미만의 노드에 KVM 리소스가 있을 때 실행됩니다.
보안 등급
클러스터에 실시간 마이그레이션을 위해 KVM 리소스가 있는 노드가 두 개 이상 있어야 합니다.
노드에 KVM 리소스가 없는 경우 가상 머신을 예약하거나 실행할 수 없습니다.
진단
KVM 리소스로 노드를 식별합니다.
$ oc get nodes -o jsonpath='{.items[*].status.allocatable}' | \ grep devices.kubevirt.io/kvm
완화 방법
KVM 리소스가 없는 노드에 KVM을 설치합니다.
14.14.23. LowReadyVirtControllersCount
meaning
이 경고는 하나 이상의 virt-controller
Pod가 실행 중일 때 실행되지만 이러한 Pod 중 어느 것도 지난 5분 동안 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 서버가 과부하되었습니다. 예를 들어 스케줄러는 부하가 많은 수 있으므로 완전히 사용할 수 없습니다.
- 네트워크 문제가 있습니다.
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.24. LowReadyVirtOperatorsCount
meaning
이 경고는 하나 이상의 virt-operator
Pod가 실행 중일 때 실행되지만 이러한 Pod 중 어느 것도 마지막 10분 동안 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
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.25. LowVirtAPICount
meaning
이 경고는 스케줄링에 두 개 이상의 노드를 사용할 수 있지만 60분 동안 사용 가능한 virt-api
포드가 하나만 감지되면 실행됩니다.
보안 등급
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
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.26. LowVirtControllersCount
meaning
이 경고는 적은 수의 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 서버가 과부하되었습니다. 예를 들어 스케줄러는 부하가 많은 수 있으므로 완전히 사용할 수 없습니다.
- 네트워킹 문제
근본 원인을 확인하고 가능한 경우 수정합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.27. LowVirtOperatorCount
meaning
이 경고는 마지막 60분 동안 Ready
상태에서 하나의 virt-operator
Pod만 실행 중일 때 실행됩니다.
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>
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.28. NetworkAddonsConfigNotReady
meaning
이 경고는 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>
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.29. NoLeadingVirtOperator
meaning
virt-operator
Pod가 Ready
상태인 경우에도 리더 리스가 있는 virt-operator
Pod가 10분 동안 탐지되면 이 경고가 실행됩니다. 경고는 리더 Pod를 사용할 수 없음을 나타냅니다.
virt-operator
는 클러스터에서 시작하는 첫 번째 Operator입니다. 주요 책임은 다음과 같습니다.
- 클러스터 설치, 실시간 업데이트 및 실시간 업그레이드
-
virt-controller
,virt-handler
,virt-launcher
와 같은 최상위 컨트롤러의 라이프사이클 모니터링 및 조정 관리 - 인증서 교체 및 인프라 관리와 같은 특정 클러스터 전체 작업
virt-operator
배포에는 Pod 2의 기본 복제본이 있으며 하나의 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"}
비 레더 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>
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 찾아 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.30. NoReadyVirtController
meaning
이 경고는 사용 가능한 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
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 찾아 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.31. NoReadyVirtOperator
meaning
이 경고는 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
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.32. OrphanedVirtualMachineInstances
meaning
이 경고는 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
데몬 세트가 정상이 아닌 경우virt-handler
데몬 세트에 Pod 배포 문제가 있는지 확인합니다.$ 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의 스케줄링 규칙을 변경해야 할 수 있습니다.
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.33. OutdatedVirtualMachineInstanceWorkloads
meaning
이전 virt-launcher
Pod에서 VMI(가상 머신 인스턴스)를 실행할 때 OpenShift Virtualization 컨트롤 플레인을 업데이트한 후 24시간 후에 이 경고가 발생합니다.
보안 등급
오래된 VMI가 새로운 OpenShift Virtualization 기능에 액세스하지 못할 수 있습니다.
오래된 VMI에는 virt-launcher
Pod 업데이트와 관련된 보안 수정 사항이 제공되지 않습니다.
진단
오래된 VMI를 확인합니다.
$ oc get vmi -l kubevirt.io/outdatedLauncherImage --all-namespaces
KubeVirt
사용자 정의 리소스(CR)를 확인하여workloadUpdateMethods
가workloadUpdateStrategy
스탠자에 구성되어 있는지 확인합니다.$ oc get kubevirt 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을 업데이트하여 자동 워크로드 업데이트를 활성화합니다.
실시간migratable VMI와 연결된 VM 중지
VMI가 Live-migratable이 아니고
runStrategy: always
가 해당VirtualMachine
오브젝트에 설정된 경우 VM(가상 머신)을 수동으로 중지하여 VMI를 업데이트할 수 있습니다.$ virctl stop --namespace <namespace> <vm>
새 VMI는 중지된 VMI를 교체하기 위해 업데이트된 virt-launcher
Pod에서 즉시 회전합니다. 이는 재시작 작업과 동일합니다.
실시간 마이그레이션 가능한 VM을 수동으로 중지하는 것은 안전하지 않으며 워크로드를 중단하기 때문에 권장되지 않습니다.
실시간 마이그레이션 VMI
VMI가 실시간 마이그레이션 가능한 경우 실행 중인 특정 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
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.34. SSPCommonTemplatesModificationReverted
meaning
이 경고는 스케줄링, 스케일링 및 성능(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
완화 방법
변경 사항의 원인을 확인하고 해결하십시오.
템플릿 사본만 변경하고 템플릿 자체가 아닌 변경 사항을 확인하십시오.
14.14.35. SSPFailingToReconcile
meaning
이 경고는 SSP Operator가 실행 중이지만 스케줄링, 스케일링 및 성능(SSP) Operator의 조정 주기가 반복적으로 실패하면 실행됩니다.
SSP Operator는 공통 템플릿과 Template Validator의 배포 및 조정을 담당합니다.
보안 등급
종속 구성 요소가 배포되지 않을 수 있습니다. 구성 요소의 변경 사항은 조정되지 않을 수 있습니다. 결과적으로 공통 템플릿 또는 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
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.36. SSPHighRateRejectedVms
meaning
이 경고는 잘못된 구성을 사용하여 사용자 또는 스크립트가 다수의 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"}
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.37. SSPOperatorDown
meaning
이 경고는 모든 스케줄링, 스케일링 및 성능(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
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.38. SSPTemplateValidatorDown
meaning
이 경고는 모든 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
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.39. VirtAPIDown
meaning
이 경고는 모든 API 서버 Pod가 중단될 때 실행됩니다.
보안 등급
OpenShift Virtualization 오브젝트는 API 호출을 보낼 수 없습니다.
진단
NAMESPACE
환경 변수를 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-api
포드의 상태를 확인합니다.$ 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
완화 방법
근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.40. VirtApiRESTErrorsBurst
meaning
지난 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
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.41. VirtApiRESTErrorsHigh
meaning
지난 60분 동안 virt-api
Pod에서 REST 호출의 5% 이상이 실패했습니다.
보안 등급
virt-api
에 대한 실패한 REST 호출 속도가 높으면 API 호출의 응답 및 실행이 느려질 수 있습니다.
그러나 현재 실행 중인 가상 머신 워크로드는 영향을 받지 않습니다.
진단
NAMESPACE
환경 변수를 다음과 같이 설정합니다.$ export NAMESPACE="$(oc get kubevirt -A \ -o custom-columns="":.metadata.namespace)"
virt-api
포드의 상태를 확인합니다.$ 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
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 확인하고 문제를 해결합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.42. VirtControllerDown
meaning
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 서버가 과부하되었습니다. 예를 들어 스케줄러는 부하가 많은 수 있으므로 완전히 사용할 수 없습니다.
- 네트워킹 문제
근본 원인을 확인하고 가능한 경우 수정합니다.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.43. VirtControllerRESTErrorsBurst
meaning
최근 5분 동안 virt-controller
Pod에서 REST 호출의 80% 이상이 실패했습니다.
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>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.44. VirtControllerRESTErrorsHigh
meaning
지난 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>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.45. VirtHandlerDaemonSetRolloutFailing
meaning
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를 삭제할 수 있습니다.
14.14.46. VirtHandlerRESTErrorsBurst
meaning
지난 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>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.47. VirtHandlerRESTErrorsHigh
meaning
지난 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>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.48. VirtOperatorDown
meaning
이 경고는 Running
상태의 virt-operator
Pod가 10분 동안 탐지되면 실행됩니다.
virt-operator
는 클러스터에서 시작하는 첫 번째 Operator입니다. 주요 책임은 다음과 같습니다.
- 클러스터 설치, 실시간 업그레이드 및 업그레이드
-
virt-controller
,virt-handler
,virt-launcher
와 같은 최상위 컨트롤러의 라이프 사이클 모니터링 및 조정 관리 - 인증서 교체 및 인프라 관리와 같은 특정 클러스터 전체 작업
virt-operator
배포에는 Pod의 기본 복제본이 2개 있습니다.
보안 등급
이 경고는 클러스터 수준에서 오류를 나타냅니다. 인증 교체, 업그레이드 및 컨트롤러 조정과 같은 중요한 클러스터 전체 관리 기능을 사용할 수 없습니다.
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
완화 방법
진단 절차 중 얻은 정보를 기반으로 근본 원인을 찾아 문제를 해결하십시오.
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.49. VirtOperatorRESTErrorsBurst
meaning
이 경고는 virt-operator
Pod의 REST 호출 중 80% 이상이 지난 5분 내에 실패한 경우 실행됩니다. 일반적으로 virt-operator
Pod가 API 서버에 연결할 수 없음을 나타냅니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 지표를 확인하고 응답 시간과 전체 호출을 확인합니다.
-
virt-operator
Pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
업그레이드 및 컨트롤러 조정과 같은 클러스터 수준 작업을 사용할 수 없습니다.
그러나 VM(가상 머신) 및 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
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>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.50. VirtOperatorRESTErrorsHigh
meaning
이 경고는 virt-operator
Pod의 REST 호출의 5% 이상이 지난 60분 동안 실패한 경우 실행됩니다. 일반적으로 virt-operator
Pod가 API 서버에 연결할 수 없음을 나타냅니다.
이 오류는 종종 다음 문제 중 하나로 인해 발생합니다.
- API 서버가 과부하되어 시간 초과가 발생합니다. 이 경우 API 서버의 지표를 확인하고 응답 시간과 전체 호출을 확인합니다.
-
virt-operator
Pod는 API 서버에 연결할 수 없습니다. 이는 일반적으로 노드의 DNS 문제 및 네트워킹 연결 문제로 인해 발생합니다.
보안 등급
업그레이드 및 컨트롤러 조정과 같은 클러스터 수준 작업이 지연될 수 있습니다.
그러나 VM(가상 머신) 및 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
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>
문제를 해결할 수 없는 경우 고객 포털에 로그인하여 지원 케이스를 열고 진단 절차 중에 수집된 아티팩트를 첨부합니다.
14.14.51. VMCannotBeEvicted
meaning
이 경고는 VM(가상 머신)의 제거 전략이 LiveMigration
으로 설정되어 있을 때 발생하지만 VM은 음소거할 수 없습니다.
보안 등급
마이그레이션 불가능한 VM으로 노드 제거를 방지합니다. 이 상태는 노드 드레이닝 및 업데이트와 같은 작업에 영향을 미칩니다.
진단
VMI 구성을 확인하여
evictionStrategy
값이LiveMigrate
인지 확인합니다.$ oc get vmis -o yaml
LIVE-MIGRA
ECDHE 열에서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가 마이그레이션되지 않는 문제를 해결합니다.