Membuat cluster pengguna (Controlplane V2)

Dokumen ini menunjukkan cara membuat cluster pengguna dengan Controlplane V2 diaktifkan.

Dengan Controlplane V2, bidang kontrol untuk cluster pengguna berjalan pada satu atau beberapa node dalam cluster pengguna itu sendiri. Controlplane V2 adalah setelan default dan yang direkomendasikan untuk pembuatan cluster.

Ringkasan prosedur

Berikut adalah langkah-langkah utama yang diperlukan dalam membuat cluster pengguna:

  1. Menghubungkan ke workstation admin
    Workstation admin adalah VM yang memiliki alat yang diperlukan untuk membuat cluster pengguna.
  2. Isi file konfigurasi Anda
    Tentukan detail untuk cluster baru Anda dengan melengkapi file konfigurasi cluster pengguna, file konfigurasi kredensial, dan mungkin file blok IP.
  3. (Opsional) Impor OS image ke vSphere, dan kirim image container ke
    registry pribadi jika ada.
    Jalankan gkectl prepare.
  4. Membuat cluster pengguna
    Jalankan gkectl create cluster untuk membuat cluster seperti yang ditentukan dalam file konfigurasi Anda.
  5. Memastikan 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.

Sebelum memulai

  • Pastikan Anda telah membuat workstation admin dan cluster admin.

  • Tinjau dokumen perencanaan alamat IP. Pastikan Anda memiliki alamat IP yang cukup, dan tinjau kembali keputusan Anda tentang cara mendapatkan alamat IP dari node cluster: DHCP atau statis. Jika memutuskan untuk menggunakan alamat IP statis, Anda harus mengisi file blok IP yang berisi alamat pilihan Anda.

  • Tinjau ringkasan load balancing dan tinjau kembali keputusan Anda tentang jenis load balancer yang ingin Anda gunakan. Anda dapat menggunakan load balancer MetalLB yang dipaketkan, atau mengonfigurasi load balancer pilihan Anda secara manual. Untuk load balancing manual, Anda harus menyiapkan load balancer sebelum membuat cluster pengguna.

  • Lihat bagian vCenter di depan. Pikirkan apakah Anda ingin menggunakan cluster vSphere terpisah untuk cluster admin dan cluster pengguna, serta apakah Anda ingin menggunakan pusat data terpisah. Pertimbangkan juga apakah Anda ingin menggunakan instance vCenter Server terpisah.

  • Lihat bagian nodePools sebelumnya. Pikirkan berapa banyak kumpulan node yang Anda butuhkan dan sistem operasi mana yang ingin Anda jalankan di setiap kumpulan.

1. Menghubungkan ke workstation admin

Dapatkan koneksi SSH ke workstation admin.

Ingat kembali bahwa gkeadm mengaktifkan akun layanan akses komponen Anda di workstation admin.

Lakukan semua langkah selanjutnya dalam topik ini di workstation admin di direktori utama.

2. Isi file konfigurasi Anda

Saat membuat workstation admin Anda, gkeadm menghasilkan file konfigurasi bernama user-cluster.yaml. File konfigurasi ini digunakan untuk membuat cluster pengguna.

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 GKE di VMware. Contoh, 1.15.0-gke.581

enableControlplaneV2

Setel enableControlplaneV2 ke true.

enableDataplaneV2

Tetapkan enableDataplaneV2 ke true.

vCenter

Nilai yang Anda tetapkan di bagian vCenter file konfigurasi cluster admin bersifat global. Artinya, konfigurasi tersebut berlaku untuk cluster admin Anda dan cluster pengguna terkaitnya.

Untuk setiap cluster pengguna yang dibuat, Anda memiliki opsi untuk mengganti beberapa nilai vCenter global.

Untuk mengganti salah satu nilai vCenter global, isi kolom yang relevan di bagian vCenter file konfigurasi cluster pengguna Anda.

Secara khusus, Anda mungkin ingin menggunakan cluster vSphere terpisah untuk cluster admin dan cluster pengguna, serta mungkin ingin menggunakan pusat data terpisah untuk cluster admin dan cluster pengguna.

Menggunakan satu pusat data dan satu cluster vSphere

Opsi defaultnya adalah menggunakan satu pusat data dan satu cluster vSphere untuk cluster admin dan cluster pengguna. Untuk opsi ini, jangan tetapkan nilai vCenter apa pun dalam file konfigurasi cluster pengguna. Nilai vCenter akan diwarisi dari cluster admin.

Menggunakan cluster vSphere terpisah

Jika Anda ingin membuat cluster pengguna yang berada di cluster vSphere-nya sendiri, tentukan nilai untuk vCenter.cluster dalam file konfigurasi cluster pengguna.

Jika cluster admin dan cluster pengguna Anda berada di cluster vSphere terpisah, cluster tersebut dapat berada di pusat data yang sama atau pusat data yang berbeda.

Menggunakan pusat data vSphere terpisah

