클러스터 오토스케일러 디버깅

클러스터 오토스케일러를 디버그해야 하는 옵션을 검토하고 실패의 근본 원인을 찾습니다.

시작하기 전에: Red Hat OpenShift 클러스터에 액세스하십시오.

1단계: 버전 확인

  1. 클러스터 오토스케일러 애드온이 설치되어 있고 사용 가능한 상태인지 확인하십시오.
    ibmcloud oc cluster addon ls --cluster CLUSTER_NAME
    
    출력 예
    Name                 Version   Health State   Health Status   
    cluster-autoscaler   1.0.4     normal         Addon Ready
    
  2. 클러스터에서 실행되는 버전을 클러스터 오토스케일러 추가 기능 변경 로그 의 최신 버전과 비교하십시오.
  3. 버전이 오래된 경우에는 클러스터에 최신 클러스터 오토스케일러 버전을 배치하십시오.

2단계: 구성 확인

클러스터 오토스케일러가 올바르게 구성되었는지 확인하십시오.

  1. 클러스터 오토스케일러 configmap의 YAML 구성 파일을 가져오십시오.

    oc get cm iks-ca-configmap -n kube-system -o yaml > iks-ca-configmap.yaml
    
  2. data.workerPoolsConfig.json 파일에서 올바른 작업자 풀이 작업자 풀당 최소 크기 및 최대 크기로 사용 가능한지 확인하십시오.

    • "name": "<worker_pool_name>": configmap의 작업자 풀 이름이 클러스터의 작업자 풀 이름과 정확히 동일해야 합니다. 여러 개의 작업자 풀은 쉼표로 구분되어야 합니다. 클러스터 작업자 풀의 이름을 확인하려면 ibmcloud oc worker-pool ls -c <cluster_name_or_ID>를 실행하십시오.
    • "minSize": 2: 일반적으로 minSize2 이상이어야 합니다.
    • "maxSize": 3: maxSizeminSize 이상이어야 합니다.
    • "enabled": true: 작업자 풀 오토스케일링을 사용으로 설정하려면 값을 true로 설정하십시오.
    data:
        workerPoolsConfig.json: |
            [{"name": "default", "minSize": 2, "maxSize": 3, "enabled": true }]
    
  3. metadata.annotations.workerPoolsConfigStatus 필드에서 FAILED CODE 오류 메시지를 확인하십시오. 오류 메시지에 있는 모든 복구 단계를 따르십시오. 예를 들어, 다음과 유사한 메시지가 표시될 수 있으며 사용자는 클러스터가 있는 리소스 그룹에 대한 올바른 권한이 있어야 합니다.

    annotations:
        workerPoolsConfigStatus: '{"1:3:default":"FAILED CODE: 400
        ...
        \"description\":\"Unable
        to validate the request with resource group manager.\",\"type\":\"Authentication\\"recoveryCLI\":\"To
        list available resource groups, run ''ibmcloud resource groups''. Make sure
        that your cluster and the other IBM Cloud resources that you are trying to use
        are in the same resource group. Verify that you have permissions to work with
        the resource group. If you think that the resource group is set up correctly
        and you still can't use it, contact IBM Cloud support.\"}"}'
    

3단계: 클러스터 오토스케일러 상태 검토

클러스터 오토스케일러의 상태를 검토하십시오.

oc describe cm -n kube-system cluster-autoscaler-status
  • status: 자세한 문제점 해결 정보는 상태 메시지를 검토하십시오(해당 경우).
  • Health: 오류 또는 실패는 클러스터 오토스케일러의 전체 상태를 검토하십시오.
  • ScaleUp: 확대 추진 현황을 검토하십시오. 일반적으로, 준비가 완료되어 등록된 워커 노드의 수가 일치한다면, 워커 풀에 충분한 워커 노드가 있으므로 스케일업에 NoActivity 가 발생합니다.
  • ScaleDown: 규모 축소 활동의 진행 상황을 검토하십시오. 클러스터 오토스케일러가 NoCandidates를 식별하는 경우 워크로드에서 요청된 리소스를 제거하지 않고는 작업자 노드를 삭제할 수 없으므로 작업자 풀이 스케일링 다운되지 않습니다.
  • Events: 자세한 문제점 해결 정보는 이벤트를 보십시오(해당 경우).

정상적인 클러스터 오토스케일러 상태의 예시

Data
====
status:
----
Cluster-autoscaler status at 2020-02-04 19:51:50.326683568 +0000 UTC:
Cluster-wide:
Health:      Healthy (ready=2 unready=0 notStarted=0 longNotStarted=0 registered=2longUnregistered=0)
            LastProbeTime:      2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
            LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleUp:     NoActivity (ready=2 registered=2)
            LastProbeTime:      2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
            LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleDown:   NoCandidates (candidates=0)
            LastProbeTime:      2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
            LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
