Memasukkan node ke mode pemeliharaan

Saat perlu memperbaiki atau memelihara node, Anda harus terlebih dahulu mengalihkan node ke mode pemeliharaan. Menempatkan node ke mode pemeliharaan akan menguras pod/beban kerja dengan aman dan mengecualikan node dari penjadwalan pod. Dalam mode pemeliharaan, Anda dapat mengerjakan node tanpa risiko mengganggu traffic pod.

Cara kerjanya

GKE di Bare Metal menyediakan cara untuk menempatkan node ke dalam mode pemeliharaan. Pendekatan ini memungkinkan komponen cluster lain mengetahui dengan benar bahwa node tersebut berada dalam mode pemeliharaan. Saat Anda menempatkan node dalam mode pemeliharaan, tidak ada pod tambahan yang dapat dijadwalkan pada node, dan pod yang ada akan dihentikan.

Daripada menggunakan mode pemeliharaan, Anda dapat menggunakan perintah Kubernetes secara manual seperti kubectl cordon dan kubectl drain pada node tertentu. Jika Anda menjalankan GKE di Bare Metal versi 1.12.0 (anthosBareMetalVersion: 1.12.0) atau yang lebih rendah, lihat masalah umum di Node tanpa kabel jika Anda tidak menggunakan prosedur mode pemeliharaan.

Saat Anda menggunakan proses mode pemeliharaan, GKE di Bare Metal akan melakukan hal-hal berikut:

  • Tant node ditambahkan ke node yang ditentukan untuk menunjukkan bahwa tidak ada pod yang dapat dijadwalkan atau dieksekusi pada node.

  • Waktu tunggu 20 menit diterapkan untuk memastikan node tidak macet saat menunggu pod berhenti. Pod mungkin tidak akan berhenti jika dikonfigurasi untuk menoleransi semua taint atau memiliki finalizer. GKE pada Bare Metal mencoba menghentikan semua pod, tetapi jika waktu tunggu habis, node akan dialihkan ke mode pemeliharaan. Waktu tunggu ini mencegah pod yang berjalan memblokir upgrade.

Memasukkan node ke mode pemeliharaan

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

Untuk menyetel node ke mode pemeliharaan:

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

    Anda dapat mengedit file konfigurasi dengan editor pilihan, atau 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 dimasukkan ke dalam 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.

    GKE di Bare Metal mulai menempatkan node ke mode pemeliharaan.

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

    kubectl get nodes --kubeconfig=KUBECONFIG
    

    Responsnya akan seperti berikut:

    NAME                       STATUS   ROLES           AGE     VERSION
    user-anthos-baremetal-01   Ready    control-plane   2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-04   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-05   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-06   Ready    worker          2d22h   v1.27.4-gke.1600
    

    Perlu diketahui bahwa node masih dapat dijadwalkan, tetapi taint membuat pod apa pun (tanpa toleransi yang sesuai) dijadwalkan pada node.

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

    kubectl get nodepools --kubeconfig ADMIN_KUBECONFIG
    

    Responsnya akan terlihat seperti contoh berikut:

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

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

    GKE di Bare Metal juga menambahkan taint berikut ke node saat berada dalam mode pemeliharaan:

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

Mode penagihan dan pemeliharaan

Penagihan untuk GKE pada Bare Metal didasarkan pada jumlah vCPU yang dimiliki cluster Anda untuk Node yang mampu menjalankan workload. Saat Anda menempatkan Node dalam mode pemeliharaan, taint NoExecute dan NoSchedule akan ditambahkan ke Node, tetapi tidak menonaktifkan penagihan. Setelah menyetel node ke mode pemeliharaan, tandai node (kubectl cordon NODE_NAME) untuk menandainya sebagai tidak dapat dijadwalkan. Setelah node ditandai sebagai tidak dapat dijadwalkan, Node dan vCPU terkaitnya akan dikecualikan dari penagihan.

Seperti yang dijelaskan di halaman harga, Anda dapat menggunakan kubectl untuk melihat kapasitas vCPU (digunakan untuk penagihan Anthos) dari setiap cluster pengguna Anda. Perintah ini tidak memperhitungkan apakah Node dapat dijadwalkan atau tidak sebagai pertimbangan. Perintah ini hanya menyediakan jumlah vCPU per node.

Untuk mengidentifikasi jumlah vCPU per node untuk cluster pengguna Anda:

kubectl get nodes \
    --kubeconfig USER_KUBECONFIG \
    -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"} \
    {.status.capacity.cpu}{\"\n\"}{end}"

Ganti USER_KUBECONFIG dengan jalur file kubeconfig untuk cluster pengguna Anda.

Menghapus node dari mode pemeliharaan

Untuk menghapus node dari mode pemeliharaan:

  1. Edit file konfigurasi cluster untuk menghapus node yang ingin Anda hapus dari mode pemeliharaan.

    Anda dapat mengedit file konfigurasi dengan editor pilihan, atau 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. Edit alamat IP untuk menghapus node tertentu dari mode pemeliharaan atau hapus bagian maintenanceBlocks menghapus semua yang dilakukan dari mode pemeliharaan.

  3. Simpan dan terapkan konfigurasi cluster yang telah diupdate.

  4. Gunakan perintah kubectl untuk memeriksa status node Anda.