Menambahkan subnet ke cluster

Halaman ini menunjukkan cara menetapkan subnet tambahan ke cluster VPC native. Subnet tambahan yang ditetapkan ke cluster memungkinkan Anda membuat node pool baru tempat alamat IPv4 untuk node dan Pod berasal dari rentang subnet tambahan.

Halaman ini ditujukan untuk spesialis Jaringan yang mendesain dan membuat arsitektur jaringan untuk organisasi mereka. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam Cloud de Confiance by S3NS konten, lihat Peran dan tugas pengguna GKE umum tasks.

Ringkasan

Saat Anda membuat cluster GKE VPC native baru, Anda memilih subnet default untuk cluster. Subnet default cluster menyediakan alamat IPv4 untuk node, Pod, dan Layanan seperti yang dijelaskan dalam rentang alamat IP untuk cluster VPC native.

Anda dapat menetapkan hingga delapan subnet tambahan ke cluster VPC native, sehingga memungkinkan pertumbuhan cluster yang signifikan. Setiap subnet tambahan yang baru ditetapkan disebut subnet non-default.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.

Persyaratan dan batasan

Bagian ini menjelaskan persyaratan dan batasan yang berlaku saat Anda menetapkan dan menggunakan subnet tambahan ke cluster. Anda harus memenuhi semua persyaratan sebelum menetapkan subnet tambahan.

  • Pastikan cluster GKE Anda adalah cluster VPC native yang menjalankan GKE versi 1.30.3-gke.1211000 atau yang lebih baru. Cluster berbasis rute dan cluster di jaringan lama tidak mendukung subnet tambahan.
  • Anda dapat menetapkan hingga delapan subnet tambahan per cluster.
  • Subnet tambahan hanya menyediakan alamat IPv4 untuk node dan Pod. Subnet tambahan tidak dapat digunakan untuk menyediakan alamat IPv6 untuk node atau Pod.
  • Hanya node pool baru yang dapat menggunakan subnet tambahan, bukan node pool yang ada. Secara default, GKE otomatis memilih subnet yang sesuai untuk node pool. Anda dapat secara opsional menentukan subnet secara manual saat membuat node pool.
  • Rentang alamat IPv4 sekunder subnet di subnet non-default hanya dapat digunakan oleh satu cluster.
  • Subnet tambahan mungkin tidak dapat digunakan dengan Gateway multi-cluster.
  • Jika Anda menggunakan dukungan multi-jaringan untuk Pod, rentang alamat IPv4 utama dan Pod dari subnet tambahan tidak boleh tumpang tindih dengan rentang CIDR yang dikonfigurasi dalam penyiapan multi-jaringan Anda. Subnet tambahan yang Anda konfigurasi hanya berlaku untuk jaringan default. Batasan ini berarti bahwa antarmuka jaringan tambahan apa pun di node dan Pod Anda tidak dapat menggunakan alamat IP yang disediakan oleh subnet tambahan ini.
  • Saat Anda menambahkan subnet ke cluster yang mengaktifkan Cloud Service Mesh, mesh tidak dapat merutekan traffic ke Pod di subnet non-default.

Persyaratan load balancer untuk cluster dengan subnet tambahan

Bagian ini menjelaskan persyaratan load balancer yang berlaku saat Anda menggunakan subnet tambahan di cluster. Persyaratan ini berlaku setiap kali Anda membuat Ingress eksternal, Gateway eksternal, atau Layanan LoadBalancer eksternal.

