Membuat cluster untuk menjalankan workload container

Buat cluster Kubernetes untuk memungkinkan deployment workload container. Cluster adalah resource zona dan tidak dapat mencakup beberapa zona. Untuk mengoperasikan cluster dalam deployment multi-zona, Anda harus membuat cluster secara manual di setiap zona.

Sebelum memulai

Untuk mendapatkan izin yang diperlukan untuk membuat cluster Kubernetes, minta Admin IAM Organisasi Anda untuk memberi Anda peran User Cluster Admin (user-cluster-admin). Peran ini tidak terikat ke namespace.

Google Distributed Cloud (GDC) dengan air gap memiliki batasan berikut untuk cluster Kubernetes:

  • 16 cluster per organisasi
  • 42 node pekerja per cluster, dan minimal tiga node pekerja
  • 4.620 pod per cluster
  • 110 pod per node

Mengonfigurasi blok CIDR pod

Cluster mengikuti logika ini saat mengalokasikan alamat IP:

  • Kubernetes menetapkan blok CIDR /24 yang terdiri dari 256 alamat ke setiap node. Jumlah ini sesuai dengan maksimum default 110 pod per node untuk cluster pengguna.
  • Ukuran blok CIDR yang ditetapkan ke sebuah node bergantung pada nilai maksimum pod per node.
  • Blok selalu berisi alamat setidaknya dua kali lebih banyak dari jumlah maksimum pod per node.

Lihat contoh berikut untuk memahami cara nilai default Per node mask size= /24 dihitung untuk mengakomodasi 110 pod:

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

Tentukan masker CIDR pod yang diperlukan untuk dikonfigurasi bagi cluster pengguna berdasarkan jumlah node yang diperlukan. Rencanakan penambahan node di masa mendatang ke cluster saat mengonfigurasi rentang CIDR:

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

Mengingat kita memiliki Ukuran mask per node default= /24 , lihat tabel berikut yang memetakan mask CIDR pod ke jumlah node yang didukung.

Masker CIDR Pod Penghitungan: 2(Ukuran mask per node - mask CIDR) Jumlah maksimum node yang didukung, termasuk node bidang kontrol
/21 2(24 - 21) 8
/20 2(24-20) 16
/19 2(24 - 19) 32
/18 2(24 - 18) 64

Membuat cluster Kubernetes

Selesaikan langkah-langkah berikut untuk membuat cluster Kubernetes:

Konsol

  1. Di menu navigasi, pilih Kubernetes Engine > Clusters.

  2. Klik Create Cluster.

  3. Di kolom Name, tentukan nama untuk cluster.

  4. Pilih versi Kubernetes untuk cluster.

  5. Pilih zona tempat cluster akan dibuat.

  6. Klik Attach Project dan pilih project yang ada untuk dilampirkan ke cluster Anda. Kemudian, klik Simpan. Anda dapat melampirkan atau melepaskan project setelah membuat cluster dari halaman detail project. Anda harus memiliki project yang dilampirkan ke cluster sebelum men-deploy beban kerja penampung.

    Buat cluster menggunakan konsol.

  7. Klik Berikutnya.

  8. Konfigurasi setelan jaringan untuk cluster Anda. Anda tidak dapat mengubah setelan jaringan ini setelah membuat cluster. Protokol Internet default dan satu-satunya yang didukung untuk cluster Kubernetes adalah Internet Protocol versi 4 (IPv4).

    1. Jika Anda ingin membuat node load balancer khusus, masukkan jumlah node yang akan dibuat. Secara default, Anda menerima nol node, dan traffic load balancer berjalan melalui node kontrol.

    2. Pilih Service CIDR (Classless Inter-Domain Routing) yang akan digunakan. Layanan yang di-deploy, seperti load balancer, dialokasikan alamat IP dari rentang ini.

    3. Pilih CIDR Pod yang akan digunakan. Cluster mengalokasikan alamat IP dari rentang ini ke pod dan VM Anda.

    4. Klik Berikutnya.

  9. Tinjau detail kumpulan node default yang dibuat otomatis untuk cluster. Klik Edit untuk mengubah node pool default.

  10. Untuk membuat kumpulan node tambahan, pilih Tambahkan kumpulan node. Saat mengedit node pool default atau menambahkan node pool baru, Anda dapat menyesuaikannya dengan opsi berikut:

    1. Tetapkan nama untuk kumpulan node. Anda tidak dapat mengubah nama setelah membuat node pool.
    2. Tentukan jumlah node pekerja yang akan dibuat di node pool.
    3. Pilih kelas mesin yang paling sesuai dengan persyaratan workload Anda. Lihat daftar setelan berikut:

      • Jenis mesin
      • CPU
      • Memori
    4. Klik Simpan.

  11. Klik Create untuk membuat cluster.