Cluster pengguna dan cluster admin dapat berada di pusat data yang berbeda. Dalam hal ini, paket tersebut juga berada di cluster vSphere terpisah.

Jika menentukan vCenter.datacenter dalam file konfigurasi cluster pengguna, Anda juga harus menentukan:

  • vCenter.networkName
  • Berupa vCenter.datastore atau vCenter.storagePolicyName
  • Berupa vCenter.cluster atau vCenter.resourcePool

Menggunakan akun vCenter terpisah

Cluster pengguna dapat menggunakan akun vCenter berbeda, dengan vCenter.credentials yang berbeda, dari cluster admin. Akun vCenter untuk cluster admin memerlukan akses ke pusat data cluster admin, sedangkan akun vCenter untuk cluster pengguna hanya memerlukan akses ke pusat data cluster pengguna.

Menggunakan instance Server vCenter terpisah

Dalam situasi tertentu, sebaiknya buat cluster pengguna yang menggunakan instance Server vCenter-nya sendiri. Artinya, cluster admin dan cluster pengguna terkait menggunakan instance vCenter Server yang berbeda.

Misalnya, di lokasi edge, Anda mungkin ingin memiliki mesin fisik yang menjalankan vCenter Server dan satu atau beberapa mesin fisik yang menjalankan ESXi. Kemudian, Anda dapat menggunakan instance lokal Server vCenter untuk membuat hierarki objek vSphere, yang mencakup pusat data, cluster, kumpulan resource, datastore, dan folder.

Isi seluruh bagian vCenter pada file konfigurasi cluster pengguna Anda. Secara khusus, tentukan nilai untuk vCenter.address yang berbeda dengan alamat Server vCenter yang Anda tentukan dalam file konfigurasi cluster admin. Contoh:

vCenter:
  address: "vc-edge.example"
  datacenter: "vc-edge"
  cluster: "vc-edge-workloads"
  resourcePool: "vc-edge-pool
  datastore: "vc-edge-datastore
  caCertPath: "/usr/local/google/home/me/certs/edge-cacert.pem"
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter-edge"
  folder: "edge-vm-folder"

Isi juga kolom network.vCenter.networkName.

network

Tentukan cara yang Anda inginkan bagi node pekerja untuk mendapatkan alamat IP. Opsinya adalah:

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

  • Dari daftar alamat IP statis yang Anda berikan. Tetapkan network.ipMode.type ke "static", dan buat file blok IP yang menyediakan alamat IP statis. Untuk contoh file blok IP, lihat Contoh file konfigurasi yang terisi.

Jika Anda memutuskan untuk menggunakan alamat IP statis untuk node pekerja, isi kolom network.ipMode.ipBlockFilePath.

Node bidang kontrol untuk cluster pengguna Anda harus mendapatkan alamat IP dari daftar alamat statis yang Anda berikan. Inilah yang terjadi bahkan jika {i>node<i} pekerja Anda mendapatkan alamatnya dari server DHCP. Untuk menentukan alamat IP statis bagi node bidang kontrol, isi bagian network.controlPlaneIPBlock. Jika Anda menginginkan cluster pengguna dengan ketersediaan tinggi (HA), tentukan tiga alamat IP. Jika tidak, tentukan satu alamat IP.

Tentukan server DNS dan NTP dengan mengisi bagian hostConfig. Server DNS dan NTP ini ditujukan untuk {i>node<i} bidang kontrol. Jika Anda menggunakan alamat IP statis untuk node pekerja, server DNS dan NTP ini juga ditujukan untuk node pekerja.

network.podCIDR dan network.serviceCIDR memiliki nilai yang telah terisi otomatis dan dapat Anda biarkan tidak diubah, 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.

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

loadBalancer

Sisihkan VIP untuk server Kubernetes API dari cluster pengguna Anda. Sisihkan VIP lain untuk layanan masuk cluster pengguna Anda. Berikan VIP Anda sebagai nilai untuk loadBalancer.vips.controlPlaneVIP dan loadBalancer.vips.ingressVIP.

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

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

advancedNetworking

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

multipleNetworkInterfaces

Tentukan apakah Anda ingin mengonfigurasi beberapa antarmuka jaringan untuk Pod, dan tetapkan multipleNetworkInterfaces secara sesuai.

storage

Jika ingin menonaktifkan deployment komponen CSI vSphere, tetapkan storage.vSphereCSIDisabled ke true.

masterNode

Di bagian masterNode, Anda dapat menentukan jumlah node bidang kontrol yang diinginkan untuk cluster pengguna: satu atau tiga. Anda juga dapat menentukan datastore untuk node bidang kontrol dan apakah ingin mengaktifkan pengubahan ukuran otomatis untuk node bidang kontrol.

Ingat kembali bahwa Anda telah menentukan alamat IP untuk node bidang kontrol di bagian network.controlPlaneIPBlock.

nodePools

Kumpulan node adalah kumpulan node dalam cluster yang semuanya memiliki konfigurasi yang sama. Misalnya, node dalam satu kumpulan dapat menjalankan Windows dan node di kumpulan lain dapat menjalankan Linux.

