컨테이너 워크로드를 실행할 Standard 클러스터 만들기

이 문서에서는 Google Distributed Cloud (GDC) 에어 갭 영역에서 표준 Kubernetes 클러스터를 만드는 방법을 설명합니다. 표준 클러스터는 포함된 최소한의 관리형 서비스를 포함하는 프로젝트 범위의 고도로 구성 가능한 Kubernetes 클러스터를 제공합니다. 표준 클러스터는 공유 클러스터보다 서비스 구성에 더 많은 유연성을 제공하지만 더 많은 관리 오버헤드도 필요합니다. 표준 클러스터에 대한 자세한 내용은 Kubernetes 클러스터 구성을 참조하세요.

표준 클러스터는 영역별 리소스 이며 여러 영역에 걸쳐 있을 수 없습니다. 다중 영역 유니버스에서 클러스터를 운영하려면 각 영역에서 클러스터를 수동으로 만들어야 합니다.

이 문서는 조직 내에서 컨테이너 워크로드 관리를 담당하는 애플리케이션 운영자 그룹의 애플리케이션 개발자와 같은 대상을 위한 것입니다. 자세한 내용은 GDC 에어 갭 문서의 대상을 참조하세요.

시작하기 전에

표준 클러스터를 만들려면 필요한 권한을 요청하고 환경을 준비하세요.

IAM 역할 요청

조직 IAM 관리자에게 연락하여 다음 역할을 부여해 달라고 요청하세요.

  • 프로젝트 IAM 관리자 (project-iam-admin): 표준 클러스터 내에서 액세스를 관리하는 데 필요한 역할을 다른 사용자에게 부여합니다.
  • 표준 클러스터 관리자 (standard-cluster-admin): 프로젝트에서 표준 클러스터를 만듭니다.

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

개발 환경 준비

  • 표준 클러스터에 액세스하고 관리하기 위한 적절한 설정이 있는지 확인합니다. 자세한 내용은 표준 클러스터에 대한 액세스 관리를 참조하세요.
  • 영역별 API 서버의 kubeconfig 파일을 생성하여 클러스터를 호스팅합니다. 환경 변수 MANAGEMENT_API_SERVER를 kubeconfig 경로로 설정합니다. 자세한 내용은 영역별 관리 API 서버 리소스를 참조하세요.
  • 리소스 고려사항에 대한 클러스터 한도를 검토합니다.

포드 CIDR 블록 계획

워크로드에 적절한 크기의 포드 CIDR 블록을 할당하려면 Kubernetes 클러스터를 만들기 전에 필요한 IP 주소 수를 계산해야 합니다. 클러스터가 생성된 후에는 대부분의 네트워킹 매개변수를 변경할 수 없습니다.

Kubernetes 클러스터는 IP 주소를 할당할 때 다음 논리를 따릅니다.

  • Kubernetes는 각 노드에 256개의 주소로 구성된 /24 CIDR 블록을 할당합니다. 이 양은 Kubernetes 클러스터의 노드당 기본 최대 포드 수인 110개를 준수합니다.
  • 노드에 할당된 CIDR 블록 크기는 노드당 최대 포드 수에 따라 다릅니다.
  • 블록에는 항상 노드당 최대 포드 수의 두 배 이상의 주소가 포함됩니다.

다음 예시를 통해 110개의 포드를 수용하기 위해 노드당 마스크 크기= /24 의 기본값이 계산된 방법을 알아보세요.

Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220

Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256

필요한 노드 수를 기준으로 Kubernetes 클러스터에 구성할 포드 CIDR 마스크를 결정합니다. CIDR 범위를 구성하는 동안 클러스터에 노드를 추가할 계획을 세웁니다.

  Total number of nodes supported = 2(Per node mask size - pod CIDR mask)

기본 노드당 마스크 크기= /24 가 제공되므로 포드 CIDR 마스크를 지원되는 노드 수에 매핑하는 다음 표를 참조하세요.

