14.4. 문제 해결


OpenShift Virtualization은 가상 머신 및 가상화 구성 요소 문제 해결을 위한 툴과 로그를 제공합니다.

웹 콘솔에 제공된 툴을 사용하거나 oc CLI 툴을 사용하여 OpenShift Virtualization 구성 요소의 문제를 해결할 수 있습니다.

14.4.1. 이벤트

OpenShift Container Platform 이벤트는 중요한 라이프 사이클 정보에 대한 레코드이며 가상 머신, 네임스페이스 및 리소스 문제를 모니터링하고 해결하는 데 유용합니다.

  • VM 이벤트: 웹 콘솔의 VirtualMachine 세부 정보 페이지의 Events 탭으로 이동합니다.

    네임스페이스 이벤트

    다음 명령을 실행하여 네임스페이스 이벤트를 볼 수 있습니다.

    $ oc get events -n <namespace>

    특정 이벤트에 대한 자세한 내용은 이벤트 목록을 참조하십시오.

    리소스 이벤트

    다음 명령을 실행하여 리소스 이벤트를 볼 수 있습니다.

    $ oc describe <resource> <resource_name>

14.4.2. 로그

문제 해결을 위해 다음 로그를 확인할 수 있습니다.

14.4.2.1. 웹 콘솔을 사용하여 가상 머신 로그 보기

OpenShift Container Platform 웹 콘솔을 사용하여 가상 머신 로그를 볼 수 있습니다.

절차

  1. 가상화 VirtualMachines 로 이동합니다.
  2. 가상 머신을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
  3. 세부 정보 탭에서 Pod 이름을 클릭하여 Pod 세부 정보 페이지를 엽니다.
  4. 로그를 보려면 로그 탭을 클릭합니다.

14.4.2.2. OpenShift Virtualization Pod 로그 보기

oc CLI 툴을 사용하여 OpenShift Virtualization Pod의 로그를 볼 수 있습니다.

HyperConverged CR(사용자 정의 리소스)을 편집하여 로그의 상세 수준을 구성할 수 있습니다.

14.4.2.2.1. CLI를 사용하여 OpenShift Virtualization Pod 로그 보기

oc CLI 툴을 사용하여 OpenShift Virtualization Pod의 로그를 볼 수 있습니다.

절차

  1. 다음 명령을 실행하여 OpenShift Virtualization 네임스페이스의 Pod 목록을 확인합니다.

    $ oc get pods -n openshift-cnv

    예 14.3. 출력 예

    NAME                               READY   STATUS    RESTARTS   AGE
    disks-images-provider-7gqbc        1/1     Running   0          32m
    disks-images-provider-vg4kx        1/1     Running   0          32m
    virt-api-57fcc4497b-7qfmc          1/1     Running   0          31m
    virt-api-57fcc4497b-tx9nc          1/1     Running   0          31m
    virt-controller-76c784655f-7fp6m   1/1     Running   0          30m
    virt-controller-76c784655f-f4pbd   1/1     Running   0          30m
    virt-handler-2m86x                 1/1     Running   0          30m
    virt-handler-9qs6z                 1/1     Running   0          30m
    virt-operator-7ccfdbf65f-q5snk     1/1     Running   0          32m
    virt-operator-7ccfdbf65f-vllz8     1/1     Running   0          32m
  2. 다음 명령을 실행하여 Pod 로그를 확인합니다.

    $ oc logs -n openshift-cnv <pod_name>
    참고

    Pod가 시작되지 않으면 --previous 옵션을 사용하여 마지막 시도에서 로그를 볼 수 있습니다.

    로그 출력을 실시간으로 모니터링하려면 -f 옵션을 사용합니다.

    예 14.4. 출력 예

    {"component":"virt-handler","level":"info","msg":"set verbosity to 2","pos":"virt-handler.go:453","timestamp":"2022-04-17T08:58:37.373695Z"}
    {"component":"virt-handler","level":"info","msg":"set verbosity to 2","pos":"virt-handler.go:453","timestamp":"2022-04-17T08:58:37.373726Z"}
    {"component":"virt-handler","level":"info","msg":"setting rate limiter to 5 QPS and 10 Burst","pos":"virt-handler.go:462","timestamp":"2022-04-17T08:58:37.373782Z"}
    {"component":"virt-handler","level":"info","msg":"CPU features of a minimum baseline CPU model: map[apic:true clflush:true cmov:true cx16:true cx8:true de:true fpu:true fxsr:true lahf_lm:true lm:true mca:true mce:true mmx:true msr:true mtrr:true nx:true pae:true pat:true pge:true pni:true pse:true pse36:true sep:true sse:true sse2:true sse4.1:true ssse3:true syscall:true tsc:true]","pos":"cpu_plugin.go:96","timestamp":"2022-04-17T08:58:37.390221Z"}
    {"component":"virt-handler","level":"warning","msg":"host model mode is expected to contain only one model","pos":"cpu_plugin.go:103","timestamp":"2022-04-17T08:58:37.390263Z"}
    {"component":"virt-handler","level":"info","msg":"node-labeller is running","pos":"node_labeller.go:94","timestamp":"2022-04-17T08:58:37.391011Z"}
