14.10. vSphere Problem Detector Operator 사용

14.10.1. vSphere Problem Detector Operator 정보

vSphere Problem Detector Operator는 스토리지와 관련된 일반적인 설치 및 잘못된 구성 문제를 위해 vSphere에 배포된 클러스터를 확인합니다.

Operator는 openshift-cluster-storage-operator 네임 스페이스에서 실행되며 Cluster Storage Operator가 vSphere에 클러스터를 배포하는 것을 탐지하면 Cluster Storage Operator에 의해 시작됩니다. vSphere Problem Detector Operator는 vSphere vCenter Server와 통신하여 클러스터의 가상 머신, 기본 데이터 저장소 및 vSphere vCenter 서버 구성에 대한 기타 정보를 확인합니다. Operator는 Cloud Credential Operator의 인증 정보를 사용하여 vSphere에 연결합니다.

Operator는 다음 일정에 따라 검사를 실행합니다.

  • 검사는 8시간마다 실행됩니다.
  • 검사에 실패하면 Operator는 1분, 2분, 4분, 8분 등의 간격으로 다시 검사를 실행합니다. Operator는 간격을 최대 8시간까지 두 배로 늘립니다.
  • 모든 검사가 통과되면 일정이 8시간 간격으로 돌아갑니다.

Operator는 오류 후 검사 빈도를 늘리므로 실패 조건이 수정된 후 Operator에서 빠르게 성공적으로 완료를 보고할 수 있습니다. 즉시 문제 해결 정보를 위해 Operator를 수동으로 실행할 수 있습니다.

14.10.2. vSphere Problem Detector Operator 검사 실행

vSphere Problem Detector Operator 검사를 실행하기 위한 일정을 재정의하고 즉시 검사를 실행할 수 있습니다.

vSphere Problem Detector Operator는 8시간마다 검사를 자동으로 실행합니다. 그러나 Operator가 시작되면 즉시 검사를 실행합니다. Cluster Storage Operator가 시작될 때 Operator는 Cluster Storage Operator에 의해 시작하여 vSphere에서 클러스터가 실행 중인지 확인합니다. 검사를 즉시 실행하려면 vSphere Problem Detector Operator를 0 으로 스케일링하고 1로 돌아가 vSphere Problem Detector Operator를 다시 시작할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

프로세스

  1. Operator를 0으로 스케일링합니다.

    $ oc scale deployment/vsphere-problem-detector-operator --replicas=0 \
        -n openshift-cluster-storage-operator

    배포가 즉시 0으로 스케일링되지 않으면 다음 명령을 실행하여 Pod가 종료될 때까지 기다릴 수 있습니다.

    $ oc wait pods -l name=vsphere-problem-detector-operator \
        --for=delete --timeout=5m -n openshift-cluster-storage-operator
  2. Operator를 1로 다시 스케일링합니다.

    $ oc scale deployment/vsphere-problem-detector-operator --replicas=1 \
        -n openshift-cluster-storage-operator
  3. 이전 리더 잠금을 삭제하여 Cluster Storage Operator의 새 리더 선택을 가속화합니다.

    $ oc delete -n openshift-cluster-storage-operator \
        cm vsphere-problem-detector-lock

검증

  • vSphere Problem Detector Operator에서 생성된 이벤트 또는 로그를 표시합니다. 이벤트 또는 로그에 최근 타임 스탬프가 있는지 확인합니다.

14.10.3. vSphere Problem Detector Operator에서 이벤트 보기

vSphere Problem Detector Operator가 실행되고 구성 검사를 수행한 후 명령줄 또는 OpenShift Container Platform 웹 콘솔에서 볼 수 있는 이벤트를 생성합니다.

프로세스

  • 명령줄을 사용하여 이벤트를 보려면 다음 명령을 실행합니다.

    $ oc get event -n openshift-cluster-storage-operator \
        --sort-by={.metadata.creationTimestamp}

    출력 예

    16m     Normal    Started             pod/vsphere-problem-detector-operator-xxxxx         Started container vsphere-problem-detector
    16m     Normal    Created             pod/vsphere-problem-detector-operator-xxxxx         Created container vsphere-problem-detector
    16m     Normal    LeaderElection      configmap/vsphere-problem-detector-lock    vsphere-problem-detector-operator-xxxxx became leader

  • OpenShift Container Platform 웹 콘솔을 사용하여 이벤트를 보려면 다음 프로젝트 메뉴에서 이벤트로 이동하여 openshift-cluster-storage-operator를 선택합니다.

