Dokumen ini menjelaskan cara membuat cluster Kubernetes bersama di zona tertutup Google Distributed Cloud (GDC). Cluster bersama mencakup beberapa project, dan mencakup layanan komprehensif yang dikelola GDC yang menawarkan konfigurasi cluster Kubernetes yang sangat spesifik dan kurang dapat dikonfigurasi dibandingkan cluster standar. Untuk mengetahui informasi selengkapnya tentang cluster standar, lihat Konfigurasi cluster Kubernetes.
Cluster bersama adalah resource zona dan tidak dapat mencakup beberapa zona. Untuk mengoperasikan cluster di multi-zona, Anda harus membuat cluster secara manual di setiap zona.
Dokumen ini ditujukan untuk audiens seperti developer aplikasi dalam grup operator aplikasi, yang bertanggung jawab untuk mengelola workload container dalam organisasi mereka. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC yang terisolasi dari internet.
Sebelum memulai
Untuk mendapatkan izin yang diperlukan untuk membuat cluster bersama, minta Admin IAM Organisasi Anda untuk memberi Anda peran User Cluster Admin (
user-cluster-admin). Peran ini tidak terikat ke namespace.Untuk menggunakan API atau Terraform guna membuat cluster bersama, buat file kubeconfig server API zonal untuk menghosting cluster Anda. Untuk informasi selengkapnya, lihat Login. Tetapkan variabel lingkungan
MANAGEMENT_API_SERVERke jalur kubeconfig.Rencanakan batas air gap Google Distributed Cloud (GDC) berikut untuk cluster Kubernetes:
- 16 cluster per organisasi
- 42 node pekerja per cluster, dan minimal tiga node pekerja
- 4.620 pod per cluster
- 110 pod per node
Merencanakan blok CIDR pod
Untuk mengalokasikan blok CIDR pod berukuran tepat untuk workload Anda, Anda harus menghitung jumlah alamat IP yang diperlukan untuk cluster Kubernetes sebelum Anda membuatnya. Sebagian besar parameter jaringan tidak dapat diubah setelah cluster dibuat.
Cluster Kubernetes mengikuti logika berikut saat mengalokasikan alamat IP:
- Kubernetes menetapkan blok CIDR
/24yang terdiri dari 256 alamat ke setiap node. Jumlah ini sesuai dengan jumlah maksimum default 110 pod per node untuk cluster Kubernetes. - Ukuran blok CIDR yang ditetapkan ke sebuah node bergantung pada nilai pod maksimum per node.
- Blok selalu berisi alamat setidaknya dua kali lebih banyak dari jumlah maksimum pod per node.
Lihat contoh berikut untuk memahami cara nilai default Per node mask size= /24 dihitung untuk mengakomodasi 110 pod:
Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220
Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256
Tentukan masker CIDR pod yang diperlukan untuk dikonfigurasi untuk cluster Kubernetes berdasarkan jumlah node yang diperlukan. Rencanakan penambahan node di masa mendatang ke cluster saat mengonfigurasi rentang CIDR:
Total number of nodes supported = 2(Per node mask size - pod CIDR mask)
Mengingat ada Ukuran mask per node default= /24 , lihat tabel berikut yang memetakan mask CIDR pod ke jumlah node yang didukung.
| Masker CIDR Pod | Penghitungan: 2(Ukuran mask per node - mask CIDR) | Jumlah maksimum node yang didukung termasuk node bidang kontrol |
|---|---|---|
| /21 | 2(24 - 21) | 8 |
| /20 | 2(24-20) | 16 |
| /19 | 2(24 - 19) | 32 |
| /18 | 2(24 - 18) | 64 |
Setelah menghitung blok CIDR pod untuk cluster Kubernetes, konfigurasikan sebagai bagian dari alur kerja pembuatan cluster di bagian berikutnya.
Membuat cluster bersama
Selesaikan langkah-langkah berikut untuk membuat cluster Kubernetes bersama:
Konsol
Di menu navigasi, pilih Kubernetes Engine > Clusters.
Klik Create Cluster.
Di kolom Name, tentukan nama untuk cluster.
Pilih versi Kubernetes untuk cluster.
Pilih zona tempat cluster akan dibuat.
Klik Attach Project dan pilih project yang ada untuk dilampirkan ke cluster Anda. Kemudian, klik Simpan. Anda dapat melampirkan atau melepaskan project setelah membuat cluster dari halaman detail project. Anda harus memiliki project yang dilampirkan ke cluster sebelum men-deploy beban kerja penampung.

