노드 풀 관리하기

노드 풀은 Kubernetes 클러스터 내에서 구성이 모두 동일한 노드 그룹입니다. 노드 풀은 NodePool 사양을 사용합니다. 풀의 각 노드에는 노드 풀의 이름이 값으로 포함된 Kubernetes 노드 라벨이 있습니다. 기본적으로 모든 새 노드 풀은 컨트롤 플레인과 동일한 버전의 Kubernetes를 실행합니다.

Kubernetes 클러스터를 만들 때 지정하는 노드 수와 노드 유형이 클러스터의 첫 번째 노드 풀을 만듭니다. 다양한 크기와 유형의 노드 풀을 클러스터에 추가할 수 있습니다. 특정 노드 풀의 모든 노드는 서로 동일합니다.

커스텀 노드 풀은 추가 메모리 또는 로컬 디스크 공간 등 다른 것보다 더 많은 리소스가 필요한 포드를 예약할 때 유용합니다. 포드 예약을 더 세부적으로 제어해야 하는 경우 노드 taint를 사용할 수 있습니다.

전체 클러스터에 영향을 주지 않고 개별적으로 노드 풀을 생성하고 삭제할 수 있습니다. 노드 풀에서 단일 노드를 구성할 수 없습니다. 구성 변경사항은 노드 풀에 있는 모든 노드에 영향을 줍니다.

풀을 스케일 업 또는 스케일 다운하여 클러스터에서 노드 풀 크기를 조절할 수 있습니다. 노드 풀 축소는 풀 크기를 줄이면 GDC 시스템이 임의의 노드를 자동으로 드레인하고 제거하는 자동화된 프로세스입니다. 노드 풀을 축소할 때는 삭제할 특정 노드를 선택할 수 없습니다.

시작하기 전에

Kubernetes 클러스터에서 노드 풀을 보고 관리하려면 다음 역할이 있어야 합니다.

  • 사용자 클러스터 관리자 (user-cluster-admin)
  • 사용자 클러스터 노드 뷰어 (user-cluster-node-viewer)

이러한 역할은 네임스페이스에 바인딩되지 않습니다.

노드 풀 추가하기

GDC 콘솔에서 Kubernetes 클러스터를 만들 때 클러스터 생성 초기화 전에 기본 노드 풀을 맞춤설정하고 추가 노드 풀을 만들 수 있습니다. 기존 Kubernetes 클러스터에 노드 풀을 추가해야 하는 경우 다음 단계를 완료하세요.

콘솔

  1. 탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.
  2. 클러스터 목록에서 클러스터를 클릭합니다. 클러스터 세부정보 페이지가 표시됩니다.
  3. 노드 풀 > 노드 풀 추가를 선택합니다.
  4. 노드 풀의 이름을 할당합니다. 노드 풀을 만든 후에는 이름을 수정할 수 없습니다.
  5. 노드 풀에서 만들 워커 노드 수를 지정합니다.
  6. 워크로드 요구사항에 가장 적합한 머신 클래스를 선택합니다. 머신 클래스는 다음 설정에 표시됩니다.
    • 머신 유형
    • vCPU
    • 메모리
  7. 저장을 클릭합니다.

API

  1. 대화형 편집기를 사용하여 kubectl CLI로 Cluster 커스텀 리소스 사양을 엽니다.

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_NAME: 클러스터의 이름입니다.
    • MANAGEMENT_API_SERVER: Kubernetes 클러스터가 호스팅되는 영역 API 서버의 kubeconfig 경로입니다. 타겟 영역의 API 서버용 kubeconfig 파일을 아직 생성하지 않은 경우 로그인에서 자세한 내용을 확인하세요.
  2. nodePools 섹션에 새 항목을 추가합니다.

    nodePools:
    ...
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

    다음을 바꿉니다.

    • MACHINE_TYPE: 노드 풀의 작업자 노드에 사용할 머신 유형입니다. 구성할 수 있는 항목은 사용 가능한 머신 유형을 참고하세요.
    • NODE_POOL_NAME: 노드 풀의 이름
    • NUMBER_OF_WORKER_NODES: 노드 풀에서 프로비저닝할 워커 노드 수입니다.
    • TAINTS: 이 노드 풀의 노드에 적용할 테인트입니다. 이 필드는 선택 사항입니다.
    • LABELS: 이 노드 풀의 노드에 적용할 라벨입니다. 키-값 쌍 목록을 포함합니다. 이 필드는 선택사항입니다.
    • GPU_PARTITION_SCHEME: GPU 워크로드를 실행하는 경우 GPU 파티셔닝 스키마입니다. 예를 들면 mixed-2입니다. 이 필드가 설정되지 않은 경우 GPU가 파티셔닝되지 않습니다. 사용 가능한 다중 인스턴스 GPU (MIG) 프로필은 지원되는 MIG 프로필을 참고하세요.
  3. 파일을 저장하고 편집기를 종료합니다.

노드 풀 보기

Kubernetes 클러스터에서 기존 노드 풀을 보려면 다음 단계를 완료하세요.

콘솔

  1. 탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.
  2. 클러스터 목록에서 클러스터를 클릭합니다. 클러스터 세부정보 페이지가 표시됩니다.
  3. 노드 풀을 선택합니다.

클러스터에서 실행 중인 노드 풀 목록이 표시됩니다. 이 페이지에서 클러스터의 노드 풀을 관리할 수 있습니다.

API

  • 특정 Kubernetes 클러스터의 노드 풀을 확인합니다.

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    출력은 다음과 비슷합니다.

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

노드 풀 삭제

노드 풀을 삭제하면 노드와 노드 경로가 삭제됩니다. 이러한 노드는 실행 중인 포드를 제거하고 다시 예약합니다. 포드에 특정 노드 선택기가 있는 경우, 클러스터의 다른 노드가 기준을 충족하지 못하면 포드는 예약할 수 없는 상태로 남아 있을 수 있습니다.

노드 풀을 삭제하기 전에 워커 노드가 3개 이상 있는지 확인하여 클러스터에 효과적으로 실행할 수 있는 컴퓨팅 공간이 충분한지 확인하세요.

노드 풀을 삭제하려면 다음 단계를 완료하세요.

콘솔

  1. 탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.

  2. 삭제하려는 노드 풀을 호스팅하는 클러스터를 클릭합니다.

  3. 노드 풀을 선택합니다.

  4. 삭제할 노드 풀 옆에 있는 삭제를 클릭합니다.

API

  1. 대화형 편집기를 사용하여 kubectl CLI로 Cluster 커스텀 리소스 사양을 엽니다.

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_NAME: 클러스터의 이름입니다.
    • MANAGEMENT_API_SERVER: Kubernetes 클러스터가 호스팅되는 영역 API 서버의 kubeconfig 경로입니다. 타겟 영역의 API 서버용 kubeconfig 파일을 아직 생성하지 않은 경우 로그인에서 자세한 내용을 확인하세요.
  2. nodePools 섹션에서 노드 풀 항목을 삭제합니다. 예를 들어 다음 스니펫에서는 machineTypeName, name, nodeCount 필드를 삭제해야 합니다.

    nodePools:
    ...
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    삭제할 노드 풀의 모든 필드를 삭제해야 합니다.

  3. 파일을 저장하고 편집기를 종료합니다.