Membuat cluster pengguna (kubeception)

Dokumen ini menunjukkan cara membuat cluster pengguna yang menggunakan kubeception.

Apa itu kubeception?

Istilah kubeception digunakan untuk menyampaikan gagasan bahwa cluster Kubernetes digunakan untuk membuat dan mengelola cluster Kubernetes lainnya. Dalam konteks GKE di VMware, kubeception mengacu pada kasus ketika bidang kontrol untuk cluster pengguna berjalan pada satu atau beberapa node dalam cluster admin.

Sebaiknya jangan gunakan kubeception. Sebagai gantinya, sebaiknya gunakan Controlplane V2. Dengan Controlplane V2, node bidang kontrol untuk cluster pengguna berada dalam cluster pengguna itu sendiri.

Merencanakan alamat IP Anda

Ikuti petunjuk di bagian Merencanakan alamat IP Anda (kubeception).

Mengisi file konfigurasi cluster

Ikuti petunjuk di Membuat cluster pengguna (Controlplane V2).

Saat Anda mengisi file konfigurasi cluster pengguna:

  • Tetapkan enableControlplaneV2 ke false.

  • Tentukan jenis load balancing yang ingin Anda gunakan. Opsinya adalah:

    Untuk mengetahui informasi selengkapnya tentang opsi load balancing, lihat Ringkasan load balancing.

  • Tentukan apakah Anda ingin mengaktifkan Dataplane V2 untuk cluster pengguna, dan tetapkan enableDataplaneV2 yang sesuai.

  • Jika Anda menyertakan bagian stackdriver dan cloudAuditLogging di file konfigurasi, 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.

  • Jika menyertakan bagian gkeOnPremAPI, cloudAuditLogging, dan stackdriver di file konfigurasi, Anda harus menetapkan region Google Cloud yang sama di gkeOnPremAPI.location, cloudAuditLogging.clusterLocation, dan stackdriver.location. Jika region tidak sama, pembuatan cluster akan gagal.

Contoh file konfigurasi yang terisi

Berikut adalah contoh file blok IP yang terisi dan file konfigurasi cluster pengguna yang terisi. Konfigurasi ini mengaktifkan beberapa, tetapi tidak semua, fitur yang tersedia.

user-ipblock.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.21
      hostname: user-host1
    - ip: 172.16.20.22
      hostname: user-host2
    - ip: 172.16.20.23
      hostname: user-host3
    - ip: 172.16.20.24
      hostname: user-host4

user-cluster.yaml

apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: 1.15.0-gke.581
enableControlplaneV2: false
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: static
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.32"
    ingressVIP: "172.16.21.30"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "my-address-pool"
      addresses:
      - "172.16.21.30 - 172.16.21.39"
enableDataplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 1
nodePools:
- name: "my-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: "ubuntu_containerd"
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: true
gkeConnect:
  projectID: "my-project-123"
  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

Memvalidasi file konfigurasi Anda

Setelah Anda mengisi file konfigurasi cluster pengguna, jalankan gkectl check-config untuk memverifikasi bahwa file tersebut valid:

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig untuk cluster admin Anda

  • USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna Anda

Jika perintah menampilkan pesan kegagalan, perbaiki masalah dan validasi file kembali.

Jika Anda ingin melewati validasi yang lebih memakan waktu, teruskan flag --fast. Untuk melewati validasi satu per satu, gunakan tanda --skip-validation-xxx. Untuk mempelajari perintah check-config lebih lanjut, lihat Menjalankan pemeriksaan preflight.

(Opsional) Membuat load balancer Seesaw untuk cluster pengguna

Jika Anda telah memilih untuk menggunakan load balancer Seesaw yang dipaketkan, lakukan langkah di bagian ini. Jika tidak, lewati bagian ini.

Buat dan konfigurasi VM untuk load balancer Seesaw:

gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

(Opsional) Impor image OS ke vSphere, dan kirim image container ke registry pribadi

Jalankan gkectl prepare jika salah satu kondisi berikut terpenuhi:

  • Cluster pengguna Anda berada di pusat data vSphere yang berbeda dari cluster admin Anda.

  • Cluster pengguna memiliki Server vCenter yang berbeda dengan cluster admin.

  • Cluster pengguna Anda menggunakan container registry pribadi yang berbeda dengan registry pribadi yang digunakan oleh cluster admin.

gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --bundle-path BUNDLE \
    --user-cluster-config USER_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin Anda

  • BUNDLE: jalur file paket. File ini ada di workstation admin Anda di /var/lib/gke/bundles/. Contoh:

    /var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
    
  • USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna Anda

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 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 akan menampilkan nama cluster. Contoh:

NAME
my-user-cluster

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

Memastikan cluster pengguna Anda berjalan

Jalankan perintah berikut untuk memastikan cluster pengguna Anda berjalan:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Ganti USER_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster pengguna Anda.

Output menunjukkan node cluster pengguna. Contoh:

my-user-cluster-node-pool-69-d46d77885-7b7tx   Ready ...
my-user-cluster-node-pool-69-d46d77885-lsvzk   Ready ...
my-user-cluster-node-pool-69-d46d77885-sswjk   Ready ...

Pemecahan masalah

Baca artikel Memecahkan masalah pembuatan dan upgrade cluster.

Langkah selanjutnya