노드 풀 관리하기

Google Distributed Cloud (GDC) 오프라인 Kubernetes 클러스터를 만들 때 지정한 노드 수 및 노드 유형을 사용해서 클러스터의 첫 번째 노드 풀을 만듭니다. 기존 클러스터의 컴퓨팅 요구사항이 변경되면 다음 노드 풀 작업을 실행할 수 있습니다.

  • 새 노드 풀 추가: 클러스터 워크로드의 수요가 증가하면 새 노드 풀을 추가합니다.

  • 노드 풀 보기: 기존 노드 풀의 특성과 상태를 확인합니다.

  • 노드 풀 크기 조정: 워크로드 트래픽 변동에 맞게 노드 풀을 수동으로 스케일 업 또는 스케일 다운합니다.

  • 노드 풀 삭제: 클러스터 워크로드의 수요가 감소하거나 컨테이너 작업에 더 이상 적합하지 않은 머신 유형을 삭제하려는 경우 노드 풀을 삭제합니다.

클러스터의 노드 풀에 대한 자세한 내용은 노드 정보를 참고하세요.

이 문서는 애플리케이션 운영자 그룹의 애플리케이션 개발자와 조직 내에서 Kubernetes 클러스터를 관리하는 플랫폼 관리자 그룹의 IT 관리자를 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서 대상을 참고하세요.

시작하기 전에

이 문서의 작업을 완료하려면 필요한 권한을 요청하고 환경을 준비해야 합니다.

IAM 역할 요청

Kubernetes 클러스터에서 노드 풀을 관리하는 데 필요한 권한을 얻으려면 특정 역할이 있어야 합니다. 필요한 역할은 조직 범위 공유 클러스터 또는 프로젝트 범위 표준 클러스터 내에서 작업하는지에 따라 다릅니다. 자세한 내용은 Kubernetes 클러스터 구성을 참고하세요.

공유 클러스터 역할

공유 클러스터의 노드 풀을 만들거나, 삭제하거나, 수정하거나, 보려면 조직 IAM 관리자에게 문의하여 사용자 클러스터 관리자(user-cluster-admin) 역할을 요청하세요. 이 역할은 네임스페이스에 바인딩되지 않습니다.

표준 클러스터 역할

프로젝트 IAM 관리자에게 문의하여 다음 역할을 요청하세요.

  • 표준 클러스터 관리자 (standard-cluster-admin): 표준 클러스터의 노드 풀을 만들거나, 삭제하거나, 수정하거나, 볼 수 있습니다.

  • 클러스터 개발자 (cluster-developer): 표준 클러스터를 만들거나, 삭제하거나, 수정하거나, 볼 수 있습니다. 이 역할은 GDC 콘솔에서 클러스터의 노드 풀 세부정보를 보는 데 필요합니다.

이러한 역할은 프로젝트 네임스페이스에 바인딩됩니다.

개발 환경 준비

API를 사용하여 Kubernetes 클러스터에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

  • Kubernetes 클러스터 이름을 찾거나 플랫폼 관리자 그룹의 구성원에게 클러스터 이름을 묻습니다.

  • Kubernetes 클러스터 이름을 사용하여 이 안내의 KUBERNETES_CLUSTER_NAME를 바꿉니다.

  • Kubernetes 클러스터의 관리 API 서버 kubeconfig 파일을 로그인하여 생성합니다.

  • 관리 API 서버의 kubeconfig 경로를 사용하여 이 안내의 MANAGEMENT_API_SERVER를 바꿉니다.

노드 풀 추가하기

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

콘솔

  1. 프로젝트 선택기에서 프로젝트 또는 조직을 선택합니다.

    표준 클러스터는 프로젝트 범위이고 공유 클러스터는 조직 범위입니다. 적절한 Kubernetes 클러스터 유형을 보려면 올바른 범위를 선택하세요.

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

  3. 클러스터 목록에서 클러스터를 클릭합니다. 클러스터 세부정보 페이지가 표시됩니다.

  4. 노드 풀 > 노드 풀 추가를 선택합니다.

  5. 노드 풀의 이름을 할당합니다. 노드 풀을 만든 후에는 이름을 수정할 수 없습니다.

  6. 노드 풀에서 만들 워커 노드 수를 지정합니다.

  7. 워크로드 요구사항에 가장 적합한 머신 클래스를 선택합니다. 머신 클래스는 다음 설정에 표시됩니다.

    • 머신 유형
    • vCPU
    • 메모리
  8. 저장을 클릭합니다.

