Membuat cluster pengguna untuk digunakan dengan domain topologi

Di Google Distributed Cloud, workload Anda berjalan di satu atau beberapa cluster pengguna. Halaman ini menunjukkan cara membuat cluster pengguna untuk digunakan di domain topologi Google Distributed Cloud. Google Distributed Cloud versi 1.31 atau yang lebih tinggi diperlukan untuk menggunakan domain topologi.

Penyiapan domain topologi mengharuskan Anda mengaktifkan cluster lanjutan. Perhatikan batasan berikut pada pratinjau cluster lanjutan:

  • Anda dapat mengaktifkan cluster lanjutan pada saat pembuatan cluster untuk cluster 1.31 baru saja.
  • Setelah cluster lanjutan diaktifkan, Anda tidak akan dapat mengupgrade cluster ke 1.32. Aktifkan cluster lanjutan hanya di lingkungan pengujian.

Halaman ini ditujukan untuk Admin, Arsitek, dan Operator yang menyiapkan, memantau, dan mengelola infrastruktur teknologi. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna GKE umum. Google Cloud

Sebelum memulai

Ringkasan prosedur

Langkah-langkah utama berikut terlibat dalam penggunaan gkectl untuk membuat cluster pengguna:

  1. Isi file konfigurasi cluster pengguna Anda
    Tentukan detail untuk cluster baru Anda dalam file konfigurasi cluster pengguna.
  2. Isi file blok IP Anda
    Tentukan alamat IP untuk gateway, netmask, node bidang kontrol, dan opsional, node pekerja dalam file blok IP.
  3. Membuat cluster pengguna
    Jalankan gkectl create cluster untuk membuat cluster seperti yang ditentukan dalam file konfigurasi Anda.
  4. Pastikan cluster pengguna Anda berjalan
    Gunakan kubectl untuk melihat node cluster Anda.

Di akhir prosedur ini, Anda akan memiliki cluster pengguna yang berjalan tempat Anda dapat men-deploy beban kerja.

Isi file konfigurasi cluster pengguna Anda

Jika Anda menggunakan gkeadm untuk membuat workstation admin, gkeadm akan membuat template untuk file konfigurasi cluster pengguna Anda yang bernama user-cluster.yaml. Selain itu, gkeadm telah mengisi beberapa kolom untuk Anda.

Jika Anda tidak menggunakan gkeadm untuk membuat workstation admin, Anda dapat menggunakan gkectl untuk membuat template bagi file konfigurasi cluster pengguna.

Untuk membuat template file konfigurasi cluster pengguna:

gkectl create-config cluster --config=OUTPUT_FILENAME --gke-on-prem-version=VERSION

Ganti kode berikut:

OUTPUT_FILENAME: jalur pilihan Anda untuk template yang dihasilkan. Jika Anda menghilangkan tanda ini, gkectl akan memberi nama file user-cluster.yaml dan menempatkannya di direktori saat ini.

VERSION: nomor versi yang diinginkan. Contoh: gkectl create-config cluster --gke-on-prem-version=1.32.200-gke.104.

Pelajari file konfigurasi dengan membaca dokumen file konfigurasi cluster pengguna. Sebaiknya buka dokumen ini di tab atau jendela terpisah, karena Anda akan merujuknya saat menyelesaikan langkah-langkah berikut.

name

Tetapkan kolom name ke nama pilihan Anda untuk cluster pengguna.

gkeOnPremVersion

Kolom ini sudah diisi untuk Anda. Menentukan versi Google Distributed Cloud. Misalnya, 1.32.200-gke.104.

enableAdvancedCluster

Tetapkan enableAdvancedCluster ke true.

enableControlplaneV2

Controlplane V2 diperlukan untuk semua cluster pengguna 1.30 dan yang lebih tinggi. Tetapkan enableControlplaneV2 ke true.

Jika Controlplane V2 diaktifkan, bidang kontrol untuk cluster pengguna berjalan di node dalam cluster pengguna itu sendiri.

enableDataplaneV2

Tetapkan enableDataplaneV2 ke true.

vCenter

Hapus seluruh bagian ini. Sebagai gantinya, Anda mengonfigurasi informasi vCenter di file konfigurasi infrastruktur vSphere per domain topologi.