Menambahkan subnet baru dengan satu rentang alamat IPv4 Pod

  1. Buat subnet baru dan tambahkan rentang alamat IPv4 sekunder subnet baru. Subnet harus berada di region dan jaringan VPC yang sama dengan cluster:

       gcloud compute networks subnets create SUBNET_NAME \
         --network=NETWORK \
         --region=REGION \
         --range=PRIMARY_RANGE \
         --secondary-range=POD_RANGE_NAME=SECONDARY_RANGE \
         --enable-private-ip-google-access
    

    Ganti kode berikut:

    • SUBNET_NAME: nama subnet baru.
    • NETWORK: nama jaringan VPC yang berisi subnet baru.
    • REGION: region tempat subnet berada.
    • PRIMARY_RANGE: rentang IPv4 utama untuk subnet baru, dalam notasi CIDR. Untuk informasi selengkapnya, lihat Rentang subnet IPv4.
    • POD_RANGE_NAME: nama untuk rentang sekunder.
    • SECONDARY_RANGE rentang alamat IPv4 sekunder dalam notasi CIDR. Untuk rentang yang valid, lihat rentang subnet IPv4.

    Untuk mengetahui informasi selengkapnya, lihat Menggunakan subnet.

  2. Update cluster Anda untuk menggunakan subnet tambahan menggunakan gcloud CLI:

       gcloud container clusters update CLUSTER_NAME \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang ada.
    • SUBNET_NAME: nama subnet baru yang Anda buat.
    • POD_RANGE_NAME: nama rentang alamat IPv4 sekunder subnet yang ingin Anda gunakan untuk rentang alamat IPv4 Pod.

Menambahkan subnet baru dengan beberapa rentang alamat IPv4 Pod

  1. Buat subnet baru di region dan jaringan VPC yang sama dengan cluster. Tetapkan rentang alamat IPv4 utama subnet ke rentang alamat IPv4 tambahan untuk node.

  2. Untuk setiap rentang alamat IPv4 Pod tambahan yang Anda perlukan, tambahkan rentang alamat IPv4 sekunder subnet baru ke subnet yang Anda buat pada langkah sebelumnya.

  3. Update cluster Anda untuk menggunakan subnet tambahan menggunakan gcloud CLI. Contoh berikut menambahkan satu subnet yang memiliki dua rentang alamat IPv4 sekunder subnet untuk Pod.

       gcloud container clusters update CLUSTER_NAME \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_1 \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_2
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang ada.
    • SUBNET_NAME: nama subnet baru yang Anda buat.
    • POD_RANGE_NAME_1 dan POD_RANGE_NAME_2: nama rentang alamat IPv4 sekunder subnet yang ingin Anda gunakan untuk rentang alamat IPv4 Pod.

Memverifikasi subnet

Berdasarkan cluster: Untuk melihat detail semua subnet yang terkait dengan cluster, jalankan perintah berikut:

   gcloud container clusters describe CLUSTER_NAME

Ganti CLUSTER_NAME dengan nama cluster Anda.

Outputnya mirip dengan hal berikut ini:

ipAllocationPolicy:
  additionalIPRangesConfig:
  - podIpv4RangeNames:
    - pod-range-1
    subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets

Berdasarkan node pool: Untuk melihat detail semua subnet yang terkait dengan node pool, jalankan perintah berikut:

gcloud container node-pools describe POOL_NAME \
    --cluster=CLUSTER_NAME \

Ganti kode berikut:

  • POOL_NAME: nama node pool.
  • CLUSTER_NAME: nama cluster.

Outputnya mirip dengan hal berikut ini:

name: pool-1
networkConfig:
  podRange: pod-range-1
  subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets

Cara node pool memilih subnet

Secara default, saat Anda membuat node pool baru dan beberapa subnet tersedia, GKE otomatis memilih subnet yang sesuai untuk node pool berdasarkan persyaratan alamat IP dan ketersediaan alamat IP di semua subnet cluster.

Menentukan subnet secara manual selama pembuatan node pool

Untuk menentukan subnet saat Anda membuat node pool, gunakan flag --subnetwork dengan perintah gcloud container node-pools create. Subnet yang Anda tentukan harus sudah ditetapkan ke cluster (baik sebagai subnet default atau sebagai subnet tambahan). Jika Anda tidak menentukan rentang IPv4 Pod, GKE akan otomatis memilih rentang sekunder yang tersedia dari subnet yang ditentukan. Jika subnet atau rentang Pod yang ditentukan tidak memiliki alamat IP yang cukup untuk node pool, GKE akan menampilkan error.

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --subnetwork=SUBNET_NAME