API

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

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

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_NAME: 클러스터의 이름입니다.
    • KUBERNETES_CLUSTER_NAMESPACE: 클러스터의 네임스페이스입니다. 공유 클러스터의 경우 platform 네임스페이스를 사용합니다. 표준 클러스터의 경우 클러스터의 프로젝트 네임스페이스를 사용합니다.
    • MANAGEMENT_API_SERVER: Kubernetes 클러스터가 호스팅되는 영역 API 서버의 kubeconfig 경로입니다.
  2. nodePools 섹션에 새 항목을 추가합니다.

    nodePools:
    # Several lines of code are omitted here.
    - 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 클러스터 유형을 보려면 올바른 범위를 선택하세요.

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

  3. 클러스터 목록에서 클러스터를 클릭합니다. 클러스터 세부정보 페이지가 표시됩니다.

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

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

API

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

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

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_NAME: 클러스터의 이름입니다.
    • KUBERNETES_CLUSTER_NAMESPACE: 클러스터의 네임스페이스입니다. 공유 클러스터의 경우 platform 네임스페이스를 사용합니다. 표준 클러스터의 경우 클러스터의 프로젝트 네임스페이스를 사용합니다.

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

    [
      {
        "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
      }
    ]
    

노드 풀 크기 조절

풀을 스케일 업 또는 스케일 다운하여 Kubernetes 클러스터에서 노드 풀의 크기를 수동으로 조정할 수 있습니다. 노드 풀을 축소할 때는 삭제할 특정 노드를 선택할 수 없습니다.

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

콘솔

  1. 프로젝트 선택기에서 프로젝트 또는 조직을 선택합니다.

    표준 클러스터는 프로젝트 범위이고 공유 클러스터는 조직 범위입니다. 적절한 Kubernetes 클러스터 유형을 보려면 올바른 범위를 선택하세요.

  2. 대시보드에서 수정할 클러스터가 있는 프로젝트를 선택합니다.

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

  4. 노드 풀이 연결된 클러스터 이름을 선택합니다. 클러스터 세부정보 페이지가 표시됩니다.

  5. 노드 풀 탭을 클릭합니다.

  6. 크기를 조절할 노드 풀의 수정 아이콘을 선택합니다. 노드 풀 수정 프롬프트가 표시됩니다.

  7. 노드 풀에 필요한 새 노드 수를 반영하도록 노드 수 필드를 업데이트합니다. 워크로드 요구사항에 맞게 노드 수를 늘리거나 줄일 수 있습니다.

  8. 저장을 클릭합니다.

  9. 클러스터의 노드 풀 탭으로 다시 이동하여 크기가 조절된 노드 풀의 상태가 Ready이고 노드 수가 올바른지 확인합니다. 노드 풀이 사양에 따라 확장되는 데 몇 분 정도 걸릴 수 있습니다.

    콘솔을 사용하여 노드 풀이 준비되었는지 확인합니다.

API

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

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

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_NAME: 노드 풀을 호스팅하는 클러스터의 이름입니다.
    • KUBERNETES_CLUSTER_NAMESPACE: 클러스터의 네임스페이스입니다. 공유 클러스터의 경우 platform 네임스페이스를 사용합니다. 표준 클러스터의 경우 클러스터의 프로젝트 네임스페이스를 사용합니다.
    • MANAGEMENT_API_SERVER: Kubernetes 클러스터가 호스팅되는 영역 API 서버의 kubeconfig 경로입니다.
  2. 크기를 조절할 노드 풀의 nodeCount 필드를 업데이트합니다.

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: NUMBER_OF_WORKER_NODES
    

    NUMBER_OF_WORKER_NODES을 노드 풀에서 프로비저닝할 업데이트된 워커 노드 수로 바꿉니다.

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

  4. 노드 풀의 구성을 확인하여 노드 확장 완료 여부를 확인합니다.

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

    readyNodes 번호가 노드 풀에 설정한 노드 수를 반영하는지 확인합니다. 노드 풀이 사양에 따라 확장되는 데 몇 분 정도 걸릴 수 있습니다.

노드 풀 삭제

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

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

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

콘솔

  1. 프로젝트 선택기에서 프로젝트 또는 조직을 선택합니다.

    표준 클러스터는 프로젝트 범위이고 공유 클러스터는 조직 범위입니다. 적절한 Kubernetes 클러스터 유형을 보려면 올바른 범위를 선택하세요.

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

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

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

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

API

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

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

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_NAME: 클러스터의 이름입니다.
    • KUBERNETES_CLUSTER_NAMESPACE: 클러스터의 네임스페이스입니다. 공유 클러스터의 경우 platform 네임스페이스를 사용합니다. 표준 클러스터의 경우 클러스터의 프로젝트 네임스페이스를 사용합니다.
    • MANAGEMENT_API_SERVER: Kubernetes 클러스터가 호스팅되는 영역 API 서버의 kubeconfig 경로입니다.
  2. nodePools 섹션에서 노드 풀 항목을 삭제합니다. 예를 들어 다음 스니펫에서는 machineTypeName, name, nodeCount 필드를 삭제해야 합니다.

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

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

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

다음 단계