Membuat cluster pengguna kustom

Topik ini menjelaskan cara menyesuaikan konfigurasi GKE di AWS cluster pengguna.

Anda dapat membuat cluster pengguna kustom karena alasan berikut:

  • Membuat cluster lain untuk lingkungan staging atau pengujian.
  • Menambahkan kumpulan node dengan jenis mesin yang berbeda.
  • Membuat cluster di zona ketersediaan (AZ) AWS tertentu.

Sebelum memulai

Sebelum Anda mulai menggunakan GKE di AWS, pastikan Anda telah melakukan tugas berikut:

  • Instal layanan pengelolaan.

  • Jika Anda ingin membuat cluster tanpa menggunakan terraform output example_cluster, miliki subnet AWS pribadi untuk bidang kontrol Anda. Setiap subnet harus berada di AZ yang berbeda dalam region AWS yang sama. Tabel rute harus dikonfigurasi untuk mengizinkan traffic antar-subnet pribadi, dan setiap subnet harus memiliki akses ke gateway NAT.

  • Memiliki ID Virtual Private Cloud (VPC) AWS Anda. ID VPC terlihat seperti vpc-012345678abcde. Anda dapat menemukan ID VPC di Konsol AWS.

Untuk terhubung ke resource GKE di AWS, lakukan langkah-langkah berikut. Pilih apakah Anda memiliki VPC AWS yang sudah ada (atau koneksi langsung ke VPC Anda) atau membuat VPC khusus saat membuat layanan pengelolaan.

VPC yang ada