14.10.4. vSphere Problem Detector Operator에서 로그 보기

vSphere Problem Detector Operator가 실행되고 구성 검사를 수행한 후 명령줄 또는 OpenShift Container Platform 웹 콘솔에서 볼 수 있는 로그 레코드를 생성합니다.

프로세스

  • 명령줄을 사용하여 로그를 보려면 다음 명령을 실행합니다.

    $ oc logs deployment/vsphere-problem-detector-operator \
        -n openshift-cluster-storage-operator

    출력 예

    I0108 08:32:28.445696       1 operator.go:209] ClusterInfo passed
    I0108 08:32:28.451029       1 datastore.go:57] CheckStorageClasses checked 1 storage classes, 0 problems found
    I0108 08:32:28.451047       1 operator.go:209] CheckStorageClasses passed
    I0108 08:32:28.452160       1 operator.go:209] CheckDefaultDatastore passed
    I0108 08:32:28.480648       1 operator.go:271] CheckNodeDiskUUID:<host_name> passed
    I0108 08:32:28.480685       1 operator.go:271] CheckNodeProviderID:<host_name> passed

  • OpenShift Container Platform 웹 콘솔을 사용하여 Operator 로그를 보려면 다음 단계를 수행합니다.

    1. 워크로드포드로 이동합니다.
    2. 프로젝트 메뉴에서 openshift-cluster-storage-operator를 선택합니다
    3. vsphere-problem-detector-operator 포드에 대한 링크를 클릭합니다.
    4. 포드 세부 정보 페이지에서 로그 탭을 클릭하여 로그를 확인합니다.

14.10.5. vSphere Problem Detector Operator에서 실행한 설정 검사

다음 표에서는 vSphere Problem Detector Operator가 실행하는 설정 검사를 식별합니다. 일부 검사에서는 클러스터 설정을 확인합니다. 다른 검사에서는 클러스터에서 각 노드의 설정을 확인합니다.

표 14.76. 클러스터 설정 검사

이름설명

CheckDefaultDatastore

vSphere 설정의 기본 데이터 저장소 이름이 동적 프로비저닝에 사용할 수 있을 만큼 짧은지 확인합니다.

이 검사에 실패하는 경우 다음을 예상할 수 있습니다.

  • 마운트 장치 설정 실패와 같은 저널에 대한 systemd 로그 오류: 잘못된 인수.
  • 가상 머신이 종료되거나 재부팅되면 노드에서 모든 포드를 드레이닝하지 않고도 systemd가 볼륨을 마운트 해제하지 않습니다.

이 검사에 실패하면 기본 데이터 저장소에 대해 이름이 더 짧은 vSphere를 재구성하십시오.

CheckFolderPermissions

기본 데이터 저장소에서 볼륨을 나열할 수 있는 권한을 확인합니다. 이 권한은 볼륨을 생성하는 데 필요합니다. Operator는 //kubevols 디렉터리를 나열하여 권한을 확인합니다. root 디렉터리가 있어야 합니다. 검사가 실행될 때 /kubevols 디렉터리가 존재하지 않는 경우 허용됩니다. 디렉터리가 아직 존재하지 않는 경우 데이터 저장소가 동적 프로비저닝과 함께 사용되면 /kubevols 디렉터리가 생성됩니다.

이 검사가 실패하면 OpenShift Container Platform 설치 중에 지정된 vCenter 계정에 필요한 권한을 검토하십시오.

CheckStorageClasses

다음을 확인합니다.

  • 이 스토리지 클래스에서 프로비저닝하는 각 영구 볼륨에 대한 정규화된 경로는 255자 미만입니다.
  • 스토리지 클래스가 스토리지 정책을 사용하는 경우 스토리지 클래스는 하나의 정책만 사용해야 하며 해당 정책을 정의해야 합니다.

CheckTaskPermissions

최근 작업 및 데이터 저장소를 나열할 수 있는 권한을 확인합니다.

ClusterInfo

vSphere vCenter에서 클러스터 버전 및 UUID를 수집합니다.

표 14.77. 노드 설정 검사

