Memelihara cluster Kubernetes

Google Distributed Cloud (GDC) dengan air gap memungkinkan Anda mengelola cluster Kubernetes setelah pembuatan menggunakan GKE di GDC. Layanan ini memungkinkan Anda beradaptasi dengan persyaratan workload container yang terus berkembang dan mengelola node cluster yang ada dengan alur kerja berikut:

Dokumen ini ditujukan untuk administrator IT dalam grup administrator platform yang mengelola workload container yang dihosting di cluster yang mencakup beberapa project, dan developer dalam grup operator aplikasi yang bertanggung jawab untuk membuat workload aplikasi dalam satu project. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC dengan air gap.

Sebelum memulai

Untuk menyelesaikan tugas dalam dokumen ini, Anda harus meminta izin yang diperlukan dan menyiapkan lingkungan Anda.

Meminta peran IAM

Anda harus memiliki peran tertentu untuk mendapatkan izin yang diperlukan guna mengelola cluster Kubernetes Anda. Peran yang Anda perlukan bergantung pada apakah Anda bekerja dalam cluster bersama yang tercakup dalam organisasi atau cluster standar yang tercakup dalam project. Untuk mengetahui informasi selengkapnya, lihat Konfigurasi cluster Kubernetes.

Peran cluster bersama

Untuk melihat dan mengelola cluster Kubernetes bersama dan resource-nya, minta Admin Org IAM Anda untuk memberi Anda peran berikut berdasarkan tugas yang akan dilakukan:

  • Project Creator (project-creator): membuat atau melihat resource project. Peran ini diperlukan untuk melampirkan cluster bersama ke project.

  • Editor Project (project-editor): menghapus, memperbarui, atau melihat resource project. Peran ini diperlukan untuk melepaskan cluster bersama dari project.

  • User Cluster Viewer (user-cluster-viewer): melihat cluster bersama dan resource-nya. Peran ini memberikan akses ke API bidang pengelolaan untuk cluster bersama yang dihosting di server API pengelolaan.

Peran ini tidak terikat ke namespace project.

Peran cluster standar

Untuk melihat cluster Kubernetes standar dan resource-nya, minta Admin Project IAM Anda untuk memberi Anda peran Standard Cluster Viewer (standard-cluster-viewer). Peran ini memberikan akses ke API bidang pengelolaan untuk cluster standar yang dihosting di server API pengelolaan.

Peran ini terikat ke namespace project Anda.

Menyiapkan lingkungan Anda

Untuk menjalankan perintah terhadap cluster Kubernetes menggunakan API, pastikan Anda memiliki resource berikut:

  • Temukan nama cluster Kubernetes, atau tanyakan kepada anggota grup administrator platform apa nama clusternya.

  • Gunakan nama cluster Kubernetes untuk mengganti CLUSTER_NAME dalam petunjuk ini.

  • Login dan buat file kubeconfig untuk server API pengelolaan.

  • Gunakan jalur kubeconfig server API pengelolaan untuk mengganti MANAGEMENT_API_SERVER dalam petunjuk ini.

Memindahkan cluster dalam hierarki project

Project menyediakan pengelompokan logis instance layanan. Anda dapat menambahkan dan menghapus cluster Kubernetes bersama dari hierarki project GDC untuk mengelompokkan layanan Anda dengan tepat. Anda tidak dapat memindahkan cluster standar dalam hierarki project karena cluster tersebut hanya dicakupkan ke satu project.

Menghubungkan project ke cluster bersama

Saat membuat cluster bersama dari konsol GDC, Anda harus melampirkan setidaknya satu project sebelum dapat berhasil men-deploy workload container ke cluster tersebut. Jika Anda harus menambahkan project tambahan ke cluster yang ada, selesaikan langkah-langkah berikut:

Konsol

  1. Di menu navigasi, pilih Kubernetes Engine > Clusters.
  2. Pada daftar cluster, klik nama cluster untuk membuka halaman Cluster details.
  3. Pilih Attach Project.
  4. Dalam daftar project yang tersedia, klik nama project yang akan dilampirkan ke cluster.
  5. Klik Simpan.

API

  • Buat resource kustom ProjectBinding baru untuk cluster Anda:

    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
    EOF
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER: jalur kubeconfig server API zonal.
    • CLUSTER_NAME: nama cluster.
    • PROJECT_NAME: nama project yang akan diikat dengan cluster. Setiap resource ProjectBinding hanya dapat dipetakan ke satu cluster. Jika project memerlukan akses ke beberapa cluster, ProjectBinding unik harus dibuat untuk setiap cluster.

Terraform

  1. Dalam file konfigurasi Terraform, sisipkan 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, seperti CLUSTER_NAME-PROJECT_NAME-binding. Nama ini digunakan oleh Terraform untuk mengidentifikasi binding project Anda, dan tidak digunakan oleh GDC.
    • CLUSTER_NAME: nama cluster. Setiap resource ProjectBinding hanya dapat dipetakan ke satu cluster. Jika project memerlukan akses ke beberapa cluster, ProjectBinding unik harus dibuat untuk setiap cluster.
    • PROJECT_NAME: nama project yang akan diikat. Setiap resource ProjectBinding hanya dapat dipetakan ke satu cluster. Jika sebuah project memerlukan akses ke beberapa cluster, ProjectBinding yang unik harus dibuat untuk setiap cluster.
  2. Terapkan binding project baru:

    terraform apply
    

Melepaskan project dari cluster bersama

Melepaskan project dari cluster bersama dapat menyebabkan perubahan signifikan, seperti menghapus workload yang berjalan di cluster. Pastikan Anda memahami konsekuensinya sebelum melepaskan project dari cluster bersama.

Untuk melepaskan project dari cluster bersama yang ada, selesaikan langkah-langkah berikut:

Konsol

  1. Di menu navigasi, pilih Kubernetes Engine > Clusters.
  2. Klik cluster dari daftar cluster untuk membuka halaman Cluster details.
  3. Klik Detach untuk project yang akan dilepaskan dari cluster.

API

  • Hapus resource ProjectBinding yang menautkan project dan cluster:

    kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \
        CLUSTER_NAME-PROJECT_NAME -n platform
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER: jalur kubeconfig server API zonal.
    • CLUSTER_NAME: nama cluster.
    • PROJECT_NAME: nama project yang akan dilepas dari cluster.

Terraform

  • Hapus resource binding project:

    terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAME
    

    Ganti PROJECT_BINDING_RESOURCE_NAME dengan nama resource Terraform dari binding project yang akan dihapus, seperti CLUSTER_NAME-PROJECT_NAME-binding. Nama ini digunakan oleh Terraform untuk mengidentifikasi binding project Anda, dan tidak digunakan oleh GDC.

Melihat semua cluster dalam project atau organisasi

Anda dapat melihat semua cluster Kubernetes yang tersedia dalam project atau organisasi, termasuk status, versi Kubernetes, dan detail lainnya.

Karena cluster Kubernetes adalah resource zona, Anda hanya dapat mencantumkan cluster per zona.

Konsol

  1. Di pemilih project, pilih project atau organisasi Anda.

    Cluster standar memiliki cakupan project dan cluster bersama memiliki cakupan organisasi. Pilih cakupan yang benar untuk melihat jenis cluster Kubernetes yang sesuai.

  2. Di menu navigasi, pilih Kubernetes Engine > Clusters.

    Semua cluster bersama yang tersedia di organisasi beserta statusnya dan informasi lainnya akan ditampilkan:

    Halaman detail cluster untuk status dan informasi lainnya untuk setiap cluster bersama dalam organisasi.