API

Untuk membuat cluster baru menggunakan API secara langsung, terapkan resource kustom ke instance GDC Anda:

  1. Buat resource kustom Cluster dan simpan sebagai file YAML, seperti cluster.yaml:

    apiVersion: cluster.gdc.goog/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: platform
    spec:
      clusterNetwork:
        podCIDRSize: POD_CIDR
        serviceCIDRSize: SERVICE_CIDR
      initialVersion:
        kubernetesVersion: KUBERNETES_VERSION
      loadBalancer:
        ingressServiceIPSize: LOAD_BALANCER_POOL_SIZE
      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
    

    Ganti kode berikut:

    • CLUSTER_NAME: Nama cluster. Nama cluster tidak boleh diakhiri dengan -system. Akhiran -system dicadangkan untuk cluster yang dibuat oleh GDC.
    • POD_CIDR: Ukuran rentang jaringan tempat alamat IP virtual pod dialokasikan. Jika tidak disetel, nilai default 21 akan digunakan.
    • SERVICE_CIDR: Ukuran rentang jaringan tempat alamat IP virtual layanan dialokasikan. Jika tidak disetel, nilai default 23 akan digunakan.
    • KUBERNETES_VERSION: Versi Kubernetes cluster, seperti 1.26.5-gke.2100. Untuk mencantumkan versi Kubernetes yang tersedia untuk dikonfigurasi, lihat Mencantumkan versi Kubernetes yang tersedia untuk cluster.
    • LOAD_BALANCER_POOL_SIZE: Ukuran kumpulan alamat IP yang tidak tumpang-tindih yang digunakan oleh layanan load balancer. Jika tidak disetel, nilai default 20 akan digunakan.
    • MACHINE_TYPE: Jenis mesin untuk node pekerja node pool. Lihat jenis mesin yang tersedia untuk mengetahui konfigurasi yang tersedia.
    • NODE_POOL_NAME: Nama node pool.
    • NUMBER_OF_WORKER_NODES: Jumlah node pekerja yang akan disediakan di node pool.
    • TAINTS: Taint yang akan diterapkan ke node di node pool ini. Kolom ini bersifat opsional.
    • LABELS: Label yang akan diterapkan ke node node pool ini. Objek ini berisi daftar key-value pair. Kolom ini bersifat opsional.
    • GPU_PARTITION_SCHEME: Skema partisi GPU, jika Anda menjalankan beban kerja GPU. Contoh, mixed-2. GPU tidak dipartisi jika kolom ini tidak ditetapkan. Untuk mengetahui profil GPU Multi-Instance (MIG) yang tersedia, lihat Profil MIG yang didukung.
  2. Terapkan resource kustom ke instance GDC Anda:

    kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVER
    

    Ganti MANAGEMENT_API_SERVER dengan jalur kubeconfig server API zonal. Jika Anda belum membuat file kubeconfig untuk server API di zona target, lihat Login untuk mengetahui detailnya.

