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 bagi spesialis Jaringan yang mendesain dan membangun arsitektur jaringan untuk organisasi mereka. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna GKE umum. Google Cloud

Ringkasan

Saat membuat cluster GKE native VPC baru, Anda memilih subnet default untuk cluster tersebut. 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 berbasis VPC, 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. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah 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 bagi node atau Pod.
  • Hanya node pool baru yang dapat menggunakan subnet tambahan, bukan node pool yang sudah ada. Saat Anda membuat node pool baru dan beberapa subnet non-default tersedia, GKE akan memilih subnet terbaik untuk node pool berdasarkan persyaratan alamat IP dan ketersediaan alamat IP di semua subnet cluster.
  • Anda tidak dapat mengontrol subnet non-default yang digunakan oleh node pool baru. Misalnya, jika cluster Anda memiliki subnet default (yang digunakan selama pembuatan cluster) dan dua subnet non-default, Anda tidak dapat menentukan subnet non-default mana yang harus digunakan oleh node pool baru.
  • Rentang alamat IPv4 sekunder subnet di subnet non-default hanya dapat digunakan oleh satu cluster.
  • Subnet tambahan tidak boleh 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 pada 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.

  • Untuk menggunakan Ingress, Gateway, atau Layanan LoadBalancer eksternal di cluster dengan subnet tambahan, cluster Anda harus menjalankan GKE versi 1.33.2-gke.4780000 atau yang lebih baru.
  • Objek Ingress eksternal yang menggunakan pengontrol Ingress GKE harus menggunakan load balancing berbasis container.
  • Aktifkan subsetelan GKE untuk Service LoadBalancer internal. Subsetelan GKE hanya memengaruhi Service LoadBalancer internal baru. Oleh karena itu, Anda harus menghapus dan membuat ulang Layanan yang ada di cluster setelah mengaktifkan subkumpulan GKE.
  • Untuk membuat Load Balancer Jaringan passthrough eksternal berbasis layanan backend, Service LoadBalancer eksternal baru harus menyertakan anotasi cloud.google.com/l4-rbs: "enabled". Anotasi ini hanya memengaruhi Layanan LoadBalancer eksternal baru dan tidak berlaku untuk Layanan LoadBalancer eksternal yang sudah ada. Hapus dan buat ulang semua Layanan LoadBalancer eksternal yang dibuat tanpa anotasi cloud.google.com/l4-rbs: "enabled".

    Jenis backend yang digunakan (backend NEG GCE_VM_IP atau backend grup instance) bergantung pada versi GKE saat Anda membuat Layanan LoadBalancer eksternal. Untuk mengetahui informasi selengkapnya, lihat Pengelompokan node.

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 mengetahui 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 butuhkan, 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

Menurut 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

Menurut 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

Menghapus subnet non-default

Menghapus subnet non-default dari cluster akan menginstruksikan cluster untuk tidak lagi menggunakan rentang subnet di salah satu kumpulan node cluster. 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 kumpulan node 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 penskalaan otomatis 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 menyetel 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 menghentikan 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 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 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.

Menggunakan subnet tambahan di VPC Bersama

Sebelum melanjutkan, pastikan Anda memiliki hal berikut:

  • Lingkungan VPC Bersama yang berfungsi dengan project host dan layanan yang terlampir. 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. Mendapatkan kebijakan IAM. Untuk mengizinkan cluster GKE di Project Layanan mengakses subnet tambahan dalam VPC Bersama project host, Anda harus mengonfigurasi izin IAM yang diperlukan. Jika izin belum dikonfigurasi, lanjutkan dengan langkah-langkah berikut. Anda tidak perlu melakukan tindakan apa pun 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.gserviceaccount.com
        - serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.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. Perbarui 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: project ID host.
  • SERVICE_PROJECT_NUM: nama project layanan.
  • COMPUTE_REGION: region tempat subnet berada.

Dengan begitu, Anda dapat menggunakan subnet tambahan di lingkungan VPC Bersama.

Langkah berikutnya