Menentukan rentang alamat IPv4 Pod beserta subnet

Jika subnet yang ditentukan memiliki beberapa rentang alamat IPv4 sekunder, Anda dapat menggunakan flag --pod-ipv4-range dan flag --subnetwork untuk menentukan rentang yang akan digunakan untuk Pod di node pool.

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --subnetwork=SUBNET_NAME \
    --pod-ipv4-range=POD_RANGE_NAME

Ganti kode berikut:

  • POOL_NAME: nama untuk node pool baru.
  • CLUSTER_NAME: nama cluster.
  • LOCATION: region atau zona cluster.
  • SUBNET_NAME: nama atau jalur resource lengkap dari subnet yang ingin Anda gunakan.
  • POD_RANGE_NAME: nama rentang sekunder subnet yang akan digunakan untuk Pod di node pool ini.

Menghapus subnet non-default

Menghapus subnet non-default dari cluster akan menginstruksikan cluster untuk tidak lagi menggunakan rentang subnet di node pool cluster mana pun. Penghapusan memiliki efek berikut:

  • Rentang alamat IPv4 utama subnet non-default tidak dapat digunakan untuk rentang alamat IPv4 node.
  • Rentang IPv4 sekunder subnet di subnet non-default tidak dapat digunakan untuk rentang IPv4 Pod.

Sebelum menghapus subnet non-default, Anda harus menghapus semua node pool yang menggunakan subnet ini. Menetapkan subnet ke status pengurasan adalah langkah pertama yang direkomendasikan. Subnet dalam status pengurasan tidak akan dipertimbangkan untuk digunakan oleh node pool yang baru dibuat. Hal ini mencegah operasi autoscaler cluster (seperti penskalaan node pool) memilih subnet yang ingin Anda hapus, tanpa perlu menonaktifkan penskalaan otomatis untuk seluruh cluster.

Langkah-langkah untuk menghapus subnet:

  1. Tetapkan subnet non-default ke status pengurasan. Hal ini mencegah node pool baru memilih subnet ini, yang berguna saat Anda mengaktifkan penskalaan otomatis di cluster.
  2. Hapus semua node pool yang menggunakan subnet ini.
  3. Hapus subnet dari cluster.

Untuk menghapus subnet non-default dari cluster, jalankan perintah berikut:

   gcloud container clusters update CLUSTER_NAME \
     --remove-additional-ip-ranges=subnetwork=SUBNET_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda.
  • SUBNET_NAME: nama subnet yang ingin Anda hapus dari cluster.

Untuk menetapkan status subnet non-default ke pengurasan, jalankan perintah berikut:

   gcloud container clusters update CLUSTER_NAME \
     --drain-additional-ip-ranges=subnetwork=SUBNET_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda.
  • SUBNET_NAME: nama subnet yang ingin Anda tetapkan ke status pengurasan.

Untuk membatalkan pengurasan subnet non-default, jalankan perintah berikut:

   gcloud container clusters update CLUSTER_NAME \
     --undrain-additional-ip-ranges=subnetwork=SUBNET_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda.
  • SUBNET_NAME: nama subnet yang ingin Anda batalkan pengurasannya.

Setelah menghapus subnet non-default dari cluster, Anda dapat menghapus subnet non-default.

Menghapus rentang IPv4 sekunder subnet non-default

Saat Anda menghapus rentang IPv4 sekunder subnet non-default dari cluster, GKE akan menginstruksikan cluster untuk tidak menggunakan rentang tersebut untuk rentang IPv4 Pod di node pool mana pun. Jika rentang IPv4 sekunder subnet non-default yang Anda hapus adalah satu-satunya rentang subnet non-default yang digunakan oleh cluster ini, GKE juga akan menginstruksikan cluster untuk berhenti menggunakan alamat IPv4 utama subnet ini untuk alamat IPv4 node.

Sebelum menghapus rentang IPv4 sekunder subnet non-default, Anda harus menghapus semua node pool yang menggunakan rentang tersebut untuk alamat IPv4 Pod.