이름설명

CheckNodeDiskUUID

모든 vSphere 가상 머신이 disk.enableUUID=TRUE로 구성되어 있는지 확인합니다.

이 검사에 실패하는 경우 vSphere Red Hat 지식베이스 정보 솔루션의 VM에서 'disk.EnableUUID' 매개변수를 확인하는 방법을 참조하십시오.

CheckNodeProviderID

모든 노드가 vSphere vCenter의 ProviderID로 구성되었는지 확인합니다. 다음 명령의 출력에 각 노드의 공급자 ID가 포함되지 않으면 이 검사가 실패합니다.

$ oc get nodes -o custom-columns=NAME:.metadata.name,PROVIDER_ID:.spec.providerID,UUID:.status.nodeInfo.systemUUID

이 검사에 실패하는 경우 클러스터의 각 노드의 공급자 ID 설정에 대한 정보는 vSphere 제품 설명서를 참조하십시오.

CollectNodeESXiVersion

노드를 실행하는 ESXi 호스트 버전을 보고합니다.

CollectNodeHWVersion

노드의 가상 머신 하드웨어 버전을 보고합니다.

14.10.6. 스토리지 클래스 구성 검사 정보

vSphere 스토리지를 사용하는 영구 볼륨의 이름은 데이터 저장소 이름 및 클러스터 ID와 관련이 있습니다.

영구 볼륨이 생성되면 systemd는 영구 볼륨의 마운트 장치를 생성합니다. systemd 프로세스에는 영구 볼륨에 사용되는 VDMK 파일의 정규화된 경로 길이에 대한 255자 제한이 있습니다.

정규화된 경로는 systemd 및 vSphere에 대한 명명 규칙을 기반으로 합니다. 명명 규칙은 다음 패턴을 사용합니다.

/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[<datastore>] 00000000-0000-0000-0000-000000000000/<cluster_id>-dynamic-pvc-00000000-0000-0000-0000-000000000000.vmdk
  • 명명 규칙에는 255자 제한 중 205자가 필요합니다.
  • 데이터 저장소 이름과 클러스터 ID는 배포에서 결정됩니다.
  • 데이터 저장소 이름과 클러스터 ID는 이전 패턴으로 대체됩니다. 그러면 특수 문자를 피하기 위해 systemd-escape 명령을 사용하여 경로가 처리됩니다. 예를 들어 하이픈 문자는 이스케이프 후 4자를 사용합니다. 추출된 값은 \x2d입니다.
  • systemd-escape를 사용하여 systemd에서 VDMK 파일에 대한 정규화된 경로에 액세스할 수 있도록 한 후 경로 길이는 255자 미만이어야 합니다.

14.10.7. vSphere Problem Detector Operator의 지표

vSphere Problem Detector Operator는 OpenShift Container Platform 모니터링 스택에서 사용할 다음 지표를 노출합니다.

표 14.78. vSphere Problem Detector Operator가 노출하는 지표

이름설명

vsphere_cluster_check_total

누적 수의 클러스터 수준에서 vSphere Problem Detector Operator가 수행되었는지 확인합니다. 이 카운트에는 성공 및 실패가 모두 포함됩니다.

vsphere_cluster_check_errors

vSphere Problem Detector Operator가 수행한 실패한 클러스터 수준 검사의 수입니다. 예를 들어 1의 값은 하나의 클러스터 수준 검사에 실패했음을 나타냅니다.

vsphere_esxi_version_total

특정 버전이 있는 ESXi 호스트의 수입니다. 호스트가 두 개 이상의 노드를 실행하는 경우 호스트는 한 번만 계산됩니다.

vsphere_node_check_total

누적 수의 노드 수준에서 vSphere Problem Detector Operator가 수행되었는지 확인합니다. 이 카운트에는 성공 및 실패가 모두 포함됩니다.

vsphere_node_check_errors

vSphere Problem Detector Operator가 수행한 실패한 노드 수준 검사의 수입니다. 예를 들어 1의 값은 하나의 노드 수준 검사에 실패했음을 나타냅니다.

vsphere_node_hw_version_total

특정 하드웨어 버전이 있는 vSphere 노드의 수입니다.

vsphere_vcenter_info

vSphere vCenter Server에 대한 정보입니다.

14.10.8. 추가 리소스