Anda harus menentukan setidaknya satu kumpulan node dengan mengisi bagian nodePools.

Untuk mengetahui informasi selengkapnya, lihat Kumpulan node serta Membuat dan mengelola kumpulan node.

antiAffinityGroups

Setel antiAffinityGroups.enabled ke true atau false.

Kolom ini menentukan apakah GKE di VMware membuat aturan anti-afinitas Distributed Resource Scheduler (DRS) untuk node pekerja Anda, yang menyebabkan aturan tersebut disebarkan di setidaknya tiga host fisik di pusat data Anda.

stackdriver

Jika ingin mengaktifkan Cloud Logging dan Cloud Monitoring untuk cluster Anda, isi bagian stackdriver.

Bagian ini wajib diisi secara default. Artinya, jika tidak mengisi bagian ini, Anda harus menyertakan flag --skip-validation-stackdriver saat menjalankan gkectl create cluster.

Perhatikan persyaratan berikut untuk cluster baru:

  • 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. 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 fleet Google Cloud.

Isi bagian gkeConnect untuk menentukan project host armada dan akun layanan terkait.

Jika Anda menyertakan bagian stackdriver dan cloudAuditLogging dalam 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.

gkeOnPremAPI

Pada versi 1.16 dan yang lebih baru, jika GKE On-Prem API diaktifkan di project Google Cloud Anda, semua cluster dalam project akan terdaftar di GKE On-Prem API secara otomatis di region yang dikonfigurasi di stackdriver.clusterLocation.

  • Jika ingin mendaftarkan semua cluster dalam project di GKE On-Prem API, pastikan Anda 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.

usageMetering

Jika ingin mengaktifkan pengukuran penggunaan untuk cluster Anda, isi bagian usageMetering.

cloudAuditLogging

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

Perhatikan persyaratan berikut untuk cluster baru:

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

  • Region Google Cloud yang ditetapkan di cloudAuditLogging.clusterLocation harus sama dengan region yang ditetapkan di 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.

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

user-cluster.yaml

cat user-cluster.yaml
apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: 1.15.0-gke.581
enableControlplaneV2: true
enableDataplaneV2: true
network:
  hostConfig:
    dnsServers:
    - "203.0.113.2"
    - "198.51.100.2"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.6"
      hostname: "cp-vm-1"
    - ip: "172.16.21.7"
      hostname: "cp-vm-2"
    - ip: "172.16.21.8"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: MetalLB
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
      - "172.16.21.30-172.16.21.39"
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 3
nodePools:
- name: "worker-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  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

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

  • Alamat IP statis untuk node pekerja ditentukan dalam file blok IP. File blok IP memiliki empat alamat meskipun hanya ada tiga {i>node<i} pekerja. Alamat IP tambahan diperlukan selama upgrade, update, dan perbaikan otomatis cluster.

  • Server DNS dan NTP ditentukan di bagian hostConfig. Dalam contoh ini, server DNS dan NTP ditujukan untuk node bidang kontrol dan node pekerja. Hal ini dikarenakan node pekerja memiliki alamat IP statis. Jika node pekerja mendapatkan alamat IP dari server DHCP, server DNS dan NTP ini hanya akan ditujukan untuk node bidang kontrol.

  • Alamat IP statis untuk tiga node bidang kontrol ditentukan di bagian network.controlPlaneIPBlock pada file konfigurasi cluster pengguna. Tidak diperlukan alamat IP tambahan di blok ini.

  • Kolom masterNode.replicas ditetapkan ke 3.

  • VIP bidang kontrol dan VIP ingress berada di VLAN yang sama dengan node pekerja dan node bidang kontrol.

  • VIP yang disisihkan untuk Layanan jenis LoadBalancer ditentukan di bagian loadBalancer.metalLB.addressPools pada file konfigurasi cluster pengguna. VIP ini berada di VLAN yang sama dengan node pekerja dan node bidang kontrol. Kumpulan VIP yang ditentukan dalam bagian ini harus menyertakan VIP ingress dan tidak boleh menyertakan VIP bidang kontrol.

  • File konfigurasi cluster pengguna tidak menyertakan bagian vCenter. Jadi, cluster pengguna menggunakan resource vSphere yang sama dengan cluster admin.

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.

3. (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

4. Membuat cluster pengguna

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.

5. Memastikan 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 menunjukkan 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

Mengupgrade cluster pengguna

Ikuti petunjuk dalam artikel Mengupgrade cluster Anthos di VMware.

Hapus cluster

Untuk menghapus cluster pengguna yang mengaktifkan Controlplane V2, ikuti petunjuk dalam Menghapus cluster pengguna.

Saat Anda menghapus cluster pengguna yang mengaktifkan Controlplane V2, disk data akan otomatis dihapus.

Pemecahan masalah

Baca artikel Memecahkan masalah pembuatan dan upgrade cluster.

Langkah selanjutnya