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.
Untuk menyiapkan domain topologi, Anda harus mengaktifkan cluster lanjutan.
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 umum.
Sebelum memulai
Pastikan Anda telah menyiapkan dan dapat login ke workstation admin seperti yang dijelaskan dalam Membuat workstation admin. Workstation admin memiliki alat yang Anda perlukan untuk membuat cluster pengguna. Lakukan semua langkah dalam dokumen ini di workstation admin Anda.
Jika Anda belum melakukannya, siapkan resource Google Cloud seperti yang dijelaskan dalam dokumen berikut:
Sebelum membuat cluster pengguna, Anda harus memiliki cluster admin untuk mengelola cluster pengguna. Jika Anda belum melakukannya, buat workstation admin dan cluster admin untuk digunakan dengan domain topologi.
Tentukan versi cluster pengguna yang ingin Anda instal. Saat membuat cluster pengguna, Anda biasanya menginstal versi yang cocok dengan versi cluster admin. Jika Anda ingin menginstal versi lain di cluster pengguna, lihat Aturan versi.
Tinjau dokumen perencanaan alamat IP, dan pastikan Anda memiliki alamat IP yang cukup.
Konfigurasikan load balancer Anda untuk load balancing manual. Load balancer Anda harus disiapkan sebelum Anda membuat cluster pengguna.
Pikirkan berapa banyak node pool yang Anda butuhkan dan sistem operasi yang ingin Anda jalankan di setiap pool.
Kumpulkan informasi yang Anda perlukan untuk mengakses setiap instance vCenter Server. Anda memerlukan informasi ini untuk mengisi bagian
Secretdan bagianVSphereInfraConfig.credentials.vCentersdalam file konfigurasi infrastruktur vSphere. Lihat informasi berikut untuk mengetahui cara mendapatkan informasi yang diperlukan:
Ringkasan prosedur
Langkah-langkah utama berikut diperlukan dalam menggunakan gkectl untuk membuat cluster pengguna:
- Mengisi file konfigurasi cluster pengguna
- Tentukan detail untuk cluster baru Anda dalam file konfigurasi cluster pengguna.
- Isi file blok IP Anda
- Tentukan alamat IP untuk gateway, netmask, node bidang kontrol, dan secara opsional, worker node dalam file blok IP.
- Membuat cluster pengguna
- Jalankan
gkectl create clusteruntuk membuat cluster seperti yang ditentukan dalam file konfigurasi Anda.
- Memastikan cluster pengguna Anda berjalan
- Gunakan
kubectluntuk melihat node cluster Anda.
Di akhir prosedur ini, Anda akan memiliki cluster pengguna yang berjalan, tempat Anda dapat men-deploy workload.
Mengisi file konfigurasi cluster pengguna
Jika Anda menggunakan gkeadm untuk membuat workstation admin, gkeadm akan membuat
template untuk file konfigurasi cluster pengguna bernama user-cluster.yaml.
Selain itu, gkeadm telah 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 flag 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.36.200-gke.118.
Pelajari file konfigurasi dengan memindai 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. Ini menentukan versi
Google Distributed Cloud. Misalnya, 1.36.200-gke.118.
enableAdvancedCluster
Tetapkan enableAdvancedCluster ke true.
enableControlplaneV2
Controlplane V2 diperlukan untuk semua cluster pengguna versi 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 baris 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.
- Seluruh bagian
Tetapkan
network.ipMode.ipBlockFilePathke jalur file blok IP.Tentukan cara Anda ingin worker node mendapatkan alamat IP-nya. Opsinya adalah:
Dari server DHCP yang Anda siapkan sebelumnya. Tetapkan
network.ipMode.typeke"dhcp".Dari daftar alamat IP statis yang Anda berikan dalam file blok IP. Tetapkan
network.ipMode.typeke"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 berlaku meskipun worker node Anda mendapatkan alamatnya 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 penjelasan tentang jumlah alamat IP yang Anda perlukan, lihat Merencanakan alamat IP Anda.
network.podCIDR dan network.serviceCIDR memiliki nilai yang telah diisi sebelumnya yang dapat Anda biarkan tidak berubah, kecuali jika nilai tersebut bertentangan dengan alamat yang sudah digunakan di jaringan Anda. Kubernetes menggunakan rentang ini untuk menetapkan alamat IP ke Pod dan Service di cluster Anda.
loadBalancer
Siapkan VIP untuk server Kubernetes API cluster pengguna Anda. Berikan VIP Anda sebagai nilai untuk
loadBalancer.vips.controlPlaneVIPSiapkan VIP lain untuk layanan ingress cluster pengguna Anda. Berikan VIP Anda sebagai nilai untuk
loadBalancer.vips.ingressVIP.Tetapkan
loadBalancer.kindke"ManualLB", dan isi bagianmanualLB. Untuk mengetahui informasi selengkapnya, lihat Load balancing manual.
advancedNetworking
Jika Anda berencana membuat
gateway NAT egress, 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
cpusdanmemoryMBdi bagianmasterNode.Hanya cluster yang sangat tersedia (HA) yang didukung. Tetapkan kolom
replicaske3untuk menentukan bahwa cluster akan memiliki tiga node bidang kontrol.Untuk mengaktifkan pengubahan ukuran otomatis untuk node bidang kontrol, tetapkan
autoResize.enabledketrue.Hapus seluruh bagian
masterNode.vsphere.Isi kolom
masterNode.topologyDomainsdengan nama domain topologi yang Anda inginkan untuk node bidang kontrol.
nodePools
Node pool adalah sekelompok worker node dalam cluster yang semuanya memiliki konfigurasi yang sama. Misalnya, Anda mungkin ingin menyiapkan domain topologi terpisah untuk setiap node pool. Anda harus menentukan setidaknya satu node pool dengan mengisi bagian nodePools.
Untuk setiap node pool yang Anda tentukan:
Isi kolom
nodePools[i].topologyDomainsdengan nama domain topologi yang Anda inginkan untuk node pool.Hapus semua kolom di bagian
nodePools[i].vspherekecualinodePools[i].vsphere.tags. Anda menentukan informasi ini dalam file konfigurasi infrastruktur vSphere per domain topologi.Tetapkan
nodePools[i].osImageTypekeubuntu_cgv2.
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.projectIDharus sama dengan ID digkeConnect.projectIDdancloudAuditLogging.projectID.Region Google Cloud yang ditetapkan di
stackdriver.clusterLocationharus sama dengan region yang ditetapkan dicloudAuditLogging.clusterLocationdangkeConnect.location. Selain itu, jikagkeOnPremAPI.enabledadalahtrue, region yang sama harus ditetapkan digkeOnPremAPI.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 fleet dan
layanan 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 didaftarkan 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 di GKE On-Prem API
saat dibuat.
Jika GKE On-Prem API diaktifkan di projectGoogle Cloud Anda, semua cluster dalam project akan otomatis didaftarkan di GKE On-Prem API 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 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.enabledkefalse. Jika Anda tidak ingin mendaftarkan cluster apa pun dalam project, nonaktifkangkeonprem.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.projectIDharus sama dengan ID digkeConnect.projectIDdanstackdriver.projectID.Region di
cloudAuditLogging.clusterLocationharus sama dengan region yang ditetapkan digkeConnect.location(jika kolom disertakan dalam file konfigurasi Anda) danstackdriver.clusterLocation. Selain itu, jikagkeOnPremAPI.enabledadalahtrue, region yang sama harus ditetapkan digkeOnPremAPI.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.36.200-gke.118
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.replicasditetapkan ke3, yang berarti ada tiga worker node di"worker-node-pool". Semua worker node menggunakan alamat IP statis karenanetwork.ipMode.typeditetapkan 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 flag
isControlPlane: true.Cluster lanjutan, Controlplane V2, dan Dataplane V2 diaktifkan.
Kolom
masterNode.replicasditetapkan ke3, sehingga cluster akan memiliki bidang kontrol 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 bidang kontrol, tambahkan
isControlPlane: true seperti yang ditunjukkan pada contoh sebelumnya. Jika Anda menginginkan cluster pengguna dengan ketersediaan tinggi (HA), tentukan tiga alamat IP. Jika tidak,
tentukan satu alamat IP. Jumlah alamat IP yang Anda tentukan untuk node bidang kontrol harus sama dengan jumlah di kolom masterNode.replicas dalam file konfigurasi cluster pengguna.
Jika network.ipMode.type ditetapkan ke "static", tambahkan alamat IP untuk worker node 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
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 akan menampilkan nama cluster. Contoh:
NAME my-user-cluster
Jika mau, Anda dapat mengubah nama dan lokasi file kubeconfig.
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 akan 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 perlu 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
scheduler Kubernetes mendistribusikan Pod ke 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.