포드 CIDR 마스크 계산: 2(노드당 마스크 크기 - CIDR 마스크) 컨트롤 플레인 노드를 포함하여 지원되는 최대 노드 수
/21 2(24 - 21) 8
/20 2(24-20) 16
/19 2(24 - 19) 32
/18 2(24 - 18) 64

Kubernetes 클러스터의 포드 CIDR 블록을 계산한 후 다음 섹션의 클러스터 생성 워크플로의 일부로 구성합니다.

Standard 클러스터 만들기

표준 클러스터를 만들려면 다음 단계를 완료하세요.

API

  1. Cluster 커스텀 리소스를 만들고 cluster.yaml과 같은 YAML 파일로 저장합니다.

    apiVersion: cluster.gdc.goog/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: PROJECT_NAME
    spec:
      clusterNetwork:
        podCIDRSize: POD_CIDR
        serviceCIDRSize: SERVICE_CIDR
      initialVersion:
        kubernetesVersion: KUBERNETES_VERSION
      nodePools:
      - machineTypeName: MACHINE_TYPE
        name: NODE_POOL_NAME
        nodeCount: NUMBER_OF_WORKER_NODES
        taints: TAINTS
        labels: LABELS
        acceleratorOptions:
          gpuPartitionScheme: GPU_PARTITION_SCHEME
      releaseChannel:
        channel: UNSPECIFIED
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다. 클러스터 이름은 -system으로 끝나면 안 됩니다. -system 서픽스는 GDC에서 만든 클러스터용으로 예약되어 있습니다.
    • PROJECT_NAME: 클러스터를 만들 프로젝트의 이름입니다.
    • POD_CIDR: 포드 가상 IP 주소가 할당되는 네트워크 범위의 크기입니다. 설정하지 않으면 기본값 21이 사용됩니다.
    • SERVICE_CIDR: 서비스 가상 IP 주소가 할당되는 네트워크 범위의 크기입니다. 설정하지 않으면 기본값 23이 사용됩니다.
    • KUBERNETES_VERSION: 클러스터의 Kubernetes 버전입니다(예: 1.26.5-gke.2100). 구성할 수 있는 Kubernetes 버전을 나열하려면 클러스터에 사용 가능한 Kubernetes 버전 나열을 참조하세요.
    • MACHINE_TYPE: 노드 풀의 워커 노드에 사용할 머신 유형입니다. 구성할 수 있는 사용 가능한 머신 유형을 확인합니다.
    • NODE_POOL_NAME: 노드 풀의 이름입니다.
    • NUMBER_OF_WORKER_NODES: 노드 풀에서 프로비저닝할 워커 노드 수입니다.
    • TAINTS: 이 노드 풀의 노드에 적용할 taint입니다. 이 필드는 선택 사항입니다.
    • LABELS: 이 노드 풀의 노드에 적용할 라벨입니다. 키-값 쌍 목록을 포함합니다. 이 필드는 선택 사항입니다.
    • GPU_PARTITION_SCHEME: GPU 워크로드를 실행하는 경우 GPU 파티션 구성표입니다. 이 필드는 선택 사항입니다. 예를 들면 mixed-2입니다. 이 필드가 설정되지 않으면 GPU가 분할되지 않습니다. 사용 가능한 멀티 인스턴스 GPU (MIG) 프로필에 대한 자세한 내용은 지원되는 MIG 프로필을 참조하세요.
  2. 커스텀 리소스를 GDC 인스턴스에 적용합니다.

    kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVER
    

    MANAGEMENT_API_SERVER를 영역별 API 서버의 kubeconfig 경로로 바꿉니다. 타겟 영역의 API 서버에 대한 kubeconfig 파일 을 아직 생성하지 않은 경우 로그인하기를 참조하세요.

표준 클러스터 생성을 완료하는 데 최대 60분이 걸릴 수 있습니다.