Klik Berikutnya.
Konfigurasi setelan jaringan untuk cluster Anda. Anda tidak dapat mengubah setelan jaringan ini setelah membuat cluster. Protokol Internet default dan satu-satunya yang didukung untuk cluster Kubernetes adalah Internet Protocol versi 4 (IPv4).
Jika Anda ingin membuat node load balancer khusus, masukkan jumlah node yang akan dibuat. Secara default, Anda menerima nol node, dan traffic load balancer berjalan melalui node kontrol.
Pilih Service CIDR (Classless Inter-Domain Routing) yang akan digunakan. Layanan yang di-deploy, seperti load balancer, dialokasikan alamat IP dari rentang ini.
Pilih CIDR Pod yang akan digunakan. Cluster mengalokasikan alamat IP dari rentang ini ke pod dan VM Anda.
Klik Berikutnya.
Tinjau detail kumpulan node default yang dibuat otomatis untuk cluster. Klik edit Edit untuk mengubah node pool default.
Untuk membuat kumpulan node tambahan, pilih Tambahkan kumpulan node. Saat mengedit node pool default atau menambahkan node pool baru, Anda dapat menyesuaikannya dengan opsi berikut:
- Tetapkan nama untuk kumpulan node. Anda tidak dapat mengubah nama setelah membuat node pool.
- Tentukan jumlah node pekerja yang akan dibuat di node pool.
Pilih class mesin yang paling sesuai dengan persyaratan workload Anda. Lihat daftar setelan berikut:
- Jenis mesin
- CPU
- Memori
Klik Simpan.
Klik Create untuk membuat cluster.
Pembuatan cluster bersama dapat memerlukan waktu hingga 90 menit.
API
Buat resource kustom
Cluster:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: cluster.gdc.goog/v1 kind: Cluster metadata: name: CLUSTER_NAME namespace: platform spec: clusterNetwork: podCIDRSize: POD_CIDR serviceCIDRSize: SERVICE_CIDR initialVersion: kubernetesVersion: KUBERNETES_VERSION nodePools: - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS acceleratorOptions: gpuPartitionScheme: GPU_PARTITION_SCHEME releaseChannel: channel: UNSPECIFIED EOFGanti kode berikut:
MANAGEMENT_API_SERVER: jalur kubeconfig server API zonal.CLUSTER_NAME: nama cluster. Nama cluster tidak boleh diakhiri dengan-system. Akhiran-systemdicadangkan untuk cluster yang dibuat oleh GDC.POD_CIDR: ukuran rentang jaringan tempat alamat IP virtual pod dialokasikan. Jika tidak disetel, nilai default21akan digunakan.SERVICE_CIDR: ukuran rentang jaringan tempat alamat IP virtual layanan dialokasikan. Jika tidak disetel, nilai default23akan digunakan.KUBERNETES_VERSION: versi Kubernetes cluster, seperti1.26.5-gke.2100. Untuk mencantumkan versi Kubernetes yang tersedia untuk dikonfigurasi, lihat Mencantumkan versi Kubernetes yang tersedia untuk cluster.MACHINE_TYPE: jenis mesin untuk node pekerja node pool. Lihat jenis mesin yang tersedia untuk mengetahui konfigurasi yang tersedia.NODE_POOL_NAME: nama node pool.NUMBER_OF_WORKER_NODES: jumlah node pekerja yang akan disediakan di node pool.TAINTS: taint yang akan diterapkan ke node di node pool ini. Kolom ini bersifat opsional.LABELS: label yang akan diterapkan ke node node pool ini. Objek ini berisi daftar key-value pair. Kolom ini bersifat opsional.GPU_PARTITION_SCHEME: skema partisi GPU, jika Anda menjalankan workload GPU. Kolom ini bersifat opsional. Contoh,mixed-2. GPU tidak dipartisi jika kolom ini tidak ditetapkan. Untuk mengetahui informasi selengkapnya tentang profil GPU Multi-Instance (MIG) yang tersedia, lihat Profil MIG yang didukung.
Pembuatan cluster bersama dapat memerlukan waktu hingga 90 menit.
Buat resource kustom
ProjectBinding:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectBinding metadata: name: CLUSTER_NAME-PROJECT_NAME namespace: platform labels: resourcemanager.gdc.goog/projectbinding-for-user-project: "true" spec: clusterRef: name: CLUSTER_NAME selector: nameSelector: matchNames: - PROJECT_NAME EOFGanti kode berikut:
MANAGEMENT_API_SERVER: jalur kubeconfig server API zonal.CLUSTER_NAME: nama cluster.PROJECT_NAME: nama project yang akan diikat. Setiap resourceProjectBindinghanya dapat dipetakan ke satu cluster. Jika project memerlukan akses ke beberapa cluster,ProjectBindingunik harus dibuat untuk setiap cluster.
Anda harus melampirkan project ke cluster sebelum developer dapat men-deploy workload container ke cluster.
Terraform
Di file konfigurasi Terraform, masukkan cuplikan kode berikut untuk membuat resource kustom
Cluster:provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "CLUSTER_RESOURCE_NAME" { manifest = { "apiVersion" = "cluster.gdc.goog/v1" "kind" = "Cluster" "metadata" = { "name" = "CLUSTER_NAME" "namespace" = "platform" } "spec" = { "clusterNetwork" = { "podCIDRSize" = "POD_CIDR" "serviceCIDRSize" = "SERVICE_CIDR" } "initialVersion" = { "kubernetesVersion" = "KUBERNETES_VERSION" } "nodePools" = [{ "machineTypeName" = "MACHINE_TYPE" "name" = "NODE_POOL_NAME" "nodeCount" = "NUMBER_OF_WORKER_NODES" "taints" = "TAINTS" "labels" = "LABELS" "acceleratorOptions" = { "gpuPartitionScheme" = "GPU_PARTITION_SCHEME" } }] "releaseChannel" = { "channel" = "UNSPECIFIED" } } } }Ganti kode berikut:
MANAGEMENT_API_SERVER: jalur kubeconfig server API zonal.CLUSTER_RESOURCE_NAME: nama resource Terraform yang unik untuk cluster, seperticluster-1. Nama ini digunakan oleh Terraform untuk mengidentifikasi cluster Anda, dan tidak digunakan oleh GDC.CLUSTER_NAME: nama cluster. Nama cluster tidak boleh diakhiri dengan-system. Akhiran-systemdicadangkan untuk cluster yang dibuat oleh GDC.POD_CIDR: ukuran rentang jaringan tempat alamat IP virtual pod dialokasikan. Jika tidak disetel, nilai default21akan digunakan.SERVICE_CIDR: ukuran rentang jaringan tempat alamat IP virtual layanan dialokasikan. Jika tidak disetel, nilai default23akan digunakan.KUBERNETES_VERSION: versi Kubernetes cluster, seperti1.26.5-gke.2100. Untuk mencantumkan versi Kubernetes yang tersedia untuk dikonfigurasi, lihat Mencantumkan versi Kubernetes yang tersedia untuk cluster.MACHINE_TYPE: jenis mesin untuk node pekerja node pool. Lihat jenis mesin yang tersedia untuk mengetahui konfigurasi yang tersedia.NODE_POOL_NAME: nama node pool.NUMBER_OF_WORKER_NODES: jumlah node pekerja yang akan disediakan di node pool.TAINTS: taint yang akan diterapkan ke node di node pool ini. Kolom ini bersifat opsional.LABELS: label yang akan diterapkan ke node node pool ini. Objek ini berisi daftar key-value pair. Kolom ini bersifat opsional.GPU_PARTITION_SCHEME: skema partisi GPU, jika Anda menjalankan workload GPU. Kolom ini bersifat opsional. Contoh,mixed-2. GPU tidak dipartisi jika kolom ini tidak ditetapkan. Untuk mengetahui informasi selengkapnya tentang profil GPU Multi-Instance (MIG) yang tersedia, lihat Profil MIG yang didukung.
Di file konfigurasi Terraform, masukkan cuplikan kode berikut untuk membuat resource kustom
ProjectBinding:provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "PROJECT_BINDING_RESOURCE_NAME" { manifest = { "apiVersion" = "resourcemanager.gdc.goog/v1" "kind" = "ProjectBinding" "metadata" = { "name" = "CLUSTER_NAME-PROJECT_NAME" "namespace" = "platform" "labels" = { "resourcemanager.gdc.goog/projectbinding-for-user-project" = "true" } } "spec" = { "clusterRef" = { "name" = "CLUSTER_NAME" } "selector" = { "nameSelector" = { "matchNames" = [ "PROJECT_NAME", ] } } } } }Ganti kode berikut:
MANAGEMENT_API_SERVER: jalur kubeconfig server API zonal.PROJECT_BINDING_RESOURCE_NAME: nama resource Terraform dari binding project, sepertiproject-binding-1. Nama ini digunakan oleh Terraform untuk mengidentifikasi binding project Anda, dan tidak digunakan oleh GDC.CLUSTER_NAME: nama cluster.PROJECT_NAME: nama project yang akan diikat. Setiap resourceProjectBindinghanya dapat dipetakan ke satu cluster. Jika project memerlukan akses ke beberapa cluster,ProjectBindingunik harus dibuat untuk setiap cluster.
Anda harus melampirkan project ke cluster sebelum developer dapat men-deploy workload container ke cluster.
Terapkan resource kustom baru menggunakan Terraform:
terraform apply
Pembuatan cluster bersama dapat memerlukan waktu hingga 90 menit.