network

  • Hapus hal berikut dari file konfigurasi:

    • Seluruh bagian network.hostConfig. Informasi ini dikonfigurasi dalam file konfigurasi infrastruktur vSphere per domain topologi.
    • Kolom network.vCenter.networkName. Kolom ini dikonfigurasi di file konfigurasi infrastruktur vSphere per domain topologi.
    • Seluruh bagian network.controlPlaneIPBlock. Alamat IP untuk gateway, netmask, dan node bidang kontrol dikonfigurasi dalam file blok IP.
  • Setel network.ipMode.ipBlockFilePath ke jalur file blok IP.

  • Tentukan cara Anda ingin node pekerja mendapatkan alamat IP-nya. Opsi yang tersedia adalah:

    • Dari server DHCP yang Anda siapkan sebelumnya. Tetapkan network.ipMode.type ke "dhcp".

    • Dari daftar alamat IP statis yang Anda berikan dalam file blok IP. Tetapkan network.ipMode.type ke "static".

    Node bidang kontrol untuk cluster pengguna harus mendapatkan alamat IP dari daftar alamat statis yang Anda berikan dalam file blok IP. Hal ini berlaku meskipun node pekerja Anda mendapatkan alamat dari server DHCP.

    Terlepas dari apakah Anda mengandalkan server DHCP atau menentukan daftar alamat IP statis, Anda harus memiliki alamat IP yang cukup untuk cluster pengguna. Untuk mengetahui penjelasan tentang jumlah alamat IP yang Anda perlukan, lihat Merencanakan alamat IP Anda.

  • network.podCIDR dan network.serviceCIDR memiliki nilai yang sudah diisi sebelumnya yang dapat Anda biarkan tidak berubah kecuali jika bertentangan dengan alamat yang sudah digunakan di jaringan Anda. Kubernetes menggunakan rentang ini untuk menetapkan alamat IP ke Pod dan Layanan di cluster Anda.

loadBalancer

advancedNetworking

Jika Anda berencana membuat gateway NAT keluar, tetapkan advancedNetworking ke true.

multipleNetworkInterfaces

Tetapkan multipleNetworkInterfaces ke false. Beberapa antarmuka jaringan untuk Pod tidak didukung dengan domain topologi.

storage

Tetapkan storage.vSphereCSIDisabled ke true untuk menonaktifkan deployment komponen vSphere CSI.

masterNode

  • Jika Anda ingin menentukan CPU dan memori untuk node bidang kontrol cluster pengguna, isi kolom cpus dan memoryMB di bagian masterNode.

  • Hanya cluster dengan ketersediaan tinggi (HA) yang didukung. Tetapkan kolom replicas ke 3 untuk menentukan bahwa cluster akan memiliki tiga node bidang kontrol.

  • Untuk mengaktifkan pengubahan ukuran otomatis untuk node bidang kontrol, tetapkan autoResize.enabled ke true.

  • Hapus seluruh bagian masterNode.vsphere.

  • Isi kolom masterNode.topologyDomains dengan nama domain topologi yang Anda inginkan untuk node control plane.

nodePools

Node pool adalah sekelompok node pekerja dalam cluster yang semuanya memiliki konfigurasi yang sama. Misalnya, Anda mungkin ingin menyiapkan domain topologi terpisah untuk setiap kumpulan node. Anda harus menentukan setidaknya satu kumpulan node dengan mengisi bagian nodePools.

Untuk setiap node pool yang Anda tentukan:

  • Isi kolom nodePools[i].topologyDomains dengan nama domain topologi tempat Anda ingin menempatkan node pool.

  • Hapus semua kolom di bagian nodePools[i].vsphere, kecuali nodePools[i].vsphere.tags. Anda menentukan informasi ini dalam file konfigurasi infrastruktur vSphere per domain topologi.

  • Tetapkan nodePools[i].osImageType ke ubuntu_cgroupv2 atau ubuntu_containerd.

Untuk mengetahui informasi umum selengkapnya tentang node pool, lihat Node pool dan Membuat dan mengelola node pool.

antiAffinityGroups

Tetapkan antiAffinityGroups.enabled ke false. Aturan anti-afinitas Distributed Resource Scheduler (DRS) tidak didukung dengan domain topologi.

stackdriver

Isi bagian stackdriver untuk mengaktifkan Cloud Logging dan Cloud Monitoring untuk cluster Anda.

Perhatikan persyaratan berikut:

  • ID di stackdriver.projectID harus sama dengan ID di gkeConnect.projectID dan cloudAuditLogging.projectID.

  • Region Google Cloud yang ditetapkan di stackdriver.clusterLocation harus sama dengan region yang ditetapkan di cloudAuditLogging.clusterLocation dan gkeConnect.location. Selain itu, jika gkeOnPremAPI.enabled adalah true, region yang sama harus ditetapkan di gkeOnPremAPI.location.

Jika project ID dan region tidak sama, pembuatan cluster akan gagal.

gkeConnect

Cluster pengguna Anda harus terdaftar ke Google Cloud fleet.

Isi bagian gkeConnect untuk menentukan project host fleet dan akun layanan terkait. ID di gkeConnect.projectID harus sama dengan ID yang ditetapkan di stackdriver.projectID dan cloudAuditLogging.projectID. Jika project ID tidak sama, pembuatan cluster akan gagal.

