클러스터 자동 확장 처리 이벤트 보기


이 페이지에서는 Google Kubernetes Engine(GKE)의 클러스터 자동 확장 처리에서 내보내는 공개 상태 이벤트에 대한 정보를 제공합니다. 이러한 이벤트를 분석하면 클러스터 자동 확장 처리가 클러스터의 확장을 관리하는 방식을 확인하고 결정의 이유를 이해할 수 있습니다.

GKE 클러스터 자동 확장 처리는 Cloud Logging에서 로그 항목으로 사용할 수 있는 공개 상태 이벤트를 발생시킵니다. 이 가이드에서 설명하는 이벤트는 클러스터 자동 확장 처리에서 생성된 Kubernetes 이벤트와 별개입니다.

요구사항

자동 확장 처리 이벤트를 보려면 클러스터에서 Cloud Logging을 사용 설정해야 합니다. Logging이 중지되면 이벤트가 생성되지 않습니다.

이벤트 보기

클러스터 자동 확장 처리의 공개 상태 이벤트는 GKE 클러스터가 있는 프로젝트와 동일한 프로젝트의 Cloud Logging 로그에 저장됩니다. Google Cloud 콘솔의 Google Kubernetes Engine 페이지에 있는 알림에서도 이러한 이벤트를 볼 수 있습니다.

공개 상태 이벤트 로그 보기

로그를 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.

    Kubernetes 클러스터로 이동

  2. 클러스터 세부정보 페이지를 볼 클러스터 이름을 선택합니다.

  3. 클러스터 세부정보 페이지에서 로그 탭을 클릭합니다.

  4. 로그 탭에서 자동 확장 처리 로그 탭을 클릭하여 로그를 봅니다.

  5. (선택사항) 고급 필터를 적용하여 결과의 범위를 좁히려면 페이지 오른쪽의 화살표가 있는 버튼을 클릭하여 로그 탐색기에서 로그를 봅니다.

공개 상태 이벤트 알림 보기

Google Kubernetes Engine 페이지에서 공개 상태 이벤트 알림을 보려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 확장과 관련된 알림을 찾으려면 특정 클러스터의 알림 열을 확인하세요.

  3. 알림을 클릭하여 자세한 정보, 권장 작업을 확인하고 이 이벤트의 로그에 액세스합니다.

이벤트 유형

로깅된 모든 이벤트는 JSON 형식이며, 로그 항목의 jsonPayload 필드에서 찾을 수 있습니다. 이벤트의 모든 타임스탬프는 UNIX 초 타임스탬프입니다.

다음은 클러스터 자동 확장 처리에서 발생시킨 이벤트 유형을 요약한 것입니다.

이벤트 유형 설명
status 주기적으로 발생하며, 자동 확장된 모든 노드 풀의 크기와 클러스터 자동 확장 처리에서 관찰되는 자동 확장된 모든 노드 풀의 대상 크기를 설명합니다.
scaleUp 클러스터 자동 확장 처리가 클러스터를 확장할 때 발생합니다.
scaleDown 클러스터 자동 확장 처리가 클러스터를 축소할 때 발생합니다.
eventResult scaleUp 또는 scaleDown 이벤트가 성공적으로 완료되거나 실패할 때 발생합니다.
nodePoolCreated 노드 자동 프로비저닝이 사용 설정된 클러스터 자동 확장 처리가 새 노드 풀을 만들 때 발생합니다.
nodePoolDeleted 노드 자동 프로비저닝이 사용 설정된 클러스터 자동 확장 처리가 노드 풀을 삭제할 때 발생합니다.
noScaleUp 클러스터에 예약할 수 없는 Pod가 있고 클러스터 자동 확장 처리가 Pod를 수용하도록 클러스터를 확장할 수 없을 때 발생합니다.
noScaleDown 클러스터 자동 확장 처리에 의한 삭제가 차단된 노드가 있을 때 발생합니다.

상태 이벤트

status 이벤트는 주기적으로 발생하며, 자동 확장된 모든 노드 풀의 실제 크기와 클러스터 자동 확장 처리에서 관찰되는 자동 확장된 모든 노드 풀의 대상 크기를 설명합니다.

다음 로그 샘플은 status 이벤트를 보여줍니다.

{
  "status": {
    "autoscaledNodesCount": 4,
    "autoscaledNodesTarget": 4,
    "measureTime": "1582898536"
  }
}

scaleUp 이벤트