Terraform

  1. Di file konfigurasi Terraform, masukkan cuplikan kode berikut:

    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" = "platform"
        }
        "spec" = {
          "clusterNetwork" = {
            "podCIDRSize" = "POD_CIDR"
            "serviceCIDRSize" = "SERVICE_CIDR"
          }
          "initialVersion" = {
            "kubernetesVersion" = "KUBERNETES_VERSION"
          }
          "loadBalancer" = {
            "ingressServiceIPSize" = "LOAD_BALANCER_POOL_SIZE"
          }
          "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"
          }
        }
      }
    }
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER: Jalur kubeconfig server API zonal. Jika Anda belum membuat file kubeconfig untuk server API di zona target, lihat Login untuk mengetahui detailnya.
    • CLUSTER_NAME: Nama cluster. Nama cluster tidak boleh diakhiri dengan -system. Akhiran -system dicadangkan untuk cluster yang dibuat oleh GDC.
    • POD_CIDR: Ukuran rentang jaringan tempat alamat IP virtual pod dialokasikan. Jika tidak disetel, nilai default 21 akan digunakan.
    • SERVICE_CIDR: Ukuran rentang jaringan tempat alamat IP virtual layanan dialokasikan. Jika tidak disetel, nilai default 23 akan digunakan.
    • KUBERNETES_VERSION: Versi Kubernetes cluster, seperti 1.26.5-gke.2100. Untuk mencantumkan versi Kubernetes yang tersedia untuk dikonfigurasi, lihat Mencantumkan versi Kubernetes yang tersedia untuk cluster.
    • LOAD_BALANCER_POOL_SIZE: Ukuran kumpulan alamat IP yang tidak tumpang-tindih yang digunakan oleh layanan load balancer. Jika tidak disetel, nilai default 20 akan digunakan.
    • MACHINE_TYPE: Jenis mesin untuk node pekerja node pool. Lihat jenis mesin yang tersedia untuk mengetahui konfigurasi yang tersedia.
    • NODE_POOL_NAME: Nama node pool.
    • NUMBER_OF_WORKER_NODES: Jumlah node pekerja yang akan disediakan di node pool.
    • TAINTS: Taint yang akan diterapkan ke node di node pool ini. Kolom ini bersifat opsional.
    • LABELS: Label yang akan diterapkan ke node node pool ini. Objek ini berisi daftar key-value pair. Kolom ini bersifat opsional.
    • GPU_PARTITION_SCHEME: Skema partisi GPU, jika Anda menjalankan beban kerja GPU. Contoh, mixed-2. GPU tidak dipartisi jika kolom ini tidak ditetapkan. Untuk mengetahui profil GPU Multi-Instance (MIG) yang tersedia, lihat Profil MIG yang didukung.
  2. Terapkan cluster Kubernetes baru menggunakan Terraform:

    terraform apply
    

Mencantumkan versi Kubernetes yang tersedia untuk cluster

Anda dapat mencantumkan versi Kubernetes yang tersedia di instance GDC menggunakan CLI kubectl:

kubectl get userclustermetadata.upgrade.private.gdc.goog \
    -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \
    --kubeconfig MANAGEMENT_API_SERVER

Ganti MANAGEMENT_API_SERVER dengan jalur kubeconfig server API zonal cluster Anda.

Outputnya terlihat mirip dengan yang berikut ini:

K8S-VERSION
1.25.10-gke.2100
1.26.5-gke.2100
1.27.4-gke.500

Mendukung workload GPU dalam cluster

Distributed Cloud menyediakan dukungan GPU NVIDIA untuk cluster Kubernetes, dan cluster tersebut menjalankan perangkat GPU Anda sebagai workload pengguna. Misalnya, Anda mungkin lebih suka menjalankan notebook kecerdasan buatan (AI) dan machine learning (ML) di lingkungan GPU. Pastikan cluster Anda mendukung perangkat GPU sebelum memanfaatkan notebook AI dan ML. Dukungan GPU diaktifkan secara default untuk cluster yang telah disediakan mesin GPU-nya.

Cluster dapat dibuat menggunakan konsol atau API GDC secara langsung. Pastikan Anda menyediakan mesin GPU untuk cluster guna mendukung beban kerja GPU pada container terkait. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster Kubernetes.

GPU dialokasikan secara statis. Empat GPU pertama selalu dikhususkan untuk workload seperti API Machine Learning (ML) dan Kecerdasan Buatan (AI) yang telah dilatih sebelumnya. GPU ini tidak berjalan di cluster Kubernetes. GPU yang tersisa tersedia untuk cluster Kubernetes. Notebook AI dan ML berjalan di cluster Kubernetes.

Pastikan untuk mengalokasikan mesin GPU untuk jenis cluster yang benar guna memastikan komponen seperti AI dan ML API serta notebook dapat digunakan.