노드 자동 프로비저닝 사용

이 페이지에서는 Google Kubernetes Engine의 노드 자동 프로비저닝 기능을 사용하는 방법을 설명합니다.

개요

노드 자동 프로비저닝은 사용자를 대신해서 노드 풀 목록을 자동으로 관리하는 클러스터 자동 확장 처리의 메커니즘입니다. 노드 자동 프로비저닝을 사용하지 않을 경우, 클러스터 자동 확장 처리는 사용자가 선택한 노드 풀 집합의 새 노드만 고려합니다. 노드 자동 프로비저닝을 사용하면 새 노드 풀을 자동으로 만들고 삭제할 수 있습니다.

시작하기 전에

이 작업을 준비하려면 다음 단계를 수행하세요.

  • Google Kubernetes Engine API가 사용 설정되었는지 확인합니다.
  • Google Kubernetes Engine API 사용 설정
  • Cloud SDK가 설치되었는지 확인합니다.
  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project [PROJECT_ID]
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 지역 클러스터를 사용하는 경우 기본 컴퓨팅 지역을 설정합니다.
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

작업

클러스터 자동 확장 처리는 노드별 풀 기준으로 작동합니다. 노드 자동 프로비저닝을 사용할 경우 예약되지 않은 포드의 사양을 기준으로 자동 확장된 노드 풀 집합을 자동으로 확장할 수 있습니다.

노드 자동 프로비저닝은 다음 정보를 기준으로 노드 풀을 만듭니다.

리소스 제한

노드 자동 프로비저닝을 위해서는 CPU 및 메모리의 상한값이 필요합니다. GPU 제한 설정은 선택 사항입니다. 제한은 클러스터에 있는 모든 노드에 대해 확인됩니다. 기본적으로 자동 프로비저닝된 노드 풀은 1000개 노드로 제한됩니다.

클러스터 자동 확장 처리는 정의된 제한 중 하나를 초과하게 될 경우, 새 노드를 만들지 않습니다. 하지만 제한이 이미 초과되었더라도 노드가 자동으로 삭제되지는 않습니다.

작업 부하 분리

노드 어피니티 및 내결함성이 있는 보류 중인 포드가 있어서 작업 부하 분리를 나타낼 경우, 노드 자동 프로비저닝 도구는 일치하는 라벨 및 테인트로 노드를 프로비저닝할 수 있습니다.

현재까지, 노드 자동 프로비저닝 도구는 다음 조건이 모두 충족된 경우 라벨 및 테인트를 포함하는 노드의 노드 풀 생성을 고려합니다.

  • 보류 중인 포드에 특정 키 및 값이 라벨로 지정된 노드가 필요합니다.
  • 포드에 동일 키의 테인트에 대한 내결함성이 있습니다.
  • 내결함성이 NoSchedule 효과, NoExecute 효과 또는 모든 효과를 위한 것입니다.

포드 사양에는 다음 2가지 방식을 사용해서 특정 라벨의 노드가 필요하도록 표시할 수 있습니다.

  • nodeSelector 필드 사용
  • In 연산자와 정확히 하나의 값을 포함하는 nodeAffinity 필드 사용

다음 예는 작업 부하 분리 요청으로 해석되는 포드 사양의 일부입니다. 이 포드는 foo 키 및 bar 값의 라벨이 포함된 노드에 대해 내결함성을 갖습니다. 이 예에서는 노드 선택을 위해 nodeAffinity를 사용합니다.

spec:
  tolerations:
  - key: foo
    operator: Equal
    value: bar
    effect: NoSchedule
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: foo
            operator: In
            values:
            - bar

이 포드가 존재할 경우 key=value:NoSchedule 테인트와 key=value 라벨을 포함하는 노드 생성이 고려됩니다.

아래 예에서는 nodeSelector가 사용되고, 효과가 동일합니다.

spec:
  tolerations:
  - key: foo
    operator: Equal
    value: bar
    effect: NoSchedule
  nodeSelector:
    foo: bar

자동 프로비저닝된 노드 풀 삭제

자동 프로비저닝된 노드 풀에 노드가 없으면 GKE가 노드 풀을 삭제합니다. 자동 프로비저닝으로 표시되지 않은 노드 풀은 삭제되지 않습니다.

지원되는 머신 유형

현재, 노드 자동 프로비저닝은 vCPU가 최대 16개인 머신에서 노드 풀을 생성하는 것만 고려합니다. 이 제한값은 향후 높아질 예정입니다.