scaleUp 이벤트는 클러스터 자동 확장 처리가 클러스터를 확장할 때 발생합니다. 자동 확장 처리는 노드 풀의 기본 관리형 인스턴스 그룹(MIG)을 확장하여 클러스터의 노드 풀 크기를 확장합니다. 수직 확장 작동 방식에 대한 자세한 내용은 Kubernetes 클러스터 자동 확장 처리 FAQ에서 수직 확장 작동 방식을 참조하세요.

이벤트에는 확장된 MIG, 노드 수, 이벤트를 트리거한 예약할 수 없는 포드에 대한 정보가 포함되어 있습니다.

트리거하는 Pod 목록은 50개의 임의 항목으로 잘립니다. 트리거하는 Pod의 실제 개수는 triggeringPodsTotalCount 필드에서 찾을 수 있습니다.

다음 로그 샘플은 scaleUp 이벤트를 보여줍니다.

{
  "decision": {
    "decideTime": "1582124907",
    "eventId": "ed5cb16d-b06f-457c-a46d-f75dcca1f1ee",
    "scaleUp": {
      "increasedMigs": [
        {
          "mig": {
            "name": "test-cluster-default-pool-a0c72690-grp",
            "nodepool": "default-pool",
            "zone": "us-central1-c"
          },
          "requestedNodes": 1
        }
      ],
      "triggeringPods": [
        {
          "controller": {
            "apiVersion": "apps/v1",
            "kind": "ReplicaSet",
            "name": "test-85958b848b"
          },
          "name": "test-85958b848b-ptc7n",
          "namespace": "default"
        }
      ],
      "triggeringPodsTotalCount": 1
    }
  }
}

scaleDown 이벤트

scaleDown 이벤트는 클러스터 자동 확장 처리가 클러스터를 축소할 때 발생합니다. 축소 작동 방식에 대한 자세한 내용은 Kubernetes 클러스터 자동 확장 처리 FAQ에서 축소 작동 방식을 참조하세요.

cpuRatiomemRatio 필드는 노드의 CPU 및 메모리 사용률을 백분율로 설명합니다. 이 사용률은 Pod 요청의 합계를 실제 사용률이 아닌 할당 가능한 노드로 나눈 값입니다.

제거된 Pod 목록은 50개의 임의 항목으로 잘립니다. 제거된 Pod의 실제 개수는 evictedPodsTotalCount 필드에서 찾을 수 있습니다.

다음 쿼리를 사용하여 클러스터 자동 확장 처리가 노드를 축소했는지 확인합니다.

resource.type="k8s_cluster" \
resource.labels.location=COMPUTE_REGION \
resource.labels.cluster_name=CLUSTER_NAME \
log_id("container.googleapis.com/cluster-autoscaler-visibility") \
( "decision" NOT "noDecisionStatus" )

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름

  • COMPUTE_REGION: 클러스터의 Compute Engine 리전(예: us-central1)

다음 로그 샘플은 scaleDown 이벤트를 보여줍니다.

{
  "decision": {
    "decideTime": "1580594665",
    "eventId": "340dac18-8152-46ff-b79a-747f70854c81",
    "scaleDown": {
      "nodesToBeRemoved": [
        {
          "evictedPods": [
            {
              "controller": {
                "apiVersion": "apps/v1",
                "kind": "ReplicaSet",
                "name": "kube-dns-5c44c7b6b6"
              },
              "name": "kube-dns-5c44c7b6b6-xvpbk"
            }
          ],
          "evictedPodsTotalCount": 1,
          "node": {
            "cpuRatio": 23,
            "memRatio": 5,
            "mig": {
              "name": "test-cluster-default-pool-c47ef39f-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-f"
            },
            "name": "test-cluster-default-pool-c47ef39f-p395"
          }
        }
      ]
    }
  }
}

또한 실행 중인 워크로드가 없는 노드에서도 scale-down 이벤트를 볼 수 있습니다(일반적으로 DaemonSet에서 만든 시스템 포드만).

다음 쿼리를 사용하여 이벤트 로그를 확인합니다.

resource.type="k8s_cluster" \
resource.labels.project_id=PROJECT_ID \
resource.labels.location=COMPUTE_REGION \
resource.labels.cluster_name=CLUSTER_NAME \
severity>=DEFAULT \
logName="projects/PROJECT_ID/logs/events" \
("Scale-down: removing empty node")

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID

  • CLUSTER_NAME: 클러스터의 이름

  • COMPUTE_REGION: 클러스터의 Compute Engine 리전(예: us-central1)

eventResult 이벤트