14.4.2.2.2. OpenShift Virtualization Pod 로그 세부 정보 표시 구성

HyperConverged CR(사용자 정의 리소스)을 편집하여 OpenShift Virtualization Pod 로그의 상세 수준을 구성할 수 있습니다.

절차

  1. 특정 구성 요소에 대한 로그 세부 정보 표시를 설정하려면 다음 명령을 실행하여 기본 텍스트 편집기에서 HyperConverged CR을 엽니다.

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  2. spec.logVerbosityConfig 스탠자를 편집하여 하나 이상의 구성 요소의 로그 수준을 설정합니다. 예를 들면 다음과 같습니다.

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
    spec:
      logVerbosityConfig:
        kubevirt:
          virtAPI: 5 1
          virtController: 4
          virtHandler: 3
          virtLauncher: 2
          virtOperator: 6
    1
    로그 세부 정보 표시 값은 1-9 범위의 정수여야 합니다. 여기서 숫자가 클수록 더 자세한 로그가 표시됩니다. 이 예에서는 우선 순위 수준이 5 이상인 경우 virtAPI 구성 요소 로그가 노출됩니다.
  3. 편집기를 저장하고 종료하여 변경 사항을 적용합니다.
14.4.2.2.3. 일반적인 오류 메시지

OpenShift Virtualization 로그에 다음과 같은 오류 메시지가 표시될 수 있습니다.

ErrImagePull 또는 ImagePullBackOff
잘못된 배포 구성 또는 참조된 이미지의 문제를 나타냅니다.

14.4.2.3. CloudEventStack을 사용하여 집계된 OpenShift Virtualization 로그 보기

웹 콘솔에서 ScanSettingStack을 사용하여 OpenShift Virtualization pod 및 컨테이너에 대한 집계된 로그를 볼 수 있습니다.

사전 요구 사항

  • generatedStack을 배포했습니다.

절차

  1. 웹 콘솔에서 모니터링 → 로그 로 이동합니다.
  2. 로그 유형 목록에서 virt-launcher Pod 로그 또는 인프라 에 대해 애플리케이션, OpenShift Virtualization 컨트롤 플레인 Pod 및 컨테이너를 선택합니다.
  3. 쿼리 표시를 클릭하여 쿼리 필드를 표시합니다.
  4. 쿼리 필드에 LogQL 쿼리를 입력하고 실행을 클릭하여 필터링된 로그를 표시합니다.
14.4.2.3.1. OpenShift Virtualization LogQL 쿼리

웹 콘솔의 모니터링 로그 페이지에 있는LogQL(LogQL) 쿼리를 실행하여 OpenShift Virtualization 구성 요소에 대한 집계된 로그를 보고 필터링할 수 있습니다.

기본 로그 유형은 infrastructure 입니다. virt-launcher 로그 유형은 application 입니다.

선택 사항: 줄 필터 식을 사용하여 문자열 또는 정규식을 포함하거나 제외할 수 있습니다.

참고

쿼리가 많은 수의 로그와 일치하는 경우 쿼리 시간이 초과될 수 있습니다.

표 14.4. OpenShift Virtualization LogQL 예제 쿼리
구성 요소LogQL query

All

{log_type=~".+"}|json
|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"

cdi-apiserver

cdi-deployment

cdi-operator

{log_type=~".+"}|json
|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"
|kubernetes_labels_app_kubernetes_io_component="storage"

hco-operator

{log_type=~".+"}|json
|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"
|kubernetes_labels_app_kubernetes_io_component="deployment"

kubemacpool

{log_type=~".+"}|json
|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"
|kubernetes_labels_app_kubernetes_io_component="network"

virt-api

virt-controller

virt-handler

virt-operator

{log_type=~".+"}|json
|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"
|kubernetes_labels_app_kubernetes_io_component="compute"

ssp-operator

{log_type=~".+"}|json
|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"
|kubernetes_labels_app_kubernetes_io_component="schedule"

컨테이너

{log_type=~".+",kubernetes_container_name=~"<container>|<container>"} 1
|json|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"
1
파이프(|)로 구분된 하나 이상의 컨테이너를 지정합니다.

virt-launcher

이 쿼리를 실행하기 전에 로그 유형 목록에서 애플리케이션을 선택해야 합니다.

