Halaman ini menjelaskan cara membuat GKE di cluster AWS. Anda juga dapat Membuat VPC dan cluster dengan Terraform.
Sebelum memulai
Sebelum membuat cluster, Anda harus menyelesaikan prasyarat. Secara khusus, Anda harus menyediakan referensi berikut:
- VPC AWS tempat cluster akan dijalankan.
- Hingga tiga subnet AWS untuk tiga replika bidang kontrol. Masing-masing harus berada di Zona Ketersediaan AWS yang berbeda.
- Peran IAM AWS yang diambil GKE di AWS saat mengelola cluster Anda. Tindakan ini memerlukan serangkaian izin IAM spesifik.
- Kunci CMK simetris KMS untuk enkripsi data cluster (dlld) dan konfigurasi dalam penyimpanan.
- Profil instance IAM AWS untuk setiap replika bidang kontrol. Tindakan ini memerlukan serangkaian izin IAM spesifik.
- Pasangan kunci SSH EC2 (opsional) jika Anda memerlukan akses SSH ke instance EC2 yang menjalankan setiap replika bidang kontrol.
Anda bertanggung jawab untuk membuat dan mengelola resource ini, yang dapat dibagikan di antara semua cluster GKE Anda. Semua resource AWS dengan cakupan cluster dasar lainnya dikelola oleh GKE di AWS.
Pilih rentang CIDR untuk cluster Anda
Saat membuat cluster di GKE pada AWS, Anda harus menyediakan rentang alamat IPv4 yang akan digunakan untuk Pod dan Service.
Rentang IP ini ditentukan menggunakan notasi Classless Inter-Domain Routing (CIDR)—misalnya, 100.64.0.0/16
.
Rentang yang direkomendasikan
Sebaiknya gunakan rentang CIDR berikut untuk Layanan dan Pod:
- Layanan: 100.64.0.0/16
- Pod: 100.96.0.0/11
Rentang ini cukup besar bagi Anda untuk mengembangkan cluster tanpa masalah.
Bagian berikut memberikan detail selengkapnya.
Detail tentang memilih rentang
GKE di AWS menggunakan jaringan overlay untuk Pod dan Service, sehingga rentang IP untuk jaringan ini tidak perlu dapat dirutekan dalam VPC. Setiap rentang IP yang Anda gunakan harus dijamin tersedia. Untuk mengetahui informasi selengkapnya, lihat Dataplane V2.
Rentang IP Pod dan Service dapat tumpang-tindih dengan jaringan VPC, asalkan tidak mencakup bidang kontrol atau rentang IP subnet kumpulan node.
Rentang IP Pod dan Service harus berada dalam salah satu rentang IP pribadi berikut:
10.0.0.0/8
,172.16.0.0/12
,192.168.0.0/16
— Alamat IP pribadi (RFC 1918)100.64.0.0/10
— Ruang alamat bersama (RFC 6598)192.0.0.0/24
— Penetapan protokol IETF (RFC 6890)192.0.2.0/24
,198.51.100.0/24
,203.0.113.0/24
— Dokumentasi (RFC 5737)192.88.99.0/24
— Relai IPv6 ke IPv4 (tidak digunakan lagi) (RFC 7526)198.18.0.0/15
— Pengujian benchmark (RFC 2544)
Sebaiknya rentang IP dalam 100.64.0.0/10
(RFC 6598). Rentang ini dicadangkan untuk NAT tingkat operator, yang kemungkinan tidak digunakan di VPC Anda.
Misalnya, berikut adalah konfigurasi yang valid dengan jaringan Pod, Service, dan Node yang tidak tumpang tindih (VPC menggunakan alamat IP pribadi RFC 1918, sedangkan jaringan Pod dan Service ditempatkan ke IP pribadi RFC 6598).
- Jaringan VPC:
10.0.0.0/16
,172.16.1.0/24
,172.16.2.0/24
- Jaringan pod:
100.65.0.0/16
- Jaringan layanan:
100.66.0.0/16
Berikut ini juga konfigurasi yang valid meskipun jaringan Pod dan Service tumpang-tindih dengan jaringan VPC karena tidak ada tumpang-tindih dengan replika bidang kontrol.
- Jaringan VPC:
10.0.0.0/16
- Jaringan pod:
10.0.1.0/24
- Jaringan layanan:
10.0.2.0/24
- Subnet Replika Pesawat Kontrol:
10.0.3.0/24
,10.0.4.0/24
,10.0.5.0/24
Konfigurasi berikut tidak valid karena rentang IP Pod tumpang-tindih dengan jaringan bidang kontrol. Tumpang tindih ini dapat mencegah beban kerja berkomunikasi dengan replika bidang kontrol di jaringan VPC:
- Jaringan VPC:
10.0.0.0/16
- Jaringan pod:
10.0.1.0/24
- Jaringan layanan:
10.1.0.0/24
- Subnet Replika Pesawat Kontrol:
10.0.1.0/24
,10.0.2.0/24
,10.0.3.0/24
Detail tentang rentang alamat IP Pod
Kubernetes mengalokasikan alamat ke objek Pod dari rentang alamat IP Pod. Rentang Pod cluster dibagi menjadi rentang yang lebih kecil untuk setiap node. Saat Pod dijadwalkan pada node tertentu, Kubernetes akan menetapkan alamat IP Pod dari rentang node.
Untuk menghitung ukuran rentang alamat Pod, Anda perlu memperkirakan jumlah node yang diinginkan dalam cluster dan jumlah Pod yang ingin dijalankan di setiap node.
Tabel berikut memberikan rekomendasi ukuran untuk rentang CIDR Pod berdasarkan jumlah node dan Pod yang ingin dijalankan.
Tabel rentang alamat pod
Rentang alamat IP pod | Alamat IP Pod maksimum | Node maksimum | Pod maksimum |
---|---|---|---|
/24 Rentang alamat IP Pod terkecil |
256 alamat | 1 node | 110 Pod |
/23 | 512 alamat | 2 node | 220 Pod |
/22 | 1.024 alamat | 4 node | 440 Pod |
/21 | 2.048 alamat | 8 node | 880 Pod |
/20 | 4.096 alamat | 16 node | 1.760 Pod |
/19 | 8.192 alamat | 32 node | 3.520 Pod |
/18 | 16.384 alamat | 64 node | 7.040 Pod |
/17 | 32.768 alamat | 128 node | 14.080 Pod |
/16 | 65.536 alamat | 256 node | 28.160 Pod |
/15 | 131.072 alamat | 512 node | 56.320 Pod |
/14 | 262.144 alamat | 1.024 node | 112.640 Pod |
Detail tentang rentang alamat layanan
Kubernetes mengalokasikan alamat IP virtual untuk Objek layanan — misalnya, load balancer dari rentang alamat ini.
Untuk menghitung ukuran rentang alamat Layanan, Anda perlu memperkirakan jumlah layanan yang Anda inginkan dalam cluster.
Tabel berikut memberikan rekomendasi ukuran untuk rentang CIDR Layanan berdasarkan jumlah Layanan yang ingin Anda jalankan.
Tabel rentang alamat layanan
Rentang alamat IP layanan | Jumlah Layanan maksimum |
---|---|
/27 Rentang alamat URL Layanan terkecil |
32 Layanan |
/26 | 64 Layanan |
/25 | 128 Layanan |
/24 | 256 Layanan |
/23 | 512 Layanan |
/22 | 1.024 Layanan |
/21 | 2.048 Layanan |
/20 | 4.096 Layanan |
/19 | 8.192 Layanan |
/18 | 16.384 Layanan |
/17 | 32.768 Layanan |
/16 Rentang alamat IP Layanan seluas mungkin |
65.536 Layanan |
Pilih project host Armada Anda
Armada adalah konsep Google Cloud untuk mengatur cluster ke dalam grup yang lebih besar. Dengan fleet, Anda dapat mengelola banyak cluster di beberapa cloud dan menerapkan kebijakan yang konsisten di semua cluster tersebut. GKE Multi-Cloud API secara otomatis mendaftarkan cluster Anda dengan Armada saat cluster dibuat.
Saat membuat cluster, Anda harus menentukan project host Fleet tempat cluster akan dikelola. Karena GKE di AWS menggunakan nama cluster sebagai nama keanggotaan Fleet, Anda harus memastikan bahwa nama cluster Anda bersifat unik di seluruh Armada Anda.
Pendaftaran lintas project
Jika ingin menggunakan project Fleet Host selain project Google Cloud tempat cluster berada, Anda harus menerapkan binding kebijakan IAM tambahan ke akun layanan Agen Layanan Multi-Cloud. Hal ini memungkinkan akun layanan untuk mengelola Fleet dengan Project Fleet Host.
Untuk menambahkan Agen Layanan ke project Anda, jalankan perintah ini:
gcloud beta services identity create --service=gkemulticloud.googleapis.com \ --project=CLUSTER_PROJECT_NUMBER
Ganti
CLUSTER_PROJECT_NUMBER
dengan nomor project Google Cloud Anda.Tetapkan binding ini dengan perintah berikut:
gcloud projects add-iam-policy-binding FLEET_PROJECT_ID \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com" \ --role="roles/gkemulticloud.serviceAgent"
Ganti kode berikut:
FLEET_PROJECT_ID
: project Google Cloud project host Fleet AndaCLUSTER_PROJECT_NUMBER
: nomor project Google Cloud Anda
Nama akun Agen Layanan Multi-Cloud memiliki format berikut: service-CLUSTER_PROJECT_NUMBER@gcp-sa-gkemulticloud.iam.gserviceaccount.com
.
Anda dapat menemukan akun layanan di halaman Service account di Konsol Google Cloud. Untuk mengetahui informasi selengkapnya tentang cara menemukan nomor project, lihat Mengidentifikasi project.
Membuat cluster Anda
Gunakan perintah berikut untuk membuat cluster Anda di GKE di AWS. Untuk mengetahui informasi lebih lanjut tentang perintah ini termasuk parameter opsionalnya, lihat halaman referensi gcloud container aws.
gcloud container aws clusters create CLUSTER_NAME \
--aws-region AWS_REGION \
--location GOOGLE_CLOUD_LOCATION \
--cluster-version CLUSTER_VERSION \
--fleet-project FLEET_PROJECT \
--vpc-id VPC_ID \
--subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
--pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \
--service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \
--role-arn API_ROLE_ARN \
--database-encryption-kms-key-arn DB_KMS_KEY_ARN \
--admin-users ADMIN_USERS_LIST \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--iam-instance-profile CONTROL_PLANE_PROFILE \
--tags "Name=CLUSTER_NAME-cp"
Ganti kode berikut:
CLUSTER_NAME
: nama cluster yang Anda pilihAWS_REGION
: region AWS untuk membuat cluster diGOOGLE_CLOUD_LOCATION
: nama lokasi Google Cloud tempat cluster ini akan dikelola, seperti yang ditentukan di region pengelolaan Google Cloud.CLUSTER_VERSION
: versi Kubernetes yang akan diinstal di cluster AndaFLEET_PROJECT
: project host Fleet tempat cluster akan didaftarkan. Jika Anda ingin mengelola cluster ini dari project Google Cloud lain, lihat Pendaftaran lintas-project.VPC_ID
: ID VPC AWS untuk cluster iniCONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
,CONTROL_PLANE_SUBNET_3
: ID subnet untuk tiga instance bidang kontrol cluster AndaPOD_ADDRESS_CIDR_BLOCKS
: rentang alamat CIDR untuk pod cluster AndaSERVICE_ADDRESS_CIDR_BLOCKS
: rentang alamat CIDR untuk layanan cluster AndaAPI_ROLE_ARN
: ARN peran GKE Multi-Cloud APICONTROL_PLANE_PROFILE
: profil instance IAM yang terkait dengan cluster. Untuk mengetahui detail tentang cara memperbarui profil instance IAM, lihat Memperbarui profil instance AWS IAM.DB_KMS_KEY_ARN
: Amazon Resource Name (ARN) dari kunci AWS KMS untuk mengenkripsi rahasia clusterCONFIG_KMS_KEY_ARN
: Amazon Resource Name (ARN) dari kunci AWS KMS untuk mengenkripsi data penggunaADMIN_USERS_LIST
(opsional): daftar alamat email pengguna yang dipisahkan koma untuk memberikan hak istimewa administratif - misalnya, "kai@example.com,hao@example.com,kalani@example.com". Setelan defaultnya adalah pengguna yang membuat cluster
Jika ada, parameter --tags
akan menerapkan tag AWS yang diberikan ke semua resource AWS dasar yang dikelola oleh GKE di AWS. Contoh ini memberi tag pada node bidang kontrol
dengan nama cluster tempatnya berada.
Anda tidak akan dapat melakukan SSH ke node bidang kontrol ini, kecuali jika Anda menentukan
pasangan kunci SSH dengan
tanda
--ssh-ec2-key-pair
.
Untuk melihat semua versi Kubernetes yang didukung di lokasi Google Cloud tertentu, jalankan perintah berikut.
gcloud container aws get-server-config --location GCP_LOCATION
Mengizinkan Cloud Logging / Cloud Monitoring
Agar GKE di AWS dapat membuat serta mengupload log dan metrik sistem ke Google Cloud, GKE harus mendapatkan otorisasi.
Untuk mengizinkan identitas workload Kubernetes gke-system/gke-telemetry-agent
guna menulis log ke Google Cloud Logging, dan metrik ke Google Cloud Monitoring,
jalankan perintah ini:
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
Ganti GOOGLE_PROJECT_ID
dengan project ID Google Cloud cluster.
Binding IAM ini memberikan akses ke semua cluster di project project Google Cloud untuk mengupload log dan metrik. Anda hanya perlu menjalankannya setelah membuat cluster pertama untuk project tersebut.
Penambahan binding IAM ini akan gagal, kecuali jika setidaknya satu cluster telah dibuat di project Google Cloud Anda. Hal ini karena kumpulan workload identity yang dirujuk (GOOGLE_PROJECT_ID.svc.id.goog
) tidak disediakan hingga pembuatan cluster.
Langkah selanjutnya
- Buat node pool.
- Mengonfigurasi akses cluster untuk kubectl.
- Coba Panduan Memulai untuk meluncurkan beban kerja pertama Anda.
- Baca dokumentasi referensi untuk
gcloud container clusters create
. - Kesulitan membuat cluster? Lihat Pemecahan masalah untuk informasi selengkapnya.