eventResult 이벤트는 scaleUp 또는 scaleDown 이벤트가 성공적으로 완료되거나 실패할 때 발생합니다. 이 이벤트에는 오류 메시지와 함께 scaleUp 또는 scaleDown 이벤트 eventId 필드에 있는 이벤트 ID 목록이 포함되어 있습니다. 빈 오류 메시지는 이벤트가 성공적으로 완료되었음을 나타냅니다. eventResult 이벤트 목록은 results 필드에 집계됩니다.

오류를 진단하려면 ScaleUp 오류ScaleDown 오류 섹션을 참조하세요.

다음 로그 샘플은 eventResult 이벤트를 보여줍니다.

{
  "resultInfo": {
    "measureTime": "1582878896",
    "results": [
      {
        "eventId": "2fca91cd-7345-47fc-9770-838e05e28b17"
      },
      {
        "errorMsg": {
          "messageId": "scale.down.error.failed.to.delete.node.min.size.reached",
          "parameters": [
            "test-cluster-default-pool-5c90f485-nk80"
          ]
        },
        "eventId": "ea2e964c-49b8-4cd7-8fa9-fefb0827f9a6"
      }
    ]
  }
}

nodePoolCreated 이벤트

nodePoolCreated 이벤트는 노드 자동 프로비저닝이 사용 설정된 클러스터 자동 확장 처리가 새 노드 풀을 만들 때 발생합니다. 이 이벤트에는 생성된 노드 풀의 이름과 해당 기본 MIG 목록이 포함되어 있습니다. scaleUp 이벤트로 인해 노드 풀이 생성된 경우 해당 scaleUp 이벤트의 eventIdtriggeringScaleUpId 필드에 포함됩니다.

다음 로그 샘플은 nodePoolCreated 이벤트를 보여줍니다.

{
  "decision": {
    "decideTime": "1585838544",
    "eventId": "822d272c-f4f3-44cf-9326-9cad79c58718",
    "nodePoolCreated": {
      "nodePools": [
        {
          "migs": [
            {
              "name": "test-cluster-nap-n1-standard--b4fcc348-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-f"
            },
            {
              "name": "test-cluster-nap-n1-standard--jfla8215-grp",
              "nodepool": "nap-n1-standard-1-1kwag2qv",
              "zone": "us-central1-c"
            }
          ],
          "name": "nap-n1-standard-1-1kwag2qv"
        }
      ],
      "triggeringScaleUpId": "d25e0e6e-25e3-4755-98eb-49b38e54a728"
    }
  }
}

nodePoolDeleted 이벤트

nodePoolDeleted 이벤트는 노드 자동 프로비저닝이 사용 설정된 클러스터 자동 확장 처리가 노드 풀을 삭제할 때 발생합니다.

다음 로그 샘플은 nodePoolDeleted 이벤트를 보여줍니다.

{
  "decision": {
    "decideTime": "1585830461",
    "eventId": "68b0d1c7-b684-4542-bc19-f030922fb820",
    "nodePoolDeleted": {
      "nodePoolNames": [
        "nap-n1-highcpu-8-ydj4ewil"
      ]
    }
  }
}

noScaleUp 이벤트

noScaleUp 이벤트는 클러스터에 예약할 수 없는 Pod가 있고 클러스터 자동 확장 처리가 Pod를 수용하도록 클러스터를 확장할 수 없을 때 주기적으로 발생합니다.

  • noScaleUp 이벤트는 최선의 방법입니다. 즉, 이러한 이벤트는 클러스터 자동 확장 처리가 확장할 수 없는 가능한 모든 이유를 포괄하지 않습니다.
  • noScaleUp 이벤트는 생성된 로그 볼륨을 제한하도록 제한됩니다. 지속되는 각 이유는 몇 분마다 발생합니다.
  • 모든 이유는 여러 이벤트에 임의로 분할될 수 있습니다. 예를 들어 단일 Pod 그룹의 거부된 모든 MIG 이유가 동일한 이벤트에 나타난다는 보장은 없습니다.
  • 처리되지 않은 Pod 그룹 목록은 50개의 임의 항목으로 잘립니다. 처리되지 않은 Pod 그룹의 실제 개수는 unhandledPodGroupsTotalCount 필드에서 찾을 수 있습니다.

이유 필드