Events:  none

4단계: 클러스터 오토스케일러 팟(Pod) 확인

클러스터 오토스케일러 팟(Pod)의 상태를 확인하십시오.

  1. 클러스터 오토스케일러 팟(Pod)을 가져오십시오. 상태가 실행 중이 아니면 팟(Pod)에 대해 설명하십시오.

    oc get pods -n kube-system | grep ibm-iks-cluster-autoscaler
    
  2. 클러스터 오토스케일러 팟(Pod)에 대해 설명하십시오. 자세한 문제점 해결 정보는 이벤트 섹션을 검토하십시오.

    oc describe pod -n kube-system <pod_name>
    
  3. Command 섹션을 검토하여 사용자 정의 클러스터 오토스케일러 구성이 예상한 것과 일치하는지 확인하십시오(예: scale-down-delay-after-add 값).

    Command:
        ./cluster-autoscaler
        --v=4
        --balance-similar-node-groups=true
        --alsologtostderr=true
        --stderrthreshold=info
        --cloud-provider=IKS
        --skip-nodes-with-local-storage=true
        --skip-nodes-with-system-pods=true
        --scale-down-unneeded-time=10m
        --scale-down-delay-after-add=10m
        --scale-down-delay-after-delete=10m
        --scale-down-utilization-threshold=0.5
        --scan-interval=1m
        --expander=random
        --leader-elect=false
        --max-node-provision-time=120m
    

5단계: 팟(Pod) 로그 검색

클러스터 오토스케일러 포드의 로그에서 ‘ lastScaleDownFailTime ’이나 ‘ Final scale-up plan ’과 같은 오류 메시지, 또는 클러스터 오토스케일러 이벤트 등 관련 메시지를 검색하십시오.

클러스터 오토스케일러 포드가 비정상 상태여서 로그를 스트리밍할 수 없는 경우, IBM Cloud Logs 인스턴스에서 해당 포드의 로그를 확인해 보세요. 클러스터 관리자가 클러스터에 대한 IBM Cloud Logs를 사용으로 설정하지 않은 경우에는 검토할 로그가 없을 수 있습니다.

oc logs -n kube-system <pod_name> -c ibm-iks-cluster-autoscaler > logs.txt

6단계: 포드를 다시 시작합니다

실패 또는 오류 메시지를 찾을 수 없으며 로깅을 이미 사용으로 설정한 경우에는 클러스터 오토스케일러 팟(Pod)을 다시 시작하십시오. 배치하면 팟(Pod)이 다시 작성됩니다.

oc delete pod -n kube-system <pod_name>

6단계: 사용 안함 또는 다시 사용

선택사항: 디버깅 단계를 완료하고 클러스터가 여전히 확장되지 않은 경우에는 구성 맵을 편집하여 자동 확장기를 사용 안함으로 설정한 후 다시 사용으로 설정할 수 있습니다.

  1. iks-ca-configmap을 편집하십시오.

    oc edit cm iks-ca-configmap -n kube-system
    

    출력 예:

    apiVersion: v1
    data:
    workerPoolsConfig.json: |
        [{"name": "default", "minSize": 2, "maxSize": 5, "enabled": true }]
    kind: ConfigMap
    metadata:
    annotations:
        workerPoolsConfigStatus: '{"2:5:default":"SUCCESS"}'
    creationTimestamp: "2020-03-24T17:44:35Z"
    name: iks-ca-configmap
    namespace: kube-system
    resourceVersion: "40964517"
    selfLink: /api/v1/namespaces/kube-system/configmaps/iks-ca-configmap
    uid: 11a1111a-aaaa-1a11-aaa1-aa1aaaa11111
    
  2. enabled 매개변수를 false로 설정하고 변경사항을 저장하십시오.

  3. iks-ca-configmap을 다시 편집하십시오. enabled 매개변수를 true로 설정하고 변경사항을 저장하십시오.

    oc edit cm iks-ca-configmap -n kube-system
    
  4. 클러스터 자동 확장기를 사용 안함으로 설정하고 다시 사용으로 설정한 후에도 클러스터가 확장되지 않은 경우, minSize에서 maxSize 또는 iks-ca-configmap 매개변수를 편집할 수 있습니다. 경우에 따라 minSizemaxSize 작업자 매개변수를 편집하면 클러스터 오토스케일러가 다시 시작됩니다.

    oc edit cm iks-ca-configmap -n kube-system
    
  5. minSize 또는 maxSize 매개변수를 편집하고 변경사항을 저장하십시오.

7단계: 문제가 해결되었는지 확인하기

문제가 해결되었는지 확인하려면 클러스터에서 클러스터 오토스케일러 활동을 모니터하십시오. 문제가 지속되는 경우에는 피드백, 질문 및 지원을 참조하십시오.