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 웹 콘솔을 사용하여 가상 머신 로그를 볼 수 있습니다.
절차
-
가상화
VirtualMachines 로 이동합니다. - 가상 머신을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
- 세부 정보 탭에서 Pod 이름을 클릭하여 Pod 세부 정보 페이지를 엽니다.
- 로그를 보려면 로그 탭을 클릭합니다.
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의 로그를 볼 수 있습니다.
절차
다음 명령을 실행하여 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
다음 명령을 실행하여 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 로그의 상세 수준을 구성할 수 있습니다.
절차
특정 구성 요소에 대한 로그 세부 정보 표시를 설정하려면 다음 명령을 실행하여 기본 텍스트 편집기에서
HyperConverged
CR을 엽니다.$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
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
구성 요소 로그가 노출됩니다.
- 편집기를 저장하고 종료하여 변경 사항을 적용합니다.
14.4.2.2.3. 일반적인 오류 메시지
OpenShift Virtualization 로그에 다음과 같은 오류 메시지가 표시될 수 있습니다.
ErrImagePull
또는ImagePullBackOff
- 잘못된 배포 구성 또는 참조된 이미지의 문제를 나타냅니다.
14.4.2.3. CloudEventStack을 사용하여 집계된 OpenShift Virtualization 로그 보기
웹 콘솔에서 ScanSettingStack을 사용하여 OpenShift Virtualization pod 및 컨테이너에 대한 집계된 로그를 볼 수 있습니다.
사전 요구 사항
- generatedStack을 배포했습니다.
절차
- 웹 콘솔에서 모니터링 → 로그 로 이동합니다.
-
로그 유형 목록에서
virt-launcher
Pod 로그 또는 인프라 에 대해 애플리케이션, OpenShift Virtualization 컨트롤 플레인 Pod 및 컨테이너를 선택합니다. - 쿼리 표시를 클릭하여 쿼리 필드를 표시합니다.
- 쿼리 필드에 LogQL 쿼리를 입력하고 실행을 클릭하여 필터링된 로그를 표시합니다.
14.4.2.3.1. OpenShift Virtualization LogQL 쿼리
웹 콘솔의 모니터링
기본 로그 유형은 infrastructure 입니다. virt-launcher
로그 유형은 application 입니다.
선택 사항: 줄 필터 식을 사용하여 문자열 또는 정규식을 포함하거나 제외할 수 있습니다.
쿼리가 많은 수의 로그와 일치하는 경우 쿼리 시간이 초과될 수 있습니다.
구성 요소 | LogQL query |
---|---|
All |
{log_type=~".+"}|json |kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster" |
|
{log_type=~".+"}|json |kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster" |kubernetes_labels_app_kubernetes_io_component="storage" |
|
{log_type=~".+"}|json |kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster" |kubernetes_labels_app_kubernetes_io_component="deployment" |
|
{log_type=~".+"}|json |kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster" |kubernetes_labels_app_kubernetes_io_component="network" |
|
{log_type=~".+"}|json |kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster" |kubernetes_labels_app_kubernetes_io_component="compute" |
|
{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"
|
| 이 쿼리를 실행하기 전에 로그 유형 목록에서 애플리케이션을 선택해야 합니다. {log_type=~".+", kubernetes_container_name="compute"}|json
|!= "custom-ga-command" 1
|
줄 필터 식을 사용하여 문자열 또는 정규식을 포함하거나 제외하도록 로그 행을 필터링할 수 있습니다.
라인 필터 표현식 | 설명 |
---|---|
| 로그 줄에는 문자열이 포함됩니다. |
| 로그 줄에 문자열이 포함되지 않음 |
| 로그 줄에 정규식이 포함되어 있습니다. |
| 로그 줄에 정규식이 포함되어 있지 않음 |
줄 필터 표현식 예
{log_type=~".+"}|json |kubernetes_labels_app_kubernetes_io_part_of="hyperconverged-cluster" |= "error" != "timeout"
14.4.2.3.2. ScanSettingStack 및 LogQL에 대한 추가 리소스
- 로그 스토리지 정보
- LokiStack 배포
- Grafana 문서의 LogQL 로그 쿼리
14.4.3. 데이터 볼륨 문제 해결
DataVolume
오브젝트의 Conditions
및 Events
섹션을 확인하여 문제를 분석하고 해결할 수 있습니다.
14.4.3.1. 데이터 볼륨 조건 및 이벤트 정보
다음 명령으로 생성된 Conditions
및 Events
섹션의 출력을 검사하여 데이터 볼륨 문제를 진단할 수 있습니다.
$ 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
명령으로 생성된 Conditions
및 Events
섹션을 검사하여 PVC(영구 볼륨 클레임)와 관련된 데이터 볼륨 상태 및 작업이 활발하게 실행되고 있거나 완료되었는지의 여부를 확인합니다. 데이터 볼륨의 상태와 어떻게 해서 현재 상태가 되었는지에 대한 구체적인 정보를 제공하는 메시지가 표시될 수도 있습니다.
조건은 다양한 형태로 조합될 수 있습니다. 각각 고유의 컨텍스트에서 평가해야 합니다.
다음은 다양한 조합의 예입니다.
Bound
- 이 예제에는 성공적으로 바인딩된 PVC가 표시됩니다.Type
은Bound
이므로Status
가True
입니다. PVC가 바인딩되지 않은 경우Status
는False
입니다.PVC가 바인딩되면 PVC가 바인딩되었음을 알리는 이벤트가 생성됩니다. 이 경우
Reason
은Bound
이고Status
는True
입니다.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
- 이 경우Type
은Running
이고Status
는False
입니다. 이로 인해 시도된 작업이 실패하여 Status가True
에서False
로 변경되었음을 나타냅니다.그러나
Reason
이Completed
이고Message
필드에Import Complete
라고 표시됩니다.Events
섹션의Reason
및Message
에는 실패한 작업에 대한 추가 문제 해결 정보가 포함되어 있습니다. 이 예제에서는Message
에Events
섹션의 첫 번째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
Ready
–Type
이Ready
이고Status
가True
이면 다음 예제와 같이 데이터 볼륨을 사용할 준비가 된 것입니다. 데이터 볼륨을 사용할 준비가 되지 않은 경우에는Status
가False
입니다.출력 예
Status: Conditions: Last Heart Beat Time: 2020-07-15T04:31:39Z Last Transition Time: 2020-07-15T04:31:39Z Status: True Type: Ready