Secara opsional, Anda dapat menentukan region tempat layanan Connect dan armada berjalan di gkeConnect.location. Jika Anda tidak menyertakan kolom ini, cluster akan menggunakan instance global dari layanan ini.

Jika Anda menyertakan gkeConnect.location dalam file konfigurasi, region yang Anda tentukan harus sama dengan region yang dikonfigurasi di cloudAuditLogging.clusterLocation, stackdriver.clusterLocation, dan gkeOnPremAPI.location. Jika region tidak sama, pembuatan cluster akan gagal.

gkeOnPremAPI

Bagian ini menjelaskan cara mendaftarkan cluster ke GKE On-Prem API.

Alat command line gkectl adalah satu-satunya alat pengelolaan siklus proses cluster yang tersedia untuk cluster yang menggunakan domain topologi. Meskipun konsol Google Cloud , Google Cloud CLI, dan Terraform tidak didukung untuk cluster yang menggunakan domain topologi, Anda dapat secara opsional mendaftarkan cluster di GKE On-Prem API saat cluster dibuat.

Jika GKE On-Prem API diaktifkan di projectGoogle Cloud , semua cluster dalam project akan didaftarkan ke GKE On-Prem API secara otomatis di region yang dikonfigurasi di stackdriver.clusterLocation. Region gkeOnPremAPI.location harus sama dengan region yang ditentukan di cloudAuditLogging.clusterLocation, gkeConnect.location, dan stackdriver.clusterLocation.

  • Jika Anda ingin mendaftarkan semua cluster dalam project di GKE On-Prem API, pastikan untuk melakukan langkah-langkah di Sebelum memulai untuk mengaktifkan dan menggunakan GKE On-Prem API dalam project.

  • Jika Anda tidak ingin mendaftarkan cluster di GKE On-Prem API, sertakan bagian ini dan tetapkan gkeOnPremAPI.enabled ke false. Jika Anda tidak ingin mendaftarkan cluster apa pun dalam project, nonaktifkan gkeonprem.googleapis.com (nama layanan untuk GKE On-Prem API) dalam project. Untuk mengetahui petunjuknya, lihat Menonaktifkan layanan.

cloudAuditLogging

Jika Anda ingin mengintegrasikan log audit dari server Kubernetes API cluster Anda dengan Cloud Audit Logs, isi bagian cloudAuditLogging.

Perhatikan persyaratan berikut:

# advanced-cluster-change #

Tetapkan cloudAuditLogging.serviceAccountKeyPath ke jalur yang sama dengan stackdriver.serviceAccountKeyPath.

  • ID di cloudAuditLogging.projectID harus sama dengan ID di gkeConnect.projectID dan stackdriver.projectID.

  • Region di cloudAuditLogging.clusterLocation harus sama dengan region yang ditetapkan di gkeConnect.location (jika kolom disertakan dalam file konfigurasi) dan stackdriver.clusterLocation. Selain itu, jika gkeOnPremAPI.enabled adalah true, region yang sama harus ditetapkan di gkeOnPremAPI.location.

Jika project ID dan region tidak sama, pembuatan cluster akan gagal.

preparedSecrets

Hapus kolom preparedSecrets. Kredensial yang disiapkan tidak didukung saat domain topologi diaktifkan.

schedulerConfiguration

Jika Anda ingin menyiapkan konfigurasi tambahan yang akan diteruskan ke kube-scheduler, tambahkan bagian schedulerConfiguration ke file konfigurasi Anda.

Contoh file konfigurasi yang telah diisi

Berikut adalah contoh file blok IP dan file konfigurasi cluster pengguna;

user-ipblock.yaml

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.21.1
    ips:
    - ip: 172.16.21.2
      hostname: worker-vm-1
    - ip: 172.16.21.3
      hostname: worker-vm-2
    - ip: 172.16.21.4
      hostname: worker-vm-3
    - ip: 172.16.21.5
      hostname: worker-vm-4
  - netmask: 255.255.255.0
    gateway: 100.115.223.254
    ips:
    - ip: 100.115.222.205
      hostname: cp-1
      isControlPlane: true
    - ip: 100.115.222.206
      hostname: cp-2
      isControlPlane: true
    - ip: 100.115.222.207
      hostname: cp-3
      isControlPlane: true

user-cluster.yaml

cat user-cluster.yaml
apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: 1.32.200-gke.104
enableAdvancedCluster: true
enableControlplaneV2: true
enableDataplaneV2: true
network:
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
loadBalancer:
  vips:
    controlPlaneVIP: "100.115.222.200"
    ingressVIP: "172.16.21.30"
  kind: "ManualLB"
  manualLB:
    ingressHTTPNodePort: 32527
    ingressHTTPSNodePort: 30139
    controlPlaneNodePort: 30968
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 3
nodePools:
- name: "worker-node-pool1"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  topologyDomains:
  - "domain1"