다음 필드는 확장이 발생하지 않은 이유를 설명하는 데 도움이 됩니다.

  • reason: 클러스터 자동 확장 처리가 확장되지 않는 전역 이유를 제공합니다. 자세한 내용은 noScaleUp 최상위 수준 이유 섹션을 참조하세요.
  • napFailureReason: 클러스터 자동 확장 처리가 추가 노드 풀을 프로비저닝하지 못하도록 하는 전역 이유를 제공합니다(예: 노드 자동 프로비저닝이 사용 중지됨). 자세한 내용은 noScaleUp 최상위 수준 노드 자동 프로비저닝 이유 섹션을 참조하세요.
  • skippedMigs[].reason: 특정 MIG를 건너뛴 이유에 대한 정보를 제공합니다. 클러스터 자동 확장 처리는 확장 시도 도중 Pod 고려 대상에서 일부 MIG를 건너뜁니다(예: 노드를 하나 더 추가하면 클러스터 전체 리소스 한도를 초과하기 때문에). 자세한 내용은 noScaleUp MIG 수준 이유 섹션을 참조하세요.
  • unhandledPodGroups: 예약할 수 없는 특정 Pod 그룹이 확장을 트리거하지 않는 이유에 대한 정보가 포함되어 있습니다. Pod는 직접 실행 컨트롤러별로 그룹화됩니다. 컨트롤러가 없는 Pod는 그 자체로 그룹에 속합니다. 각 Pod 그룹에는 임의의 예시 Pod와 그룹의 Pod 수뿐 아니라 다음과 같은 이유가 포함되어 있습니다.
    • napFailureReasons: 클러스터 자동 확장 처리가 이 Pod 그룹을 수용하기 위해 새 노드 풀을 프로비저닝할 수 없는 이유(예: Pod에 어피니티 제약조건이 있음). 자세한 내용은 noScaleUp 포드 수준 노드 자동 프로비저닝 이유 섹션을 참조하세요.
    • rejectedMigs[].reason: 클러스터 자동 확장 처리가 이 Pod 그룹을 수용하기 위해 특정 MIG의 크기를 늘릴 수 없는 MIG별 이유(예: MIG의 노드가 Pod에 비해 너무 작음). 자세한 내용은 noScaleUp MIG 수준 이유 섹션을 참조하세요.

다음 로그 샘플은 noScaleUp 이벤트를 보여줍니다.

{
  "noDecisionStatus": {
    "measureTime": "1582523362",
    "noScaleUp": {
      "skippedMigs": [
        {
          "mig": {
            "name": "test-cluster-nap-n1-highmem-4-fbdca585-grp",
            "nodepool": "nap-n1-highmem-4-1cywzhvf",
            "zone": "us-central1-f"
          },
          "reason": {
            "messageId": "no.scale.up.mig.skipped",
            "parameters": [
              "max cluster cpu limit reached"
            ]
          }
        }
      ],
      "unhandledPodGroups": [
        {
          "napFailureReasons": [
            {
              "messageId": "no.scale.up.nap.pod.zonal.resources.exceeded",
              "parameters": [
                "us-central1-f"
              ]
            }
          ],
          "podGroup": {
            "samplePod": {
              "controller": {
                "apiVersion": "v1",
                "kind": "ReplicationController",
                "name": "memory-reservation2"
              },
              "name": "memory-reservation2-6zg8m",
              "namespace": "autoscaling-1661"
            },
            "totalPodCount": 1
          },
          "rejectedMigs": [
            {
              "mig": {
                "name": "test-cluster-default-pool-b1808ff9-grp",
                "nodepool": "default-pool",
                "zone": "us-central1-f"
              },
              "reason": {
                "messageId": "no.scale.up.mig.failing.predicate",
                "parameters": [
                  "NodeResourcesFit",
                  "Insufficient memory"
                ]
              }
            }
          ]
        }
      ],
      "unhandledPodGroupsTotalCount": 1
    }
  }
}

noScaleDown 이벤트

noScaleDown 이벤트는 클러스터 자동 확장 처리에 의한 삭제가 차단된 노드가 있을 때 주기적으로 발생합니다.

  • 사용률이 높기 때문에 제거할 수 없는 노드는 noScaleDown 이벤트에 포함되지 않습니다.
  • noScaleDown 이벤트는 최선의 방법입니다. 즉, 이러한 이벤트는 클러스터 자동 확장 처리가 축소할 수 없는 가능한 모든 이유를 포괄하지 않습니다.
  • noScaleDown 이벤트는 생성된 로그 볼륨을 제한하도록 제한됩니다. 지속되는 각 이유는 몇 분마다 발생합니다.
  • 노드 목록은 50개의 임의 항목으로 잘립니다. 실제 노드 수는 nodesTotalCount 필드에서 찾을 수 있습니다.

이유 필드

다음 필드는 축소가 발생하지 않은 이유를 설명하는 데 도움이 됩니다.

  • reason: 클러스터 자동 확장 처리가 축소되지 않는 전역 이유를 제공합니다(예: 최근 확장 후 백오프 기간). 자세한 내용은 noScaleDown 최상위 수준 이유 섹션을 참조하세요.
  • nodes[].reason: 클러스터 자동 확장 처리가 특정 노드를 삭제할 수 없는 노드별 이유를 제공합니다(예: 노드의 Pod를 이동할 위치가 없음). 자세한 내용은 noScaleDown 노드 수준 이유 섹션을 참조하세요.

다음 로그 샘플은 noScaleDown 이벤트를 보여줍니다.

{
  "noDecisionStatus": {
    "measureTime": "1582858723",
    "noScaleDown": {
      "nodes": [
        {
          "node": {
            "cpuRatio": 42,
            "mig": {
              "name": "test-cluster-default-pool-f74c1617-grp",
              "nodepool": "default-pool",
              "zone": "us-central1-c"
            },
            "name": "test-cluster-default-pool-f74c1617-fbhk"
          },
          "reason": {
            "messageId": "no.scale.down.node.no.place.to.move.pods"
          }
        }
      ],
      "nodesTotalCount": 1,
      "reason": {
        "messageId": "no.scale.down.in.backoff"
      }
    }
  }
}

메시지

클러스터 자동 확장 처리가 발생시킨 이벤트는 매개변수화된 메시지를 사용하여 이벤트에 대한 설명을 제공합니다. 이 NoScaleUp 이벤트 예시 로그에서와 같이 parameters 필드는 messageId 필드와 함께 사용할 수 있습니다.

이 섹션에서는 다양한 messageId 및 해당 매개변수에 대한 설명을 제공합니다. 하지만 가능한 모든 메시지가 이 섹션에 포함되지는 않으며 언제든지 확장될 수 있습니다.

scaleUp 오류

scaleUp 이벤트의 이벤트 오류 메시지는 해당 eventResult 이벤트의 resultInfo.results[].errorMsg 필드에 있습니다.

메시지 세부정보 매개변수 위험 완화
"scale.up.error.out.of.resources" GPU 또는 CPU와 같은 Compute Engine 리소스를 현재 사용할 수 없어서 요청을 처리할 수 없는 영역에서 새 리소스를 요청하려고 하면 오류가 발생합니다. 실패 MIG ID Compute Engine 문서의 리소스 가용성 문제 해결 단계를 따릅니다.
"scale.up.error.quota.exceeded" Compute Engine 할당량 초과로 인해 일부 MIG를 늘릴 수 없어 scaleUp 이벤트가 실패했습니다. 실패 MIG ID Google Cloud 콘솔의 MIG에 있는 오류 탭에서 초과되는 할당량을 확인합니다. 초과된 할당량을 확인한 후 안내에 따라 할당량 증가를 요청합니다.
"scale.up.error.waiting.for.instances.timeout" 시간 초과로 인해 관리형 인스턴스 그룹을 수직 확장할 수 없습니다. 실패 MIG ID 이 메시지는 일시적입니다. 문제가 계속되면 추가 조사를 위해 Cloud Customer Care에 문의하세요.
"scale.up.error.ip.space.exhausted" 일부 관리형 인스턴스 그룹의 인스턴스에서 IP가 소진되었기 때문에 수직 확장할 수 없습니다. 즉, 클러스터에 새 노드 또는 포드를 추가하는 데 사용할 할당되지 않은 IP 주소 공간이 충분하지 않습니다. 실패 MIG ID 포드의 IP 주소 공간 부족의 문제 해결 단계를 따르세요.
"scale.up.error.service.account.deleted" 서비스 계정이 삭제되었기 때문에 수직 확장할 수 없습니다. 실패 MIG ID 서비스 계정 삭제 취소를 시도합니다. 이 절차가 실패하면 추가 조사를 위해 Cloud Customer Care에 문의하세요.

noScaleUp 이벤트의 이유

noScaleUp 이벤트는 클러스터에 예약할 수 없는 포드가 있고 클러스터 자동 확장 처리가 포드를 예약하도록 클러스터를 확장할 수 없을 때 주기적으로 발생합니다. noScaleUp 이벤트는 최선의 방법이며 가능한 모든 사례를 포괄하지는 않습니다.

NoScaleUp 최상위 수준 이유

noScaleUp 이벤트의 최상위 수준 이유 메시지는 noDecisionStatus.noScaleUp.reason 필드에 표시됩니다. 메시지에는 클러스터 자동 확장 처리가 클러스터를 확장할 수 없는 최상위 수준 이유가 포함되어 있습니다.

