8장. 문제 해결 및 디버깅 미터링

중요

미터링은 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.

OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.

다음 섹션을 사용하면 미터링과 관련된 특정 문제를 해결하고 디버그하는 데 도움이 됩니다.

이 섹션의 정보 외에도 다음 주제를 검토하십시오.

8.1. 미터링 문제 해결

미터링과 관련된 일반적인 문제는 Pod가 시작되지 않는 것입니다. 리소스가 부족하거나 StorageClass 또는 Secret 리소스와 같이 존재하지 않는 리소스에 대한 종속성이 있는 경우 Pod를 시작하지 못할 수 있습니다.

8.1.1. 컴퓨팅 리소스가 충분하지 않음

미터링을 설치하거나 실행하는 경우 일반적인 문제는 컴퓨팅 리소스의 부족입니다. 클러스터가 증가하고 더 많은 보고서가 생성되면 Reporting Operator Pod에 더 많은 메모리가 필요합니다. 메모리 사용량이 Pod 제한에 도달하면 클러스터에서 OOM(메모리 부족)을 고려하고 OOMKilled 상태로 종료합니다. 미터링에 설치 사전 요구 사항에 설명된 최소 리소스 요구 사항이 할당되어야 합니다.

참고

Metering Operator는 클러스터의 부하를 기반으로 Reporting Operator를 자동 확장하지 않습니다. 따라서 클러스터가 확장되면 Reporting Operator Pod의 CPU 사용량이 늘어나지 않습니다.

리소스 또는 일정 관련 문제가 있는지 확인하려면 Kubernetes 문서 Containers용 컴퓨팅 리소스 관리에 포함된 문제 해결 지침을 따르십시오.

컴퓨팅 리소스가 부족하여 문제를 해결하려면 openshift-metering 네임스페이스에서 다음을 확인합니다.

사전 요구 사항

  • openshift-metering 네임스페이스에 있어야 합니다. 다음을 실행하여 openshift-metering 네임스페이스로 변경합니다.

    $ oc project openshift-metering

절차

  1. 미터링 Report 리소스가 완료되지 않고 ReportingPeriodUnmetDependencies의 상태를 표시하는지 확인합니다.

    $ oc get reports

    출력 예

    NAME                                  QUERY                          SCHEDULE   RUNNING                            FAILED   LAST REPORT TIME       AGE
    namespace-cpu-utilization-adhoc-10    namespace-cpu-utilization                 Finished                                    2020-10-31T00:00:00Z   2m38s
    namespace-cpu-utilization-adhoc-11    namespace-cpu-utilization                 ReportingPeriodUnmetDependencies                                   2m23s
    namespace-memory-utilization-202010   namespace-memory-utilization              ReportingPeriodUnmetDependencies                                   26s
    namespace-memory-utilization-202011   namespace-memory-utilization              ReportingPeriodUnmetDependencies                                   14s

  2. NEWEST METRIC이 보고서 종료일보다 작은 ReportDataSource 리소스를 확인합니다.

    $ oc get reportdatasource

    출력 예

    NAME                                         EARLIEST METRIC        NEWEST METRIC          IMPORT START           IMPORT END             LAST IMPORT TIME       AGE
    ...
    node-allocatable-cpu-cores                   2020-04-23T09:14:00Z   2020-08-31T10:07:00Z   2020-04-23T09:14:00Z   2020-10-15T17:13:00Z   2020-12-09T12:45:10Z   230d
    node-allocatable-memory-bytes                2020-04-23T09:14:00Z   2020-08-30T05:19:00Z   2020-04-23T09:14:00Z   2020-10-14T08:01:00Z   2020-12-09T12:45:12Z   230d
    ...
    pod-usage-memory-bytes                       2020-04-23T09:14:00Z   2020-08-24T20:25:00Z   2020-04-23T09:14:00Z   2020-10-09T23:31:00Z   2020-12-09T12:45:12Z   230d

  3. 많은 Pod 재시작이 필요한 경우 reporting-operator Pod 리소스의 상태를 확인합니다.

    $ oc get pods -l app=reporting-operator

    출력 예

    NAME                                  READY   STATUS    RESTARTS   AGE
    reporting-operator-84f7c9b7b6-fr697   2/2     Running   542        8d 1

    1
    Reporting Operator Pod가 높은 속도로 다시 시작됩니다.
  4. OOMKilled 종료의 reporting-operator Pod 리소스를 확인합니다.

    $ oc describe pod/reporting-operator-84f7c9b7b6-fr697

    출력 예

    Name:         reporting-operator-84f7c9b7b6-fr697
    Namespace:    openshift-metering
    Priority:     0
    Node:         ip-10-xx-xx-xx.ap-southeast-1.compute.internal/10.xx.xx.xx
    ...
       Ports:          8080/TCP, 6060/TCP, 8082/TCP
       Host Ports:     0/TCP, 0/TCP, 0/TCP
       State:          Running
         Started:      Thu, 03 Dec 2020 20:59:45 +1000
       Last State:     Terminated
         Reason:       OOMKilled 1
         Exit Code:    137
         Started:      Thu, 03 Dec 2020 20:38:05 +1000
         Finished:     Thu, 03 Dec 2020 20:59:43 +1000

    1
    OOM 종료로 인해 Reporting Operator Pod가 종료되었습니다.