확장 제한사항

현재는 노드가 최대 100개인 클러스터에서 노드 자동 프로비저닝을 테스트하고 있습니다. 더 큰 클러스터에서는 이 기능을 사용하지 않는 것이 좋습니다. 이와 별개로, 클러스터 자동 확장 처리 확장성 제한이 적용됩니다.

자동 프로비저닝된 노드 풀의 개수 제한

한 클러스터에서 자동 프로비저닝된 노드 풀은 최대 15개까지만 가능합니다. 이 제한에 도달하면 새로운 자동 프로비저닝된 노드 풀이 생성되지 않습니다.

노드 자동 프로비저닝 사용 설정

gcloud

노드 자동 프로비저닝을 사용 설정하려면 다음 명령어를 실행하세요.

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
        --max-cpu 10 --max-memory 64

이 명령어에서

  • --enable-autoprovisioning은 노드 자동 프로비저닝이 사용 설정되었음을 나타냅니다.
  • --max-cpu는 클러스터의 최대 코어 수를 지정합니다.
  • --max-memory는 클러스터의 최대 메모리 용량(기가바이트)을 지정합니다.

GPU 제한 설정

gcloud

GPU에 노드 자동 프로비저닝을 사용할 때는 클러스터의 각 GPU 유형의 총 개수 제한을 설정하는 것이 좋습니다. 이렇게 하려면 다음 명령어를 실행하세요.

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
        --max-cpu 10 --max-memory 64 --max-accelerator type=nvidia-tesla-k80,count=4

이 명령어에서

  • --enable-autoprovisioning은 노드 자동 프로비저닝이 사용 설정되었음을 나타냅니다.
  • --max-cpu는 클러스터의 최대 코어 수를 지정합니다.
  • --max-memory는 클러스터의 최대 메모리 용량(기가바이트)을 지정합니다.
  • --max-acceleratornvidia-tesla-k80 GPU 가속기의 최대 개수를 지정합니다.

또는 구성 파일에서 제한을 로드할 수 있습니다.

gcloud beta container clusters update [CLUSTER_NAME] --enable-autoprovisioning \
         --autoprovisioning-config-file [FILE_NAME]

이 명령어에서 --enable-autoprovisioning은 노드 자동 프로비저닝이 사용 설정되었음을 나타냅니다. * --autoprovisioning-config-file은 리소스 제한 파일을 지정합니다. 구성 예:

  -resourceType: 'cpu'
   minimum: 4
   maximum: 10
  -resourceType: 'memory'
   maximum: 64
  -resourceType: 'nvidia-tesla-k80'
   maximum: 4
  -resourceType: 'nvidia-tesla-v100'
   maximum: 2

노드 자동 프로비저닝 사용 중지

클러스터의 노드 자동 프로비저닝을 사용 중지하면 노드 풀이 더 이상 자동으로 프로비저닝되지 않습니다.

gcloud

노드 자동 프로비저닝을 사용 중지하려면 다음 명령어를 실행하세요.

gcloud beta container clusters update [CLUSTER_NAME] --no-enable-autoprovisioning

이 명령어에서

  • --no-enable-autoprovisioning은 노드 자동 프로비저닝이 사용 중지되었음을 나타냅니다.

노드 풀을 자동 프로비저닝으로 표시

클러스터의 노드 풀을 자동 프로비저닝으로 표시할 수 있습니다. 이렇게 하면 더 이상 사용 중이 아닐 때 노드 풀이 자동으로 삭제될 수 있습니다.

gcloud

노드 풀을 자동 프로비저닝으로 표시하려면 다음 명령어를 실행하세요.

gcloud beta container node-pool update [NODE_POOL_NAME] --enable-autoprovisioning

이 명령어에서

  • --enable-autoprovisioning은 노드 풀이 자동 프로비저닝으로 표시되었음을 나타냅니다.

노드 풀을 자동 프로비저닝 안함으로 표시

노드 풀을 자동 프로비저닝 안함으로 표시할 수 있습니다.

gcloud

노드 풀을 자동 프로비저닝 안함으로 표시하려면 다음 명령어를 실행하세요.

gcloud beta container node-pool update [NODE_POOL_NAME] --no-enable-autoprovisioning

이 명령어에서

  • --no-enable-autoprovisioning은 노드 풀이 자동 프로비저닝 안함으로 표시되었음을 나타냅니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine