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
Pastikan Anda telah menyiapkan dan dapat login ke workstation admin seperti yang dijelaskan dalam artikel Membuat workstation admin. Workstation admin memiliki alat yang Anda butuhkan 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 Anda membuat cluster pengguna, biasanya Anda menginstal versi yang cocok dengan versi cluster admin. Jika Anda ingin menginstal versi lain pada cluster pengguna, lihat Aturan versi.
Tinjau dokumen perencanaan alamat IP, dan pastikan Anda memiliki alamat IP yang cukup.
Konfigurasi load balancer Anda untuk load balancing manual. Load balancer harus disiapkan sebelum Anda membuat cluster pengguna.
Pikirkan berapa banyak node pool yang Anda butuhkan dan sistem operasi mana yang ingin Anda jalankan di setiap pool.
Kumpulkan informasi yang Anda butuhkan untuk mengakses setiap instance vCenter Server. Anda memerlukan informasi ini untuk mengisi bagian
Secret
danVSphereInfraConfig.credentials.vCenters
dalam file konfigurasi infrastruktur vSphere. Lihat bagian berikut untuk mengetahui cara mendapatkan informasi yang diperlukan:
Ringkasan prosedur
Langkah-langkah utama berikut terlibat dalam penggunaan gkectl
untuk membuat cluster pengguna:
- Isi file konfigurasi cluster pengguna Anda
- 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 opsional, node pekerja dalam file blok IP.
- Membuat cluster pengguna
- Jalankan
gkectl create cluster
untuk membuat cluster seperti yang ditentukan dalam file konfigurasi Anda.
- 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.
- Seluruh bagian
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
Sisihkan VIP untuk server Kubernetes API cluster pengguna Anda. Berikan VIP Anda sebagai nilai untuk
loadBalancer.vips.controlPlaneVIP
Sisihkan VIP lain untuk layanan ingress cluster pengguna Anda. Berikan VIP Anda sebagai nilai untuk
loadBalancer.vips.ingressVIP
.Tetapkan
loadBalancer.kind
ke"ManualLB"
, lalu isi bagianmanualLB
. Untuk mengetahui informasi selengkapnya, lihat Load balancing manual.
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
danmemoryMB
di bagianmasterNode
.Hanya cluster dengan ketersediaan tinggi (HA) yang didukung. Tetapkan kolom
replicas
ke3
untuk menentukan bahwa cluster akan memiliki tiga node bidang kontrol.Untuk mengaktifkan pengubahan ukuran otomatis untuk node bidang kontrol, tetapkan
autoResize.enabled
ketrue
.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
, kecualinodePools[i].vsphere.tags
. Anda menentukan informasi ini dalam file konfigurasi infrastruktur vSphere per domain topologi.Tetapkan
nodePools[i].osImageType
keubuntu_cgroupv2
atauubuntu_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 digkeConnect.projectID
dancloudAuditLogging.projectID
.Region Google Cloud yang ditetapkan di
stackdriver.clusterLocation
harus sama dengan region yang ditetapkan dicloudAuditLogging.clusterLocation
dangkeConnect.location
. Selain itu, jikagkeOnPremAPI.enabled
adalahtrue
, 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 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
kefalse
. 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.projectID
harus sama dengan ID digkeConnect.projectID
danstackdriver.projectID
.Region di
cloudAuditLogging.clusterLocation
harus sama dengan region yang ditetapkan digkeConnect.location
(jika kolom disertakan dalam file konfigurasi) danstackdriver.clusterLocation
. Selain itu, jikagkeOnPremAPI.enabled
adalahtrue
, 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.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 ke3
, yang berarti ada tiga node pekerja di"worker-node-pool"
. Semua worker node menggunakan alamat IP statis karenanetwork.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 ke3
, 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.