Untuk menghapus rentang IPv4 sekunder subnet non-default dari cluster, jalankan perintah berikut:

   gcloud container clusters update CLUSTER_NAME \
     --remove-additional-ip-ranges=\
       subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • SUBNET_NAME: nama subnet non-default.
  • POD_RANGE_NAME: nama rentang IPv4 sekunder subnet non-default yang ingin Anda hapus dari cluster.

Setelah menghapus rentang IPv4 sekunder subnet non-default dari cluster, Anda dapat menghapus rentang IPv4 sekunder subnet non-default range.

Menggunakan subnet tambahan di VPC Bersama

Sebelum melanjutkan, pastikan Anda memiliki hal berikut:

  • Lingkungan VPC Bersama yang berfungsi dan tempat project host dan layanan dilampirkan. Untuk mengetahui petunjuknya, lihat Menyiapkan cluster dengan VPC Bersama.
  • Cluster GKE yang berjalan dan berada di project layanan.
  • Semua API yang diperlukan diaktifkan di project host dan layanan.
  1. Buat subnet tambahan di project host dalam jaringan yang sama dengan cluster GKE:

    gcloud compute networks subnets create ADDITIONAL_SUBNET_NAME \
      --project HOST_PROJECT_ID \
      --network shared-net \
      --range 172.16.4.0/22 \
      --region COMPUTE_REGION \
      --secondary-range ADDITIONAL_SUBNET_NAME-services=172.16.16.0/20,ADDITIONAL_SUBNET_NAME-pods=172.20.0.0/14
    
  2. Dapatkan kebijakan IAM. Untuk mengaktifkan cluster GKE di Project Layanan agar dapat mengakses subnet tambahan dalam VPC Bersama project host, Anda harus mengonfigurasi izin IAM yang diperlukan. Jika izin belum dikonfigurasi, lanjutkan dengan langkah-langkah berikut. Tidak ada tindakan yang diperlukan jika izin sudah ada.

    gcloud compute networks subnets get-iam-policy ADDITIONAL_SUBNET_NAME \
        --project HOST_PROJECT_ID \
        --region COMPUTE_REGION
    

    Output berisi kolom etag. Catat nilai etag.

  3. Buat file bernama ADDITIONAL_SUBNET_NAME-policy.yaml yang memiliki konten berikut:

      bindings:
      - members:
        - serviceAccount:SERVICE_PROJECT_NUM@cloudservices.s3ns-system.iam.gserviceaccount.com
        - serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.s3ns-system.iam.gserviceaccount.com
        role: roles/compute.networkUser
      etag: ETAG_STRING
    

    Ganti ETAG_STRING dengan nilai etag yang Anda catat sebelumnya.

  4. Tetapkan kebijakan IAM untuk subnet ADDITIONAL_SUBNET_NAME:

      gcloud compute networks subnets set-iam-policy ADDITIONAL_SUBNET_NAME \
          ADDITIONAL_SUBNET_NAME-policy.yaml \
          --project HOST_PROJECT_ID \
          --region COMPUTE_REGION
    
  5. Verifikasi subnet yang dapat digunakan dan rentang alamat IP sekunder, seperti yang dijelaskan dalam shared vpc verify usable subnets.

  6. Update cluster VPC Bersama dari subnet tambahan:

    gcloud container clusters update CLUSTER_NAME \
        --project=SERVICE_PROJECT_ID \
        --location=CONTROL_PLANE_LOCATION \
        --additional-ip-ranges=subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/ADDITIONAL_SUBNET_NAME,pod-ipv4-range=ADDITIONAL_SUBNET_NAME-pods

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster GKE Anda di project layanan.
  • ADDITIONAL_SUBNET_NAME: nama subnet tambahan yang Anda buat di project host (misalnya, tier-2).
  • HOST_PROJECT_ID: ID project host.
  • SERVICE_PROJECT_NUM: nama project layanan.
  • COMPUTE_REGION: region tempat subnet berada.

Hal ini memungkinkan Anda menggunakan subnet tambahan di lingkungan VPC Bersama.

Langkah berikutnya