Memelihara cluster Kubernetes

Dengan air gap Google Distributed Cloud (GDC), Anda dapat mengelola cluster Kubernetes setelah dibuat menggunakan GKE di GDC. Layanan ini memungkinkan Anda beradaptasi dengan persyaratan workload container yang terus berubah.

Sebelum memulai

Untuk melihat dan mengelola node pool di cluster Kubernetes, Anda harus memiliki peran berikut:

  • User Cluster Admin (user-cluster-admin)
  • User Cluster Node Viewer (user-cluster-node-viewer)

Peran ini tidak terikat ke namespace.

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

  1. Temukan nama cluster Kubernetes, atau tanyakan kepada Administrator Platform Anda nama cluster tersebut.

  2. Login dan buat file kubeconfig untuk cluster Kubernetes jika Anda belum memilikinya.

  3. Gunakan jalur kubeconfig cluster Kubernetes untuk mengganti KUBERNETES_CLUSTER_KUBECONFIG dalam petunjuk ini.

Melakukan pemeliharaan node

Saat Anda perlu memperbaiki atau memelihara node, masukkan node ke mode pemeliharaan terlebih dahulu. Menempatkan node ke mode pemeliharaan akan menguras pod dan workloadnya dengan aman, serta mengecualikan node dari penjadwalan pod. Dalam mode pemeliharaan, Anda dapat mengerjakan node tanpa risiko mengganggu traffic pod.

Cara kerjanya

Mode pemeliharaan untuk GDC mirip dengan menjalankan kubectl cordon dan kubectl drain untuk node tertentu. Berikut beberapa detail yang relevan dengan mode pemeliharaan:

  • Node yang ditentukan ditandai sebagai tidak dapat dijadwalkan. Tindakan ini adalah yang dilakukan kubectl cordon.
  • Taint node ditambahkan ke node yang ditentukan untuk menunjukkan bahwa tidak ada pod yang dapat dijadwalkan atau dieksekusi di node tersebut. Tindakan ini mirip dengan kubectl drain.
  • Waktu tunggu 20 menit diterapkan untuk memastikan bahwa node tidak macet saat menunggu pod dihentikan. Pod mungkin tidak dihentikan jika dikonfigurasi untuk mentoleransi semua taint atau memiliki finalizer. Cluster GDC mencoba menghentikan semua pod, tetapi jika waktu tunggu habis, node akan dimasukkan ke mode pemeliharaan. Waktu tunggu ini mencegah pod yang sedang berjalan memblokir upgrade.
  • Jika Anda memiliki workload berbasis VM yang berjalan di node, cluster GDC akan menerapkan NodeSelector ke pod instance mesin virtual (VMI), lalu menghentikan pod. NodeSelector memastikan bahwa pod VMI dimulai ulang pada node yang sama saat node dikeluarkan dari mode pemeliharaan.

Menempatkan node ke mode pemeliharaan

Pilih node yang ingin Anda masukkan ke mode pemeliharaan dengan menentukan rentang alamat IP untuk node yang dipilih di bagian maintenanceBlocks pada file konfigurasi cluster Anda. Node yang Anda pilih harus dalam status Ready, dan berfungsi di cluster.

