Membuat cluster pengguna untuk digunakan dengan domain topologi

Di Google Distributed Cloud, beban kerja 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.

Untuk menyiapkan domain topologi, Anda harus mengaktifkan cluster lanjutan. Perhatikan batasan berikut pada pratinjau cluster lanjutan:

  • Anda dapat mengaktifkan cluster lanjutan pada waktu pembuatan cluster hanya untuk cluster 1.31 baru.
  • Setelah cluster lanjutan diaktifkan, Anda tidak akan dapat mengupgrade cluster ke versi 1.32. Hanya aktifkan cluster lanjutan 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 Google Cloud , lihat Peran dan tugas pengguna GKE Enterprise umum.

Sebelum memulai

Ringkasan prosedur

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

  1. Mengisi file konfigurasi cluster pengguna
    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 secara 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. Memverifikasi bahwa 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.

Mengisi file konfigurasi cluster pengguna

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

Jika tidak menggunakan gkeadm untuk membuat workstation admin, Anda dapat menggunakan gkectl untuk membuat template 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.31.0-gke.889.

Pelajari file konfigurasi dengan memindai dokumen file konfigurasi cluster pengguna. Sebaiknya biarkan dokumen ini tetap terbuka 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. Ini menentukan versi Google Distributed Cloud. Misalnya, 1.31.0-gke.889.

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 akan 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 dalam 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.
  • Tetapkan network.ipMode.ipBlockFilePath ke jalur ke file blok IP.

  • Tentukan cara Anda ingin node pekerja mendapatkan alamat IP-nya. Opsi 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 Anda harus mendapatkan alamat IP-nya dari daftar alamat statis yang Anda berikan dalam file blok IP. Hal ini tetap berlaku meskipun node pekerja Anda mendapatkan alamatnya dari server DHCP.

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

  • network.podCIDR dan network.serviceCIDR memiliki nilai yang telah diisi sebelumnya dan Anda dapat membiarkannya 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 bagi node bidang kontrol, tetapkan autoResize.enabled ke true.

  • Hapus seluruh bagian masterNode.vsphere.

  • Isi kolom masterNode.topologyDomains dengan nama domain topologi yang ingin Anda tempatkan node kontrol.

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 minimal satu kumpulan node dengan mengisi bagian nodePools.

Untuk setiap kumpulan node yang Anda tentukan:

  • Isi kolom nodePools[i].topologyDomains dengan nama domain topologi yang Anda inginkan untuk 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.

# advanced-cluster-change #

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

Untuk informasi umum selengkapnya tentang kumpulan node, lihat Kumpulan node dan Membuat dan mengelola kumpulan node.

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 fleet dan Connect berjalan di gkeConnect.location. Jika Anda tidak menyertakan kolom ini, cluster akan menggunakan instance global 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 cluster terdaftar di 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 mendaftarkan cluster secara opsional di GKE On-Prem API saat cluster dibuat.

Jika GKE On-Prem API diaktifkan di projectGoogle Cloud , semua cluster dalam project akan otomatis terdaftar di GKE On-Prem API di region yang dikonfigurasi di stackdriver.clusterLocation. Region gkeOnPremAPI.location harus sama dengan region yang ditentukan dalam 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 bagian 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 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 Anda) 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.

Contoh file konfigurasi yang terisi

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.31.0-gke.889
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 penting yang perlu dipahami dalam contoh sebelumnya:

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

  • Alamat IP untuk node bidang kontrol dan node pekerja ditentukan dalam file blok IP. File blok IP memiliki empat alamat untuk node pekerja meskipun hanya ada tiga node pekerja. Alamat IP node pekerja 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 masuk berada di VLAN yang sama dengan node pekerja

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 kontrol-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 kontrol harus cocok dengan jumlah di kolom masterNode.replicas dalam file konfigurasi cluster pengguna.

Jika network.ipMode.type ditetapkan 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 di kolom topologyDomains[i].network.gateway dalam file konfigurasi infrastruktur vSphere. Untuk 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

Menemukan 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.

Memverifikasi bahwa 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

Mengonfigurasi PodTemplate

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

Misalnya, Anda menentukan kunci dalam 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 kelebihan konsentrasi di satu area jika terjadi kegagalan.

Pemecahan masalah

Lihat Memecahkan masalah pembuatan dan upgrade cluster.

Langkah selanjutnya