gdcloud

  • Cantumkan cluster Kubernetes yang tersedia di zona:

    gdcloud clusters list
    

    Outputnya mirip dengan hal berikut ini:

    CLUSTERREF.NAME   READINESS.STATE   TYPE   CURRENTVERSION.USERCLUSTERVERSION     CURRENTVERSION.SUPPORT.STATUS
    user-vm-1         Ready             user   1.15.0-gdch.394225-1.28.15-gke.1200   In Support
    user-vm-2         Ready             user   1.15.0-gdch.394225-1.29.12-gke.800    In Support
    

API

  • Cantumkan cluster Kubernetes yang tersedia di zona:

    kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER: jalur kubeconfig server API zona.
    • KUBERNETES_CLUSTER_NAMESPACE: namespace cluster. Untuk cluster bersama, gunakan namespace platform. Untuk cluster standar, gunakan namespace project cluster.

    Outputnya mirip dengan hal berikut ini:

    NAME        STATE     K8S VERSION
    user-vm-1   Running   1.25.10-gke.2100
    user-test   Running   1.26.5-gke.2100
    

Mencantumkan versi Kubernetes yang tersedia untuk cluster

Anda dapat mencantumkan versi Kubernetes yang tersedia di zona GDC untuk memverifikasi fitur Kubernetes yang dapat Anda akses di cluster.

  • Buat daftar versi Kubernetes yang tersedia di zona Anda:

    kubectl get userclustermetadata.upgrade.private.gdc.goog \
        -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ganti MANAGEMENT_API_SERVER dengan file kubeconfig server API zona cluster Anda.

    Outputnya akan terlihat mirip seperti berikut:

    K8S-VERSION
    1.25.10-gke.2100
    1.26.5-gke.2100
    1.27.4-gke.500
    

Melihat properti yang dapat diupdate

Untuk setiap cluster Kubernetes, tersedia serangkaian properti yang dapat diubah setelah cluster dibuat. Anda hanya dapat mengubah properti yang dapat diubah yang ada di spec dari resource kustom Cluster. Tidak semua properti di spec memenuhi syarat untuk diupdate setelah cluster disediakan. Untuk melihat properti yang dapat diupdate ini, selesaikan langkah-langkah berikut:

Konsol

  1. Di menu navigasi, pilih Kubernetes Engine > Clusters.

  2. Dalam daftar cluster Kubernetes, klik nama cluster untuk melihat propertinya.

  3. Properti yang dapat diedit memiliki ikon Edit.

API

  • Lihat daftar properti untuk spesifikasi Cluster dan nilai yang valid yang sesuai dengan setiap properti:

    kubectl explain clusters.cluster.gdc.goog.spec \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ganti MANAGEMENT_API_SERVER dengan jalur kubeconfig server API zona.

    Outputnya mirip dengan hal berikut ini:

    KIND:     Cluster
    VERSION:  cluster.gdc.goog/v1
    
    RESOURCE: spec <Object>
    
    DESCRIPTION:
        <empty>
    
    FIELDS:
      clusterNetwork    <Object>
        The cluster network configuration. If unset, the default configurations
        with pod and service CIDR sizes are used. Optional. Mutable.
    
      initialVersion    <Object>
        The GDC air-gapped version information of the user cluster during cluster creation.
        Optional. Default to use the latest applicable version. Immutable.
    
      loadBalancer  <Object>
        The load balancer configuration. If unset, the default configuration with
        the ingress service IP address size is used. Optional. Mutable.
    
      nodePools <[]Object>
        The list of node pools for the cluster worker nodes. Optional. Mutable.
    
      releaseChannel    <Object>
        The release channel a cluster is subscribed to. When a cluster is
        subscribed to a release channel, GDC maintains the cluster versions for
        users. Optional. Mutable.
    

    Perbarui setelan ini menggunakan konsol GDC atau kubectl CLI. Misalnya, Anda dapat mengubah ukuran node pool.

Langkah berikutnya