Terraform

  1. Terraform 구성 파일에 다음 코드 스니펫을 삽입합니다.

    provider "kubernetes" {
      config_path = "MANAGEMENT_API_SERVER"
    }
    
    resource "kubernetes_manifest" "cluster-create" {
      manifest = {
        "apiVersion" = "cluster.gdc.goog/v1"
        "kind" = "Cluster"
        "metadata" = {
          "name" = "CLUSTER_NAME"
          "namespace" = "PROJECT_NAME"
        }
        "spec" = {
          "clusterNetwork" = {
            "podCIDRSize" = "POD_CIDR"
            "serviceCIDRSize" = "SERVICE_CIDR"
          }
          "initialVersion" = {
            "kubernetesVersion" = "KUBERNETES_VERSION"
          }
          "nodePools" = [{
            "machineTypeName" = "MACHINE_TYPE"
            "name" = "NODE_POOL_NAME"
            "nodeCount" = "NUMBER_OF_WORKER_NODES"
            "taints" = "TAINTS"
            "labels" = "LABELS"
            "acceleratorOptions" = {
              "gpuPartitionScheme" = "GPU_PARTITION_SCHEME"
            }
          }]
          "releaseChannel" = {
            "channel" = "UNSPECIFIED"
          }
        }
      }
    }
    

    다음을 바꿉니다.

    • MANAGEMENT_API_SERVER: 영역별 API 서버의 kubeconfig 경로입니다. 타겟 영역의 API 서버에 대한 kubeconfig 파일을 아직 생성하지 않은 경우 로그인하기를 참조하세요.
    • CLUSTER_NAME: 클러스터의 이름입니다. 클러스터 이름은 -system으로 끝나면 안 됩니다. -system 서픽스는 GDC에서 만든 클러스터용으로 예약되어 있습니다.
    • PROJECT_NAME: 클러스터를 만들 프로젝트의 이름입니다.
    • POD_CIDR: 포드 가상 IP 주소가 할당되는 네트워크 범위의 크기입니다. 설정하지 않으면 기본값 21이 사용됩니다.
    • SERVICE_CIDR: 서비스 가상 IP 주소가 할당되는 네트워크 범위의 크기입니다. 설정하지 않으면 기본값 23이 사용됩니다.
    • KUBERNETES_VERSION: 클러스터의 Kubernetes 버전입니다(예: 1.26.5-gke.2100). 구성할 수 있는 Kubernetes 버전을 나열하려면 클러스터에 사용 가능한 Kubernetes 버전 나열을 참조하세요.
    • MACHINE_TYPE: 노드 풀의 워커 노드에 사용할 머신 유형입니다. 구성할 수 있는 사용 가능한 머신 유형을 확인합니다.
    • NODE_POOL_NAME: 노드 풀의 이름입니다.
    • NUMBER_OF_WORKER_NODES: 노드 풀에서 프로비저닝할 워커 노드 수입니다.
    • TAINTS: 이 노드 풀의 노드에 적용할 taint입니다. 이 필드는 선택 사항입니다.
    • LABELS: 이 노드 풀의 노드에 적용할 라벨입니다. 키-값 쌍 목록을 포함합니다. 이 필드는 선택 사항입니다.
    • GPU_PARTITION_SCHEME: GPU 워크로드를 실행하는 경우 GPU 파티션 구성표입니다. 이 필드는 선택 사항입니다. 예를 들면 mixed-2입니다. 이 필드가 설정되지 않으면 GPU가 분할되지 않습니다. 사용 가능한 멀티 인스턴스 GPU (MIG) 프로필에 대한 자세한 내용은 지원되는 MIG 프로필을 참조하세요.
  2. Terraform을 사용하여 새 표준 클러스터를 적용합니다.

    terraform apply
    

표준 클러스터 생성을 완료하는 데 최대 60분이 걸릴 수 있습니다.

다음 단계