메시지 세부정보 위험 완화
"no.scale.up.in.backoff" 수직 확장이 백오프 기간(일시적으로 차단됨)이기 때문에 수직 확장되지 않았습니다. 이 메시지는 포드 수가 많은 확장 이벤트 중에 발생할 수 있습니다. 이 메시지는 일시적입니다. 몇 분 후에 이 오류를 확인하세요. 이 메시지가 지속되면 추가 조사를 위해 Cloud Customer Care에 문의하세요.

noScaleUp 최상위 수준 노드 자동 프로비저닝 이유

noScaleUp 이벤트의 최상위 수준 노드 자동 프로비저닝 이유 메시지는 noDecisionStatus.noScaleUp.napFailureReason 필드에 표시됩니다. 메시지에는 클러스터 자동 확장 처리가 새 노드 풀을 프로비저닝할 수 없는 최상위 수준 이유가 포함되어 있습니다.

메시지 세부정보 위험 완화
"no.scale.up.nap.disabled"

클러스터 수준에서 노드 자동 프로비저닝이 사용 설정되지 않아 노드 자동 프로비저닝을 확장할 수 없습니다.

노드 자동 프로비저닝을 사용 중지한 경우 대기 중인 포드에 기존 노드 풀로 충족할 수 없는 요구사항이 있으면 새 노드가 자동으로 프로비저닝되지 않습니다.

클러스터 구성을 검토하고 노드 자동 프로비저닝 사용 설정을 고려하세요.

noScaleUp MIG 수준 이유

noScaleUp 이벤트의 MIG 수준 이유 메시지는 noDecisionStatus.noScaleUp.skippedMigs[].reasonnoDecisionStatus.noScaleUp.unhandledPodGroups[].rejectedMigs[].reason 필드에 표시됩니다. 메시지에는 클러스터 자동 확장 처리가 특정 MIG의 크기를 늘릴 수 없는 이유가 포함되어 있습니다.

메시지 세부정보 매개변수 위험 완화
"no.scale.up.mig.skipped" 시뮬레이션 중에 MIG를 건너뛰었기 때문에 MIG를 확장할 수 없습니다. MIG를 건너뛴 이유(예: 포드 요구사항 누락) 오류 메시지에 포함된 파라미터를 검토하고 MIG를 건너뛴 이유를 확인합니다.
"no.scale.up.mig.failing.predicate" 대기 중인 피드에 대한 실패한 예약 조건자로 인해 노드 풀을 수직 확장할 수 없습니다. 실패 조건자의 이름 및 실패 이유 어피니티 규칙, taint 또는 톨러레이션(toleration)과 같은 포드 요구사항과 리소스 요구사항을 검토합니다.

noScaleUp Pod 그룹 수준 노드 자동 프로비저닝 이유

noScaleUp 이벤트의 포드 그룹 수준 노드 자동 프로비저닝 이유 메시지는 noDecisionStatus.noScaleUp.unhandledPodGroups[].napFailureReasons[] 필드에 표시됩니다. 메시지에는 클러스터 자동 확장 처리가 특정 포드 그룹을 예약하기 위해 새 노드 풀을 프로비저닝할 수 없는 이유가 포함되어 있습니다.

메시지 세부정보 매개변수 위험 완화
"no.scale.up.nap.pod.gpu.no.limit.defined" 대기 중인 포드에 GPU 요청이 있으므로 노드 자동 프로비저닝이 노드 그룹을 프로비저닝할 수 없지만 GPU 리소스 제한은 클러스터 수준에서 정의되지 않습니다. 요청된 GPU 유형 대기 중인 포드의 GPU 요청을 검토하고 클러스터 수준 노드 자동 프로비저닝 GPU 한도 구성을 업데이트합니다.
"no.scale.up.nap.pod.gpu.type.not.supported" 알 수 없는 GPU 유형에 대한 요청이 있으므로 노드 자동 프로비저닝이 포드의 노드 그룹을 프로비저닝하지 않았습니다. 요청된 GPU 유형 GPU 유형의 대기 중인 포드 구성을 확인하여 지원되는 GPU 유형과 일치하는지 확인합니다.
"no.scale.up.nap.pod.zonal.resources.exceeded" 클러스터 전체 최대 리소스 한도를 위반하거나, 영역의 사용 가능한 리소스를 초과하거나, 요청에 맞는 머신 유형이 없으므로 노드 자동 프로비저닝이 이 영역에 있는 포드의 노드 그룹을 프로비저닝하지 않았습니다. 고려된 영역의 이름 클러스터 전체 최대 리소스 한도, 포드 리소스 요청 또는 노드 자동 프로비저닝에 사용할 수 있는 영역을 검토하고 업데이트합니다.
"no.scale.up.nap.pod.zonal.failing.predicates" 실패한 조건자 때문에 노드 자동 프로비저닝이 이 영역에 있는 포드의 노드 그룹을 프로비저닝하지 않았습니다. 고려된 영역의 이름 및 조건자 실패 이유 어피니티 규칙, taint, 톨러레이션(toleration)과 같은 대기 중인 포드 요구사항과 리소스 요구사항을 검토합니다.