Jika Anda memiliki koneksi langsung atau VPN ke VPC yang 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:

  1. Beralih ke direktori dengan konfigurasi GKE di AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.

    cd anthos-aws

  2. Untuk membuka tunnel, jalankan skrip bastion-tunnel.sh. Tunnel meneruskan ke localhost: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 untuk menutup koneksi, hentikan proses dengan menggunakan Control+C atau menutup jendela.

  3. Buka terminal baru dan ubah ke direktori anthos-aws Anda.

    cd anthos-aws
  4. Pastikan Anda dapat terhubung ke cluster dengan kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    Output-nya 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.

  1. Beralih ke direktori dengan konfigurasi GKE di AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.

    cd anthos-aws

  2. Dari direktori anthos-aws, gunakan anthos-gke untuk mengganti konteks ke layanan pengelolaan Anda.

    cd anthos-aws
    anthos-gke aws management get-credentials

  3. Buka editor teks dan salin definisi AWSCluster berikut ke dalam file bernama custom-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 berjalan.

    • VPC_ID: ID VPC tempat cluster Anda berjalan.

    • 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 dapat digunakan dengan aman 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: a 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 berjalan.

    • CONTROL_PLANE_SECURITY_GROUPS: securityGroupID yang dibuat selama penginstalan layanan pengelolaan. Anda dapat menyesuaikannya dengan menambahkan securityGroupIDs yang diperlukan untuk terhubung ke bidang kontrol.

    • CONTROL_PLANE_IAM_PROFILE: nama profil instance AWS EC2 yang ditetapkan ke replika bidang kontrol.

    • ROOT_VOLUME_SIZE: ukuran, dalam gibibyte (GiB), volume root bidang kontrol Anda.

    • ROOT_VOLUME_TYPE dengan jenis volume EBS. Misalnya, gp3.

    • ROOT_VOLUME_IOPS dengan jumlah operasi I/O yang disediakan per detik (IOPS) untuk volume. Hanya valid jika volumeType adalah GP3. Untuk mengetahui informasi selengkapnya, lihat Volume SSD Tujuan Umum (gp3).

    • ROOT_VOLUME_KEY dengan Amazon Resource Name 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 I/O yang disediakan per detik (IOPS) untuk volume. Hanya valid jika volumeType adalah gp3. Untuk mengetahui informasi selengkapnya, lihat Volume SSD Tujuan Umum (gp3).

    • ETCD_VOLUME_KEY dengan Amazon Resource Name dari kunci AWS KMS yang mengenkripsi volume data etcd bidang kontrol Anda.

    • ARN_OF_KMS_KEY: kunci AWS KMS yang digunakan untuk mengenkripsi Secret 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, dengan YOUR_PROJECT adalah project Google Cloud Anda dan CLUSTER_NAME adalah nama unik di 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 mengetahui informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya, us-central1.

    • ENABLE_LOGGING: true atau false, apakah Cloud Logging diaktifkan di node bidang kontrol.

    • ENABLE_MONITORING: true atau false, apakah Cloud Monitoring diaktifkan di node bidang kontrol.

    • WORKLOAD_IDENTITY_BUCKET: nama bucket Cloud Storage yang berisi informasi penemuan identitas beban kerja Anda. Kolom ini bersifat opsional.

  4. Buat satu atau beberapa AWSNodePool untuk cluster Anda. Buka editor teks dan salin definisi AWSCluster berikut ke dalam file 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. Contoh, staging-cluster.
    • CLUSTER_VERSION: versi Kubernetes GKE di AWS yang didukung.
    • 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 node pool. Lihat Menskalakan cluster pengguna untuk mengetahui informasi selengkapnya.
    • MAXIMUM_NODE_COUNT: jumlah node maksimum dalam node pool.
    • MAXIMUM_PODS_PER_NODE_COUNT: jumlah maksimum pod yang dapat dialokasikan GKE di AWS ke node.
    • AWS_NODE_TYPE: jenis instance AWS EC2.
    • KMS_KEY_PAIR_NAME: pasangan kunci AWS KMS yang ditetapkan ke setiap worker node pool.
    • NODE_IAM_PROFILE: nama profil instance AWS EC2 yang ditetapkan ke node di pool.
    • ROOT_VOLUME_SIZE: ukuran, dalam gibibyte (GiB), volume root bidang kontrol Anda.
    • VOLUME_TYPE: jenis volume EBS AWS node. Misalnya, gp3.
    • IOPS: jumlah operasi I/O yang disediakan per detik (IOPS) untuk volume. Hanya valid jika volumeType adalah gp3.
    • NODE_VOLUME_KEY: ARN kunci AWS KMS yang digunakan untuk mengenkripsi volume. Untuk mengetahui informasi selengkapnya, lihat Menggunakan CMK yang dikelola pelanggan untuk mengenkripsi volume.
  5. 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 Anda dimulai, Anda dapat membuat konteks kubeconfig untuk cluster pengguna baru. Anda menggunakan konteks untuk mengautentikasi ke cluster pengguna atau pengelolaan.

  1. Gunakan anthos-gke aws clusters get-credentials untuk membuat kubeconfig 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. Contoh, cluster-0.

  2. Gunakan kubectl untuk melakukan autentikasi ke cluster pengguna baru Anda.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    Jika cluster Anda sudah siap, output akan menyertakan URL untuk komponen Kubernetes dalam cluster Anda.

Melihat status cluster Anda

Layanan pengelolaan menyediakan resource AWS saat Anda menerapkan AWSCluster atau AWSNodePool.

  1. Dari direktori anthos-aws, gunakan anthos-gke untuk mengganti konteks ke layanan pengelolaan Anda.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Untuk mencantumkan cluster, gunakan kubectl get AWSClusters.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters
    

    Output mencakup nama, status, usia, versi, dan endpoint setiap cluster.

    Misalnya, output berikut hanya menyertakan satu AWSCluster bernama cluster-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 Anda, gunakan kubectl get events.

  1. Dari direktori anthos-aws, gunakan anthos-gke untuk mengganti konteks ke layanan pengelolaan Anda.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Jalankan kubectl get events.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get events
    

Output mencakup informasi, peringatan, dan error terkait dari layanan pengelolaan Anda.

Menghapus cluster pengguna

Untuk menghapus cluster pengguna, lakukan langkah-langkah berikut:

  1. Dari direktori anthos-aws, gunakan anthos-gke untuk mengganti konteks ke layanan pengelolaan Anda.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 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:

  1. Dari direktori anthos-aws, gunakan anthos-gke untuk mengganti konteks ke layanan pengelolaan Anda.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Gunakan kubectl delete untuk menghapus AWSNodePool 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 mengetahui informasi selengkapnya, lihat Meng-uninstal GKE di AWS.

Langkah berikutnya