Untuk mengaktifkan mode pemeliharaan pada node:

  1. Edit file konfigurasi cluster untuk memilih node yang ingin Anda masukkan ke mode pemeliharaan.

    Anda dapat mengedit file konfigurasi dengan editor pilihan Anda, atau Anda dapat mengedit resource kustom cluster secara langsung dengan menjalankan perintah berikut:

    kubectl edit cluster KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    Ganti yang berikut untuk cluster Kubernetes:

    • KUBERNETES_CLUSTER_NAME: nama cluster.
    • KUBERNETES_CLUSTER_NAMESPACE: namespace cluster.
    • KUBERNETES_CLUSTER_KUBECONFIG: Jalur file kubeconfig.

    Setelah konfigurasi cluster diterapkan, cluster akan menempatkan node yang berlaku ke mode pemeliharaan.

  2. Tambahkan bagian maintenanceBlocks ke file konfigurasi cluster untuk menentukan satu alamat IP, atau rentang alamat, untuk node yang ingin Anda masukkan ke mode pemeliharaan.

    Contoh berikut menunjukkan cara memilih beberapa node dengan menentukan rentang alamat IP:

    ...
    metadata:
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
      maintenanceBlocks:
        cidrBlocks:
        - 172.16.128.1-172.16.128.64
    ...
    
  3. Dapatkan status node di cluster Anda:

    kubectl get nodes -n KUBERNETES_CLUSTER_NAME \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    Responsnya akan seperti berikut:

    NAME                STATUS                     ROLES    AGE     VERSION
    user-gdc-01        Ready                      master   2d22h   v1.23.5-gke.1502
    user-gdc-04        Ready                      none     2d22h   v1.23.5-gke.1502
    user-gdc-05        Ready,SchedulingDisabled   none     2d22h   v1.23.5-gke.1502
    user-gdc-06        Ready                      none     2d22h   v1.23.5-gke.1502
    

    Status SchedulingDisabled menunjukkan bahwa node dalam mode pemeliharaan.

  4. Dapatkan jumlah node dalam mode pemeliharaan:

    kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

    Responsnya akan terlihat mirip dengan output berikut:

    NAME   READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
    np1    3       0             0         1                  0
    

    Kolom UNDERMAINTENANCE dalam contoh ini menunjukkan bahwa satu node dalam mode pemeliharaan.

    Cluster juga menambahkan taint berikut ke node saat dimasukkan ke dalam mode pemeliharaan:

  • baremetal.cluster.gke.io/maintenance:NoExecute
  • baremetal.cluster.gke.io/maintenance:NoSchedule

Mengubah ukuran node pool

Setiap cluster KUBERNETES di lingkungan GDC dapat mengubah ukuran node pool-nya agar dapat diskalakan dengan perubahan workload. Untuk mengelola kumpulan node di cluster Kubernetes, Anda harus memiliki peran Admin Cluster Pengguna (user-cluster-admin). Peran ini tidak terikat ke namespace.

Untuk menskalakan node pool di cluster yang ada, selesaikan langkah-langkah berikut:

Konsol

  1. Di dasbor, pilih project tempat cluster yang ingin Anda edit berada.
  2. Di menu navigasi, pilih Kubernetes Engine > Clusters.
  3. Pilih nama cluster yang terkait dengan kumpulan node. Halaman Detail cluster akan ditampilkan.
  4. Klik tab Node pools.
  5. Pilih ikon Edit untuk node pool yang ingin Anda ubah ukurannya. Perintah Edit node pool ditampilkan.
  6. Perbarui kolom Number of nodes untuk mencerminkan jumlah node baru yang diperlukan dalam node pool. Anda dapat menambah atau mengurangi jumlah node agar sesuai dengan persyaratan beban kerja Anda.

  7. Klik Simpan.

  8. Kembali ke tab Node pools untuk cluster Anda dan konfirmasi bahwa node pool yang diubah ukurannya memiliki status Ready dan jumlah node yang benar. Diperlukan waktu beberapa menit agar kumpulan node diskalakan sesuai spesifikasi Anda.

    Konfirmasi bahwa node pool Anda sudah siap menggunakan konsol.

API

  1. Buka spesifikasi resource kustom Cluster dengan kubectl CLI menggunakan editor interaktif:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    Ganti kode berikut:

    • KUBERNETES_CLUSTER_NAME: Nama cluster yang menghosting node pool.
    • MANAGEMENT_API_SERVER: Jalur kubeconfig server API zonal tempat cluster Kubernetes dihosting. Jika Anda belum membuat file kubeconfig untuk server API di zona target, lihat Login untuk mengetahui detailnya.
  2. Perbarui kolom nodeCount untuk node pool yang akan diubah ukurannya:

    nodePools:
    ...
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: NUMBER_OF_WORKER_NODES
    

    Ganti NUMBER_OF_WORKER_NODES dengan jumlah node pekerja yang diperbarui untuk disediakan di node pool.

  3. Simpan file dan keluar dari editor.

  4. Verifikasi penskalaan node Anda telah selesai dengan memeriksa konfigurasi node pool:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform -o json \
        --kubeconfig MANAGEMENT_API_SERVER | jq .status.workerNodePoolStatuses
    

    Konfirmasi bahwa jumlah readyNodes mencerminkan jumlah node yang Anda tetapkan untuk node pool. Diperlukan waktu beberapa menit agar kumpulan node diskalakan sesuai spesifikasi Anda.