scaleDown 오류

scaleDown 이벤트의 오류 이벤트 메시지는 해당 eventResult 이벤트의 resultInfo.results[].errorMsg 필드에 있습니다.

이벤트 메시지 세부정보 매개변수 위험 완화
"scale.down.error.failed.to.mark.to.be.deleted" 노드를 삭제하도록 표시할 수 없습니다. 실패 노드 이름 이 메시지는 일시적입니다. 문제가 계속되면 추가 조사를 위해 Cloud Customer Care에 문의하세요.
"scale.down.error.failed.to.evict.pods" 일부 포드를 노드에서 제거할 수 없어 클러스터 자동 확장 처리가 축소할 수 없습니다. 실패 노드 이름 포드의 PodDisruptionBudget을 검토하고 허용되는 경우 규칙에서 애플리케이션 복제본 제거를 허용하는지 확인합니다. 자세한 내용은 Kubernetes 문서의 애플리케이션에 중단 예산 지정을 참조하세요.
"scale.down.error.failed.to.delete.node.min.size.reached" 클러스터가 이미 최소 크기이기 때문에 노드를 삭제할 수 없어서 클러스터 자동 확장 처리가 축소할 수 없습니다. 실패 노드 이름 노드 풀 자동 확장에 설정된 최솟값을 검토하고 필요한 경우 설정을 조정합니다. 자세한 내용은 오류: 클러스터의 노드가 최소 크기에 도달함을 참조하세요.

noScaleDown 이벤트의 이유

noScaleDown 이벤트는 클러스터 자동 확장 처리에 의한 삭제가 차단된 노드가 있을 때 주기적으로 발생합니다. noScaleDown 이벤트는 최선의 방법이며 가능한 모든 사례를 포괄하지는 않습니다.

NoScaleDown 최상위 수준 이유

noScaleDown 이벤트의 최상위 수준 이유 메시지는 noDecisionStatus.noScaleDown.reason 필드에 표시됩니다. 메시지에는 클러스터 자동 확장 처리가 클러스터를 축소할 수 없는 최상위 수준 이유가 포함되어 있습니다.

이벤트 메시지 세부정보 위험 완화
"no.scale.down.in.backoff" 축소가 백오프 기간에 있으므로(일시적으로 차단됨) 클러스터 자동 확장 처리가 축소할 수 없습니다.

이 메시지는 일시적이어야 하며 최근 수직 확장 이벤트가 있는 경우 발생할 수 있습니다.

문제가 계속되면 추가 조사를 위해 Cloud Customer Care에 문의하세요.

"no.scale.down.in.progress"

이전 축소가 아직 진행 중이기 때문에 클러스터 자동 확장 처리가 축소할 수 없습니다.

포드가 결국 삭제되므로 이 이벤트는 일시적이어야 합니다. 이 메시지가 자주 발생하면 축소를 차단하는 포드의 종료 유예 기간을 검토하세요. 해결 속도를 높이려면 포드가 더 이상 필요하지 않은 경우 삭제할 수도 있습니다.

noScaleDown 노드 수준 이유

noScaleDown 이벤트의 노드 수준 이유 메시지는 noDecisionStatus.noScaleDown.nodes[].reason field에 표시됩니다. 메시지에는 클러스터 자동 확장 처리가 특정 노드를 삭제할 수 없는 이유가 포함되어 있습니다.

이벤트 메시지 세부정보 매개변수 위험 완화
"no.scale.down.node.scale.down.disabled.annotation" 노드에 cluster-autoscaler.kubernetes.io/scale-down-disabled: true 주석이 있으므로 클러스터 자동 확장 처리가 노드 풀에서 노드를 삭제할 수 없습니다. 해당 사항 없음 클러스터 자동 확장 처리는 사용률을 고려하지 않고 이 주석이 있는 노드를 건너뛰며 이 메시지는 노드의 사용률 요소와 관계없이 로깅됩니다. 클러스터 자동 확장 처리에서 이러한 노드를 축소하도록 하려면 주석을 삭제합니다.
"no.scale.down.node.node.group.min.size.reached"

노드 그룹 크기가 최소 크기 제한을 초과하면 클러스터 자동 확장 처리가 축소할 수 없습니다.