antiAffinityGroups:
  enabled: false
gkeConnect:
  projectID: "my-project-123"
  location: "us-central1"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
autoRepair:
  enabled: true

Berikut adalah poin-poin penting yang perlu dipahami dalam contoh sebelumnya:

  • Kolom nodePools.replicas ditetapkan ke 3, yang berarti ada tiga node pekerja di "worker-node-pool". Semua worker node menggunakan alamat IP statis karena network.ipMode.type disetel ke "static".

  • Alamat IP untuk node bidang kontrol dan worker node ditentukan dalam file blok IP. File blok IP memiliki empat alamat untuk worker node, meskipun hanya ada tiga worker node. Alamat IP worker node tambahan diperlukan selama upgrade, update, dan perbaikan otomatis cluster. Alamat IP untuk node bidang kontrol memiliki tanda isControlPlane: true.

  • Cluster lanjutan, Controlplane V2, dan Dataplane V2 diaktifkan.

  • Kolom masterNode.replicas disetel ke 3, sehingga cluster akan memiliki bidang kontrol dengan ketersediaan tinggi.

  • VIP bidang kontrol berada di VLAN yang sama dengan node bidang kontrol, dan VIP ingress berada di VLAN yang sama dengan worker node

Isi file blok IP Anda

Salin template untuk file blok IP ke file di direktori yang Anda tentukan di kolom network.ipMode.ipBlockFilePath dalam file konfigurasi cluster pengguna. Buat file blok IP terpisah untuk cluster admin dan untuk setiap cluster pengguna.

Tambahkan alamat IP untuk gateway, netmask, dan node bidang kontrol ke file blok IP. Untuk setiap alamat IP node control plane, tambahkan isControlPlane: true seperti yang ditunjukkan pada contoh sebelumnya. Jika Anda menginginkan cluster pengguna ketersediaan tinggi (HA), tentukan tiga alamat IP. Jika tidak, tentukan satu alamat IP. Jumlah alamat IP yang Anda tentukan untuk node bidang kontrol harus cocok dengan jumlah di kolom masterNode.replicas dalam file konfigurasi cluster pengguna.

Jika network.ipMode.type disetel ke "static", tambahkan alamat IP untuk node pekerja ke file blok IP. Pastikan untuk menentukan satu alamat IP tambahan untuk digunakan selama upgrade, update, dan perbaikan otomatis cluster.

Setiap alamat gateway dalam file blok IP harus cocok dengan alamat yang ditentukan dalam kolom topologyDomains[i].network.gateway di file konfigurasi infrastruktur vSphere. Untuk mengetahui informasi selengkapnya, lihat contoh untuk domain topologi.

Membuat cluster pengguna

Jalankan perintah berikut untuk membuat cluster pengguna:

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Cari file kubeconfig cluster pengguna

Perintah gkectl create cluster akan membuat file kubeconfig bernama USER_CLUSTER_NAME-kubeconfig di direktori saat ini. Anda akan memerlukan file kubeconfig ini nanti untuk berinteraksi dengan cluster pengguna.

File kubeconfig berisi nama cluster pengguna Anda. Untuk melihat nama cluster, Anda dapat menjalankan:

kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG

Output menampilkan nama cluster. Contoh:

NAME
my-user-cluster

Jika ingin, Anda dapat mengubah nama dan lokasi file kubeconfig.

Pastikan cluster pengguna Anda berjalan

Pastikan cluster pengguna Anda berjalan:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Ganti USER_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster pengguna Anda.

Output menampilkan node cluster pengguna. Contoh:

cp-vm-1       Ready    control-plane,master   18m
cp-vm-2       Ready    control-plane,master   18m
cp-vm-3       Ready    control-plane,master   18m
worker-vm-1   Ready                           6m7s
worker-vm-2   Ready                           6m6s
worker-vm-3   Ready                           6m14s

Konfigurasi PodTemplate

Label topologi diisi ke label node dalam domain topologi. Kecuali jika penyiapan domain topologi Anda menggunakan batasan default, "topology.kubernetes.io/zone" sebagai kunci topologi, Anda perlu mengonfigurasi kunci topologi di template pod Deployment, StatefulSet, atau ReplicaSet, sebagaimana berlaku.

Misalnya, Anda menentukan kunci di label topologi sebagai "topology.examplepetstore.com/zone". Di PodTemplate, Anda menentukan kunci sebagai nilai untuk kolom topologySpreadConstraints.topologyKey. Hal ini memungkinkan penjadwal Kubernetes mendistribusikan Pod di seluruh domain topologi untuk memastikan ketersediaan tinggi dan mencegah konsentrasi berlebih di satu area jika terjadi kegagalan.

Pemecahan masalah

Lihat Memecahkan masalah pembuatan dan upgrade cluster.

Langkah berikutnya