reporting-operator Pod 메모리 제한 증가

Pod 재시작이 증가하고 OOM 종료 이벤트가 발생하면 Reporting Operator Pod에 설정된 현재 메모리 제한을 확인할 수 있습니다. 메모리 제한을 늘리면 Reporting Operator Pod에서 보고서 데이터 소스를 업데이트할 수 있습니다. 필요한 경우 MeteringConfig 리소스의 메모리 제한을 25% - 50%까지 늘립니다.

절차

  1. reporting-operator Pod 리소스의 현재 메모리 제한을 확인합니다.

    $ oc describe pod reporting-operator-67d6f57c56-79mrt

    출력 예

    Name:         reporting-operator-67d6f57c56-79mrt
    Namespace:    openshift-metering
    Priority:     0
    ...
       Ports:          8080/TCP, 6060/TCP, 8082/TCP
       Host Ports:     0/TCP, 0/TCP, 0/TCP
       State:          Running
         Started:      Tue, 08 Dec 2020 14:26:21 +1000
       Ready:          True
       Restart Count:  0
       Limits:
         cpu:     1
         memory:  500Mi 1
       Requests:
         cpu:     500m
         memory:  250Mi
       Environment:
    ...

    1
    Reporting Operator Pod의 현재 메모리 제한입니다.
  2. MeteringConfig 리소스를 편집하여 메모리 제한을 업데이트합니다.

    $ oc edit meteringconfig/operator-metering

    MeteringConfig 리소스의 예입니다.

    kind: MeteringConfig
    metadata:
      name: operator-metering
      namespace: openshift-metering
    spec:
      reporting-operator:
      spec:
        resources: 1
          limits:
            cpu: 1
            memory: 750Mi
          requests:
            cpu: 500m
            memory: 500Mi
    ...

    1
    MeteringConfig 리소스의 resources 필드 내에 메모리 제한을 추가하거나 늘립니다.
    참고

    메모리 제한이 증가한 후에도 수많은 OOM 종료 이벤트가 계속 있는 경우 다른 문제로 인해 보고서가 보류 중임을 나타낼 수 있습니다.

8.1.2. StorageClass 리소스가 구성되지 않음

미터링에는 동적 프로비저닝을 위해 기본 StorageClass 리소스를 구성해야 합니다.

클러스터에 대한 StorageClass 리소스가 구성되어 있는지 확인하는 방법, 기본값을 설정하는 방법, 기본값 이외의 스토리지 클래스를 사용하도록 미터링을 구성하는 방법에 대한 자세한 내용은 미터링 설정 방법에 대한 문서를 참조하십시오.

8.1.3. secret이 올바르게 구성되지 않은 경우

미터링과 관련된 일반적인 문제는 영구 스토리지를 구성할 때 잘못된 시크릿을 제공하는 것입니다. 구성 파일 예제를 검토하고 스토리지 공급자의 지침에 따라 시크릿을 생성하십시오.