노드를 삭제하면 노드 자동 프로비저닝 설정에 정의된 클러스터 전체 최소 리소스 한도를 위반하므로 이 문제가 발생합니다.

해당 사항 없음 노드 풀 자동 확장에 설정된 최솟값을 검토합니다. 클러스터 자동 확장 처리에서 이 노드를 축소하도록 하려면 최솟값을 조정합니다.
"no.scale.down.node.minimal.resource.limits.exceeded"

클러스터 자동 확장 처리가 클러스터 차원의 최소 리소스 한도를 위반하기 때문에 노드를 축소할 수 없습니다.

노드 자동 프로비저닝에 설정된 리소스 한도입니다.

해당 사항 없음 메모리 및 vCPU 한도를 검토하고 클러스터 자동 확장 처리가 이 노드를 축소하도록 하려면 한도를 늘립니다.
"no.scale.down.node.no.place.to.move.pods" 포드를 이동할 위치가 없으므로 클러스터 자동 확장 처리가 축소할 수 없습니다. 해당 사항 없음 포드 일정을 변경해야 할 것으로 예상되는 경우, 사용률이 낮은 노드에서 포드의 예약 요구사항을 검토하여 클러스터의 다른 노드로 이동할 수 있는지 확인합니다. 자세한 내용은 오류: 포드를 이동할 공간 없음을 참조하세요.
"no.scale.down.node.pod.not.backed.by.controller"

컨트롤러가 지원하지 않기 때문에 포드에서 축소를 차단하고 있습니다.

특히 클러스터 자동 확장 처리는 인식된 컨트롤러가 없는 포드로 인해 사용률이 낮은 노드를 축소할 수 없습니다. 허용되는 컨트롤러에는 ReplicationController, DaemonSet, Job, StatefulSet 또는 ReplicaSet가 있습니다.

차단 포드의 이름 포드에 "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" 주석을 설정하거나 허용되는 컨트롤러를 정의합니다.
"no.scale.down.node.pod.has.local.storage" 로컬 스토리지가 있기 때문에 포드에서 축소를 차단하고 있습니다. 차단 포드의 이름 포드의 로컬 스토리지에 있는 데이터가 중요하지 않은 경우 포드에 대해 "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" 주석을 설정합니다. 이 오류는 1.22 이전 버전을 사용하는 클러스터에서만 발생합니다.
"no.scale.down.node.pod.not.safe.to.evict.annotation" 노드의 포드에 safe-to-evict=false 주석이 있습니다. 차단 포드의 이름 포드를 안전하게 제거할 수 있는 경우 포드의 매니페스트를 수정하고 주석을 "cluster-autoscaler.kubernetes.io/safe-to-evict": "true"로 업데이트합니다.
"no.scale.down.node.pod.kube.system.unmovable" DaemonSet이 아니고 미러링되지 않으며 kube-system 네임스페이스에 PodDisruptionBudget이 없는 포드이기 때문에 포드에서 축소를 차단하고 있습니다. 차단 포드의 이름

기본적으로 kube-system 네임스페이스의 포드는 클러스터 자동 확장 처리에 의해 삭제되지 않습니다.

이 문제를 해결하려면 kube-system 포드에 PodDisruptionBudget을 추가하거나 노드 풀 taint 및 톨러레이션(toleration)을 조합하여 kube-system 포드를 애플리케이션 포드와 분리합니다. 자세한 내용은 오류: kube-system 포드 이동 불가를 참조하세요.

"no.scale.down.node.pod.not.enough.pdb" PodDisruptionBudget이 충분하지 않기 때문에 포드에서 축소를 차단하고 있습니다. 차단 포드의 이름 포드의 PodDisruptionBudget을 검토하고 제한을 완화합니다. 자세한 내용은 오류: PodDisruptionBudget이 충분하지 않음을 참조하세요.
"no.scale.down.node.pod.controller.not.found" 컨트롤러(예: 배포 또는 ReplicaSet)를 찾을 수 없기 때문에 포드에서 축소를 차단하고 있습니다. 해당 사항 없음 컨트롤러가 삭제된 후에도 포드가 실행되도록 한 작업을 확인하려면 로그를 검토합니다. 이 문제를 해결하려면 포드를 수동으로 삭제합니다.
"no.scale.down.node.pod.unexpected.error" 예상치 못한 오류로 인해 포드에서 축소를 차단하고 있습니다. 해당 사항 없음 이 오류의 근본 원인은 알 수 없습니다. 추가 조사를 위해 Cloud Customer Care에 문의하세요.

다음 단계