Topik ini menjelaskan cara menyesuaikan konfigurasi GKE di cluster pengguna AWS.
Anda mungkin perlu membuat cluster pengguna kustom karena alasan berikut:
- Membuat cluster lain untuk lingkungan staging atau pengujian.
- Menambahkan node pool dengan jenis mesin yang berbeda.
- Membuat cluster di zona ketersediaan AWS (AZ) tertentu.
Sebelum memulai
Sebelum mulai menggunakan GKE di AWS, pastikan Anda telah melakukan tugas berikut:
- Lengkapi Prasyarat.
Instal layanan pengelolaan.
Jika ingin membuat cluster tanpa menggunakan
terraform output example_cluster
, Anda harus memiliki subnet AWS pribadi untuk bidang kontrol. Setiap subnet harus menjadi milik AZ berbeda di region AWS yang sama. Tabel rute harus dikonfigurasi untuk mengizinkan traffic antarsubnet pribadi, dan setiap subnet harus memiliki akses ke gateway NAT.Memiliki ID AWS Virtual Private Cloud (VPC) Anda. ID VPC terlihat seperti
vpc-012345678abcde
. Anda dapat menemukan ID VPC di Konsol AWS.
Untuk terhubung ke GKE pada resource AWS, lakukan langkah-langkah berikut. Pilih apakah Anda sudah memiliki VPC AWS (atau koneksi langsung ke VPC) atau membuat VPC khusus saat membuat layanan pengelolaan.
VPC yang ada
Jika Anda memiliki koneksi langsung atau VPN ke VPC yang sudah ada, hapus baris env HTTP_PROXY=http://localhost:8118
dari perintah dalam topik ini.
VPC Khusus
Saat Anda membuat layanan pengelolaan di VPC khusus, GKE di AWS menyertakan host bastion di subnet publik.
Untuk terhubung ke layanan pengelolaan, lakukan langkah-langkah berikut:
Beralihlah ke direktori yang memiliki konfigurasi GKE on AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.
cd anthos-aws
Untuk membuka tunnel, jalankan skrip
bastion-tunnel.sh
. Tunnel akan mengarah kelocalhost:8118
.Untuk membuka tunnel ke bastion host, jalankan perintah berikut:
./bastion-tunnel.sh -N
Pesan dari tunnel SSH akan muncul di jendela ini. Saat Anda siap menutup koneksi, hentikan prosesnya menggunakan Control+C atau menutup jendela.
Buka terminal baru dan pindah ke direktori
anthos-aws
Anda.cd anthos-aws
Pastikan Anda dapat terhubung ke cluster dengan
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Outputnya mencakup URL untuk server API layanan pengelolaan.
Memilih ukuran instance bidang kontrol
GKE di AWS tidak mendukung pengubahan ukuran instance bidang kontrol. Sebelum membuat cluster pengguna, pilih ukuran instance bidang kontrol Anda. Ukuran bidang kontrol bergantung pada jumlah node dalam cluster Anda. Tabel berikut berisi ukuran instance bidang kontrol yang direkomendasikan untuk berbagai ukuran cluster.
Ukuran cluster (node) | Jenis instance bidang kontrol |
---|---|
1 – 10 | m5.large |
11 – 100 | m5.xlarge |
101 – 200 | m5.2xlarge |
Membuat cluster baru dengan konfigurasi kustom
Anda dapat menggunakan
terraform output example_cluster
untuk membuat konfigurasi bagi satu cluster pengguna per cluster pengelolaan. Jika ingin membuat cluster tambahan, Anda harus menerapkan konfigurasi kustom.
Dalam contoh ini, Anda membuat cluster secara manual dari CRD AWSCluster
dan
AWSNodePool
.
Beralihlah ke direktori yang memiliki konfigurasi GKE on AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.
cd anthos-aws
Dari direktori
anthos-aws
, gunakananthos-gke
untuk mengalihkan konteks ke layanan pengelolaan Anda.cd anthos-aws anthos-gke aws management get-credentials
Buka editor teks dan salin definisi
AWSCluster
berikut ke dalam file bernamacustom-cluster.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster metadata: name: CLUSTER_NAME spec: region: AWS_REGION networking: vpcID: VPC_ID podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS ServiceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS controlPlane: version: CLUSTER_VERSION # Latest version is 1.25.5-gke.2100 instanceType: AWS_INSTANCE_TYPE keyName: SSH_KEY_NAME subnetIDs: - CONTROL_PLANE_SUBNET_IDS securityGroupIDs: - CONTROL_PLANE_SECURITY_GROUPS iamInstanceProfile: CONTROL_PLANE_IAM_ROLE rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE # Optional iops: ROOT_VOLUME_IOPS # Optional kmsKeyARN: ROOT_VOLUME_KEY # Optional etcd: mainVolume: sizeGiB: ETCD_VOLUME_SIZE volumeType: ETCD_VOLUME_TYPE # Optional iops: ETCD_VOLUME_IOPS # Optional kmsKeyARN: ETCD_VOLUME_KEY # Optional databaseEncryption: kmsKeyARN: ARN_OF_KMS_KEY hub: # Optional membershipName: ANTHOS_CONNECT_NAME cloudOperations: # Optional projectID: YOUR_PROJECT location: GCP_REGION enableLogging: ENABLE_LOGGING enableMonitoring: ENABLE_MONITORING workloadIdentity: # Optional oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
Ganti kode berikut:
- CLUSTER_NAME: nama cluster Anda.
AWS_REGION: region AWS tempat cluster Anda dijalankan.
VPC_ID: ID VPC tempat cluster Anda dijalankan.
POD_ADDRESS_CIDR_BLOCKS: rentang alamat IPv4 yang digunakan oleh pod cluster. Saat ini, hanya satu rentang yang didukung. Rentang tidak boleh tumpang tindih dengan subnet yang dapat dijangkau dari jaringan Anda. Anda dapat menggunakan rentang yang sama di beberapa objek AWSCluster yang berbeda. Contoh,
10.2.0.0/16
.SERVICE_ADDRESS_CIDR_BLOCKS: rentang alamat IPv4 yang digunakan oleh layanan cluster. Saat ini, hanya satu rentang yang didukung. Rentang tidak boleh tumpang tindih dengan subnet yang dapat dijangkau dari jaringan Anda. Rentang yang sama aman digunakan di beberapa objek AWSCluster yang berbeda. Contoh,
10.1.0.0/16
.SERVICE_LOAD_BALANCER_SUBNETS: ID subnet tempat GKE di AWS dapat membuat load balancer publik atau pribadi.
CLUSTER_VERSION: versi Kubernetes yang didukung oleh GKE di AWS. Versi terbaru adalah 1.25.5-gke.2100.
AWS_INSTANCE_TYPE: jenis instance EC2 yang didukung.
SSH_KEY_NAME: pasangan kunci AWS EC2.
CONTROL_PLANE_SUBNET_IDS: ID subnet di AZ tempat instance bidang kontrol Anda dijalankan.
CONTROL_PLANE_SECURITY_GROUPS: securityGroupID yang dibuat selama penginstalan layanan pengelolaan. Anda dapat menyesuaikannya dengan menambahkan securityGroupID yang diperlukan untuk terhubung ke bidang kontrol.
CONTROL_PLANE_IAM_PROFILE: nama profil instance AWS EC2 yang ditetapkan untuk replika bidang kontrol.
ROOT_VOLUME_SIZE: ukuran, dalam gibibyte (GiB), volume root bidang kontrol.
ROOT_VOLUME_TYPE dengan jenis volume EBS. Misalnya,
gp3
.ROOT_VOLUME_IOPS dengan jumlah operasi IO per detik (IOPS) yang disediakan untuk volume. Hanya berlaku jika
volumeType
adalahGP3
. Untuk informasi selengkapnya, lihat Volume SSD Tujuan Umum (gp3).ROOT_VOLUME_KEY dengan Nama Resource Amazon dari kunci AWS KMS yang mengenkripsi volume root instance bidang kontrol Anda.
ETCD_VOLUME_SIZE: ukuran volume yang digunakan oleh etcd.
ETCD_VOLUME_TYPE dengan jenis volume EBS. Misalnya,
gp3
.ETCD_VOLUME_IOPS dengan jumlah operasi IO per detik (IOPS) yang disediakan untuk volume. Hanya berlaku jika
volumeType
adalahgp3
. Untuk informasi selengkapnya, lihat Volume SSD Tujuan Umum (gp3).ETCD_VOLUME_KEY dengan Nama Resource Amazon dari kunci AWS KMS yang mengenkripsi volume data etcd bidang kontrol Anda.
ARN_OF_KMS_KEY: kunci AWS KMS yang digunakan untuk mengenkripsi Rahasia cluster.
ANTHOS_CONNECT_NAME: nama keanggotaan Connect yang digunakan untuk mendaftarkan cluster Anda. Nama keanggotaan harus unik. Misalnya,
projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
, denganYOUR_PROJECT
sebagai project Google Cloud danCLUSTER_NAME
adalah nama unik dalam project Anda. Kolom ini bersifat opsional.YOUR_PROJECT: project ID Anda.
GCP_REGION: region Google Cloud tempat Anda ingin menyimpan log. Pilih region yang dekat dengan region AWS. Untuk informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya,
us-central1
.ENABLE_LOGGING:
true
ataufalse
, apakah Cloud Logging diaktifkan di node bidang kontrol.ENABLE_MONITORING:
true
ataufalse
, apakah Cloud Monitoring diaktifkan di node bidang kontrol.WORKLOAD_IDENTITY_BUCKET: nama bucket Cloud Storage yang berisi informasi penemuan identitas workload Anda. Kolom ini bersifat opsional.
Buat satu atau beberapa AWSNodePools untuk cluster Anda. Buka editor teks dan salin definisi AWSCluster berikut ke dalam file yang bernama
custom-nodepools.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: NODE_POOL_NAME spec: clusterName: AWSCLUSTER_NAME version: CLUSTER_VERSION # latest version is 1.25.5-gke.2100 region: AWS_REGION subnetID: AWS_SUBNET_ID minNodeCount: MINIMUM_NODE_COUNT maxNodeCount: MAXIMUM_NODE_COUNT maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT instanceType: AWS_NODE_TYPE keyName: KMS_KEY_PAIR_NAME iamInstanceProfile: NODE_IAM_PROFILE proxySecretName: PROXY_SECRET_NAME rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: VOLUME_TYPE # Optional iops: IOPS # Optional kmsKeyARN: NODE_VOLUME_KEY # Optional
Ganti kode berikut:
- NODE_POOL_NAME: nama unik untuk AWSNodePool Anda.
- AWSCLUSTER_NAME: nama AWSCluster Anda. Misalnya,
staging-cluster
. - CLUSTER_VERSION: GKE yang didukung di versi AWS Kubernetes.
- AWS_REGION: region AWS yang sama dengan AWSCluster Anda.
- AWS_SUBNET_ID: subnet AWS di region yang sama dengan AWSCluster Anda.
- MINIMUM_NODE_COUNT: jumlah minimum node dalam kumpulan node. Lihat Menskalakan cluster pengguna untuk mengetahui informasi selengkapnya.
- MAXIMUM_NODE_COUNT: jumlah maksimum node dalam kumpulan node.
- MAXIMUM_PODS_PER_NODE_COUNT: jumlah maksimum pod yang dapat dialokasikan GKE di AWS ke sebuah node.
- AWS_NODE_TYPE: jenis instance AWS EC2.
- KMS_KEY_PAIR_NAME: pasangan kunci AWS KMS yang ditetapkan ke setiap pekerja kumpulan node.
- NODE_IAM_PROFILE: nama profil instance AWS EC2 yang ditetapkan ke node di kumpulan.
- ROOT_VOLUME_SIZE: ukuran, dalam gibibyte (GiB), volume root bidang kontrol.
- VOLUME_TYPE: jenis volume EBS AWS node.
Misalnya,
gp3
. - IOPS: jumlah operasi IO per detik (IOPS) yang disediakan untuk volume. Hanya berlaku jika
volumeType
adalahgp3
. - NODE_VOLUME_KEY: ARN kunci AWS KMS yang digunakan untuk mengenkripsi volume. Untuk informasi selengkapnya, lihat Menggunakan CMK yang dikelola pelanggan untuk mengenkripsi volume.
Terapkan manifes ke layanan pengelolaan Anda.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-cluster.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-nodepools.yaml
Membuat kubeconfig
Saat cluster pengguna dimulai, Anda dapat membuat konteks kubeconfig
untuk cluster pengguna baru. Anda menggunakan konteks untuk melakukan autentikasi ke cluster pengguna atau pengelolaan.
Gunakan
anthos-gke aws clusters get-credentials
untuk membuatkubeconfig
untuk cluster pengguna Anda di~/.kube/config
.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Ganti CLUSTER_NAME dengan nama cluster Anda. Misalnya,
cluster-0
.Gunakan
kubectl
untuk melakukan autentikasi ke cluster pengguna baru.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Jika cluster sudah siap, outputnya akan menyertakan URL untuk komponen Kubernetes dalam cluster Anda.
Melihat status cluster Anda
Layanan pengelolaan menyediakan resource AWS saat Anda menerapkan AWSCluster
atau AWSNodePool
.
Dari direktori
anthos-aws
, gunakananthos-gke
untuk mengalihkan konteks ke layanan pengelolaan Anda.cd anthos-aws anthos-gke aws management get-credentials
Untuk mencantumkan cluster, gunakan
kubectl get AWSClusters
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClusters
Outputnya mencakup nama, status, usia, versi, dan endpoint setiap cluster.
Misalnya, output berikut hanya menyertakan satu
AWSCluster
yang bernamacluster-0
:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
Melihat peristiwa cluster Anda
Untuk melihat Peristiwa Kubernetes terbaru dari cluster pengguna, gunakan kubectl get events
.
Dari direktori
anthos-aws
, gunakananthos-gke
untuk mengalihkan konteks ke layanan pengelolaan Anda.cd anthos-aws anthos-gke aws management get-credentials
Jalankan
kubectl get events
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
Output-nya mencakup informasi, peringatan, dan error yang terkait dari layanan pengelolaan Anda.
Menghapus cluster pengguna
Untuk menghapus cluster pengguna, lakukan langkah-langkah berikut:
Dari direktori
anthos-aws
, gunakananthos-gke
untuk mengalihkan konteks ke layanan pengelolaan Anda.cd anthos-aws anthos-gke aws management get-credentials
Gunakan
kubectl delete
untuk menghapus manifes yang berisi cluster pengguna Anda.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILE
Ganti CLUSTER_FILE dengan nama manifes yang berisi objek AWScluster dan AWSNodePool Anda. Contoh,
cluster-0.yaml
.
Menghapus semua cluster pengguna
Untuk menghapus semua cluster pengguna Anda, lakukan langkah-langkah berikut:
Dari direktori
anthos-aws
, gunakananthos-gke
untuk mengalihkan konteks ke layanan pengelolaan Anda.cd anthos-aws anthos-gke aws management get-credentials
Gunakan
kubectl delete
untuk menghapus AWSNodePools dan AWSCluster dari layanan pengelolaan Anda.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
Untuk informasi selengkapnya, lihat Meng-uninstal GKE di AWS.
Langkah selanjutnya
Konfigurasikan penyedia identitas Anda dengan GKE Identity Service.
Luncurkan workload pertama Anda di GKE di AWS.
Buat deployment yang tersedia secara eksternal menggunakan load balancer atau Ingress.
Baca spesifikasi untuk Definisi Resource Kustom AWSCluster dan AWSNodePool.