Memelihara cluster

Dengan perangkat air-gapped Google Distributed Cloud (GDC), Anda dapat mengelola cluster Kubernetes setelah dibuat sehingga Anda dapat beradaptasi dengan persyaratan workload container yang terus berubah.

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/workloadnya dengan aman dan 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 -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    Ganti kode berikut:

    • CLUSTER_NAMESPACE: namespace cluster.
    • CLUSTER_NAME: nama cluster.
  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. Simpan dan terapkan konfigurasi cluster yang telah diupdate:

    kubectl apply -f my-cluster.yaml
    

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

  4. Jalankan perintah berikut untuk mendapatkan status node di cluster Anda:

    kubectl get nodes -n CLUSTER_NAME
    

    Responsnya akan seperti berikut:

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

    Status SchedulingDisabled menunjukkan bahwa node dalam mode pemeliharaan.

  5. Jalankan perintah berikut untuk mendapatkan jumlah node dalam mode pemeliharaan:

    kubectl get nodepools
    

    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

Node pool di cluster pengguna mana pun di lingkungan GDC dapat diubah ukurannya untuk menyesuaikan perubahan beban kerja. Untuk mengelola kumpulan node di cluster pengguna, Anda harus memiliki peran Admin Cluster Pengguna (user-cluster-admin).

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 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/USER_CLUSTER_NAME -n platform \
          --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
    
  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/USER_CLUSTER_NAME -n platform -o json \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG | 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.

Melihat semua cluster dalam organisasi

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

Konsol

  • Di menu navigasi, pilih Clusters.

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

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

kubectl

  • Mencantumkan cluster pengguna yang tersedia di organisasi:

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

    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 pengguna, 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 Clusters.

  2. Di daftar cluster pengguna, 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 ORG_ADMIN_CLUSTER_KUBECONFIG
    

    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 GDCH 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, GDCH 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 pengguna.

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

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  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.