{log_type=~".+", kubernetes_container_name="compute"}|json
|!= "custom-ga-command" 1
1
|!= "custom-ga-command" 는 문자열 custom-ga-command 가 포함된 libvirt 로그를 제외합니다. (BZ#2177684)

줄 필터 식을 사용하여 문자열 또는 정규식을 포함하거나 제외하도록 로그 행을 필터링할 수 있습니다.

표 14.5. 라인 필터 표현식
라인 필터 표현식설명

|= "<string>"

로그 줄에는 문자열이 포함됩니다.

!= "<string>"

로그 줄에 문자열이 포함되지 않음

|~ "<regex>"

로그 줄에 정규식이 포함되어 있습니다.

!~ "<regex>"

로그 줄에 정규식이 포함되어 있지 않음

줄 필터 표현식 예

{log_type=~".+"}|json
|kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster"
|= "error" != "timeout"

14.4.2.3.2. ScanSettingStack 및 LogQL에 대한 추가 리소스

14.4.3. 데이터 볼륨 문제 해결

DataVolume 오브젝트의 ConditionsEvents 섹션을 확인하여 문제를 분석하고 해결할 수 있습니다.

14.4.3.1. 데이터 볼륨 조건 및 이벤트 정보

다음 명령으로 생성된 ConditionsEvents 섹션의 출력을 검사하여 데이터 볼륨 문제를 진단할 수 있습니다.

$ oc describe dv <DataVolume>

Conditions 섹션에는 다음과 같은 유형이 표시됩니다.

  • Bound
  • Running
  • Ready

Events 섹션에서는 다음과 같은 추가 정보를 제공합니다.

  • 이벤트 Type
  • 로깅 Reason
  • 이벤트 Source
  • 추가 진단 정보가 포함된 Message

oc describe의 출력에 항상 Events가 포함되는 것은 아닙니다.

Status,Reason, Message 가 변경되면 이벤트가 생성됩니다. 조건과 이벤트는 모두 데이터 볼륨의 상태 변화에 반응합니다.

예를 들어 가져오기 작업 중에 URL을 잘못 입력하면 가져오기 작업에서 404 메시지를 생성합니다. 이러한 메시지 변경으로 인해 원인이 포함된 이벤트가 생성됩니다. Conditions 섹션의 출력도 업데이트됩니다.

14.4.3.2. 데이터 볼륨 조건 및 이벤트 분석

describe 명령으로 생성된 ConditionsEvents 섹션을 검사하여 PVC(영구 볼륨 클레임)와 관련된 데이터 볼륨 상태 및 작업이 활발하게 실행되고 있거나 완료되었는지의 여부를 확인합니다. 데이터 볼륨의 상태와 어떻게 해서 현재 상태가 되었는지에 대한 구체적인 정보를 제공하는 메시지가 표시될 수도 있습니다.

조건은 다양한 형태로 조합될 수 있습니다. 각각 고유의 컨텍스트에서 평가해야 합니다.

다음은 다양한 조합의 예입니다.

  • Bound - 이 예제에는 성공적으로 바인딩된 PVC가 표시됩니다.

    TypeBound이므로 StatusTrue입니다. PVC가 바인딩되지 않은 경우 StatusFalse입니다.

    PVC가 바인딩되면 PVC가 바인딩되었음을 알리는 이벤트가 생성됩니다. 이 경우 ReasonBound이고 StatusTrue입니다. Message는 데이터 볼륨이 속한 PVC를 나타냅니다.

    Events 섹션의 Message에서는 PVC가 바인딩된 기간(Age) 및 리소스(From)(이 경우 datavolume-controller)를 포함한 추가 세부 정보를 제공합니다.

    출력 예

    Status:
      Conditions:
        Last Heart Beat Time:  2020-07-15T03:58:24Z
        Last Transition Time:  2020-07-15T03:58:24Z
        Message:               PVC win10-rootdisk Bound
        Reason:                Bound
        Status:                True
        Type:                  Bound
    ...
      Events:
        Type     Reason     Age    From                   Message
        ----     ------     ----   ----                   -------
        Normal   Bound      24s    datavolume-controller  PVC example-dv Bound

  • Running - 이 경우 TypeRunning 이고 StatusFalse 입니다. 이로 인해 시도된 작업이 실패하여 Status가 True 에서 False 로 변경되었음을 나타냅니다.

    그러나 ReasonCompleted이고 Message 필드에 Import Complete라고 표시됩니다.

    Events 섹션의 ReasonMessage에는 실패한 작업에 대한 추가 문제 해결 정보가 포함되어 있습니다. 이 예제에서는 MessageEvents 섹션의 첫 번째 Warning에 나열된 404로 인해 연결할 수 없다는 내용이 표시됩니다.

    이러한 정보를 통해 가져오기 작업이 실행 중이며 데이터 볼륨에 액세스하려는 다른 작업에 대한 경합이 발생한다는 것을 알 수 있습니다.

    출력 예

    Status:
      Conditions:
        Last Heart Beat Time:  2020-07-15T04:31:39Z
        Last Transition Time:  2020-07-15T04:31:39Z
        Message:               Import Complete
        Reason:                Completed
        Status:                False
        Type:                  Running
    ...
      Events:
        Type     Reason       Age                From                   Message
        ----     ------       ----               ----                   -------
        Warning  Error        12s (x2 over 14s)  datavolume-controller  Unable to connect
        to http data source: expected status code 200, got 404. Status: 404 Not Found

  • ReadyTypeReady이고 StatusTrue이면 다음 예제와 같이 데이터 볼륨을 사용할 준비가 된 것입니다. 데이터 볼륨을 사용할 준비가 되지 않은 경우에는 StatusFalse입니다.

    출력 예

    Status:
      Conditions:
        Last Heart Beat Time: 2020-07-15T04:31:39Z
        Last Transition Time:  2020-07-15T04:31:39Z
        Status:                True
        Type:                  Ready

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.