Memindahkan cluster dalam hierarki project

Project menyediakan pengelompokan logis instance layanan. Anda dapat menambahkan dan menghapus cluster Kubernetes dari hierarki project GDC untuk mengelompokkan layanan dengan tepat.

Menambahkan project ke cluster

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

  1. Di menu navigasi, pilih Kubernetes Engine > Clusters.
  2. Klik cluster dari daftar cluster untuk membuka halaman Cluster details.
  3. Pilih Lampirkan Project.
  4. Pilih project yang tersedia untuk ditambahkan dari daftar project. Klik Simpan.

Melepaskan project dari cluster

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

  1. Di menu navigasi, pilih Kubernetes Engine > Clusters.
  2. Klik cluster dari daftar cluster untuk membuka halaman Cluster details.
  3. Klik Lepaskan untuk melepaskan project dari cluster.

Melihat semua cluster dalam organisasi

Anda dapat melihat semua cluster Kubernetes yang tersedia dalam organisasi, termasuk status, versi Kubernetes, dan detail lainnya. Karena cluster Kubernetes adalah resource zonal, Anda hanya dapat mencantumkan cluster per zona.

Konsol

  • Di menu navigasi, pilih Kubernetes Engine > Clusters.

    Semua cluster yang tersedia di organisasi dengan status dan informasi lainnya ditampilkan:

    Halaman detail cluster untuk status dan informasi lainnya untuk setiap cluster Kubernetes di organisasi.

kubectl

  • Mencantumkan cluster Kubernetes yang tersedia di zona dalam organisasi:

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

    Ganti MANAGEMENT_API_SERVER dengan jalur kubeconfig server API zonal. Jika Anda belum membuat file kubeconfig untuk server API di zona target, lihat Login untuk mengetahui detailnya.

    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
    

Melihat properti yang dapat diupdate

Untuk setiap cluster Kubernetes, serangkaian properti tersedia untuk 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 diperbarui 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.

kubectl

  • Lihat daftar properti untuk spesifikasi Cluster dan nilai 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 zonal. Jika Anda belum membuat file kubeconfig untuk server API di zona target, lihat Login untuk mengetahui detailnya.

    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.

Menskalakan ukuran alamat IP layanan ingress

Anda dapat menskalakan ukuran alamat IP layanan ingress setelah membuat cluster Kubernetes.

  1. Buka spesifikasi resource kustom Cluster dengan kubectl CLI menggunakan editor interaktif:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ganti kode berikut:

    • KUBERNETES_CLUSTER_NAME: Nama cluster yang menyediakan alamat IP.
    • MANAGEMENT_API_SERVER: Jalur kubeconfig server API zonal tempat cluster Kubernetes dihosting. Jika Anda belum membuat file kubeconfig untuk server API di zona target, lihat Login untuk mengetahui detailnya.
  2. Perbarui kolom ingressServiceIPSize ke ukuran alamat IP baru:

    ...
    spec:
    ...
      loadBalancer:
        ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE
    ...
    

    Ganti INGRESS_SERVICE_IP_SIZE dengan ukuran alamat IP layanan ingress yang diperbarui.

  3. Simpan file dan keluar dari editor.

Tidak ada batas yang ditetapkan pada ukuran alamat IP layanan ingress. Jumlah alamat IP yang Anda minta akan dipenuhi berdasarkan organisasi Anda. Jika permintaan tidak dapat dipenuhi, cluster akan melaporkan error.

Mengupgrade cluster Kubernetes

Anda dapat melakukan upgrade otomatis atau manual pada cluster Kubernetes. Untuk mengetahui petunjuk selengkapnya tentang cara mengupgrade cluster, lihat bagian Upgrade cluster.