Pemeriksaan preflight

Pemeriksaan pra-penerbangan adalah tindakan pencegahan untuk membantu mengidentifikasi masalah sebelum Anda memulai operasi cluster utama, seperti membuat atau mengupgrade cluster. Saat pemeriksaan ini berjalan secara otomatis sebelum operasi, tidak ada perubahan yang dilakukan pada cluster Anda kecuali jika semua pemeriksaan pra-penerbangan lulus. Anda juga dapat menjalankan pemeriksaan pra-penerbangan sesuai permintaan.

Dokumen ini menjelaskan setiap pemeriksaan, dalam keadaan apa pemeriksaan berjalan secara otomatis, cara dan waktu untuk menjalankannya secara manual, serta cara menafsirkan hasilnya.

Di Google Distributed Cloud, Anda dapat menjalankan pemeriksaan pra-penerbangan untuk berbagai situasi:

  • Google Distributed Cloud menjalankan pemeriksaan pra-penerbangan saat Anda membuat atau mengupgrade cluster dan resource node pool dengan bmctl. Jika pemeriksaan gagal, tidak ada perubahan yang dilakukan. Anda juga dapat melewati pemeriksaan ini, atau menjalankannya secara eksplisit.

  • Google Distributed Cloud juga menjalankan pemeriksaan pra-peluncuran internal saat admin atau cluster hybrid membuat atau memperbarui resource Kubernetes di cluster pengguna. Pemeriksaan dijalankan sebelum perubahan diterapkan ke cluster pengguna yang terpengaruh. Jika pemeriksaan gagal, tidak ada perubahan yang dilakukan.

PreflightCheck resource kustom

Saat pemeriksaan pra-penerbangan berjalan, Google Distributed Cloud akan membuat resource kustom PreflightCheck. PreflightCheck resource kustom bersifat persisten dan memberikan catatan aktivitas dan hasil pemeriksaan awal.

Untuk mengambil resource kustom PreflightCheck:

  1. Dapatkan daftar pemeriksaan preflight yang telah dijalankan untuk cluster tertentu:

    kubectl get preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

    • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin.
    • CLUSTER_NAMESPACE: namespace cluster.

    Respons mencantumkan resource menurut namespace. Anda dapat menjalankan kubectl get preflightchecks di semua namespace untuk mendapatkan daftar lengkap. Untuk setiap resource, respons menampilkan usia resource dan apakah pemeriksaan awal lulus atau tidak. Contoh respons berikut menampilkan resource PreflightCheck untuk namespace cluster-test-admin001.

    NAMESPACE              NAME                                PASS    AGE
    cluster-test-admin001   test-admin001                      true    52d
    cluster-test-admin001   test-admin001jkm4q                 true    52d
    cluster-test-admin001   test-admin001k79t7                 true    6d20h
    cluster-test-admin001   upgrade-cluster-20231106-222746    true    6d20h
    
  2. Ambil detail untuk resource kustom PreflightCheck tertentu:

    kubectl describe preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

    • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin.
    • CLUSTER_NAMESPACE: namespace cluster.

    Contoh respons perintah berikut menunjukkan resource PreflightCheck untuk pemeriksaan awal yang berhasil yang dijalankan sebagai bagian dari pembuatan cluster:

    Name:         create-cluster-20230922-175006
    Namespace:    cluster-test-user001
    Labels:       <none>
    Annotations:  <none>
    API Version:  baremetal.cluster.gke.io/v1
    Kind:         PreflightCheck
    Metadata:
      Creation Timestamp:  2023-09-22T17:50:11Z
      Generation:          1
      Resource Version:    6502800
      UID:                 917daf64-963d-44b4-a1f9-c54972a39191
    Spec:
      Check Image Version:  latest
      Config YAML:          ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-test-user
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: test-user001
      namespace: cluster-test-user001
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: 1.16.0
      gkeConnect:
        projectID: clusters-project
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: 192.0.2.53
      ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-test-user001
    spec:
      clusterName: test-user001
      nodes:
      - address: 192.0.2.54
      ...
    Status:
      Checks:
        192.0.2.53:
          Job UID:  d0b5dc1f-9d39-4cc8-b3d2-0841212f7f8c
          Message:  
          Pass:     true
        192.0.2.53-gcp:
          Job UID:  b4d96ce5-0d4e-4e3c-97db-6317e0c15fc8
          Message:  
          Pass:     true
        192.0.2.54:
          Job UID:  b67cf195-3951-46ad-b91c-0d79025cfc0a
          Message:  
          Pass:     true
        192.0.2.54-gcp:
          Job UID:  aed509e2-4bf7-44c4-bfa0-8147ef8ea74e
          Message:  
          Pass:     true
        Gcp:
          Job UID:  ac479ac4-e1c4-4681-9f2b-5773069bf6ae
          Message:  
          Pass:     true
        Node - Network:
          Job UID:  8a57c4ee-ad17-4560-8809-b117c871ad5d
          Message:  
          Pass:     true
        Pod - Cidr:
          Message:  
          Pass:     true
      Cluster Spec:
        Anthos Bare Metal Version:  1.16.0
        Bypass Preflight Check:     false
        Cluster Network:
          Bundled Ingress:  true
          Pods:
            Cidr Blocks:
              10.0.0.0/16
          Services:
            Cidr Blocks:
              10.96.0.0/20
      ...
      Completion Time:                 2023-09-22T17:51:22Z
      Conditions:
        Last Transition Time:  2023-10-02T23:59:06Z
        Observed Generation:   1
        Reason:                Reconciling
        Status:                True
        Type:                  Reconciling
      Node Pool Specs:
        node-pool-1:
          Cluster Name:  test-user001
          Nodes:
            Address:         192.0.2.54
        ...
      Pass:                  true
      Start Time:            2023-09-22T17:50:32Z
    Events:                  <none>
    

    Di resource kustom PreflightCheck sebelumnya, bagian Status berisi informasi berikut:

    • Bagian Checks mencantumkan setiap pemeriksaan awal yang dijalankan dan apakah pemeriksaan tersebut berhasil atau tidak. Dalam contoh ini, pemeriksaan berikut dijalankan:
      • 192.0.2.53 dan 192.0.2.54: pemeriksaan node (konfigurasi OS, resource, dan setelan software) untuk komputer dengan alamat IP 192.0.2.53 dan 192.0.2.54.
      • 192.0.2.53-gpc dan 192.0.2.54-gcp:pemeriksaan konektivitas Google Cloud (akses Google API dan Artifact Registry) untuk mesin dengan alamat IP 192.0.2.53 dan 192.0.2.54.
      • Gcp: Google Cloud pemeriksaan konektivitas untuk cluster.
      • Node - Network: Pemeriksaan jaringan (konektivitas, operasi etcd, akses VIP, dan pengikatan port) untuk cluster.
      • Pod - Cidr: Pemeriksaan alamat IP Pod untuk alamat yang tumpang-tindih untuk cluster.
    • Bagian Cluster Spec menampilkan konfigurasi cluster.
    • Kolom Pass menampilkan true, yang menunjukkan bahwa pemeriksaan pra-penerbangan berhasil secara keseluruhan.

Log pemeriksaan preflight

Saat pemeriksaan awal dijalankan sebagai hasil dari perintah bmctl, seperti bmctl check preflight, Google Distributed Cloud akan membuat file log. Berikut yang dihasilkan dan tempatnya:

  • Log pemeriksaan pra-penerbangan dibuat di direktori dengan pola penamaan berikut preflight-TIMESTAMP.

  • Direktori pra-penerbangan ini dibuat di direktori log untuk cluster di ruang kerja bmctl. Secara default, jalur direktori log adalah bmctl-workspace/CLUSTER_NAME/log.

  • Log pra-penerbangan terdiri dari file berikut:

    • File log untuk pemeriksaan mesin node, satu untuk setiap node cluster. File log ini diberi nama menggunakan alamat IP node. Misalnya, nama file mungkin 192.0.2.53.

    • File log untuk pemeriksaan akses Google Cloud , satu untuk setiap node cluster. File log ini diberi nama menggunakan alamat IP node. Misalnya, nama file mungkin 192.0.2.53-gcp.

    • File log untuk pemeriksaan akses cluster Google Cloud , yang diberi nama gcp.

    • File log untuk pemeriksaan jaringan node, yang diberi nama node-network.

Jika pemeriksaan pra-penerbangan gagal, file log ini dapat membantu Anda mengidentifikasi dan memecahkan masalah.

Pemeriksaan awal untuk pembuatan cluster

Saat Anda membuat cluster, Google Distributed Cloud akan otomatis menjalankan pemeriksaan pra-penerbangan sebelum perubahan dilakukan.

Apa yang diperiksa?

Pemeriksaan awal untuk penginstalan memeriksa hal berikut:

  • Pemeriksaan mesin node:

    • Komputer cluster menggunakan sistem operasi (OS) yang didukung.

    • Versi OS didukung.

    • OS menggunakan versi kernel yang didukung.

    • Untuk Ubuntu, Uncomplicated Firewall (UFW) dinonaktifkan.

    • Untuk Ubuntu, pengelola paket apt dapat dioperasikan dan paket yang diperlukan tersedia.

    • Untuk Red Hat Enterprise Linux, pengelola paket dnf dapat dioperasikan dan paket yang diperlukan tersedia.

    • Untuk Red Hat Enterprise Linux, Podman tidak diinstal.

    • Mesin node memenuhi persyaratan CPU minimum.

    • Mesin node memenuhi persyaratan memori minimum.

    • Mesin node memenuhi persyaratan penyimpanan disk minimum.

    • Sinkronisasi waktu dikonfigurasi di komputer node.

    • kubelet aktif dan berjalan di mesin node.

    • containerd aktif dan berjalan di mesin node.

    • Rute default untuk merutekan paket ke gateway default ada di node.

    • Domain Name System (DNS) berfungsi dengan baik. Jika cluster dikonfigurasi untuk berjalan di belakang proxy, pemeriksaan ini akan dilewati.

    • CIDR Pod tidak tumpang-tindih dengan alamat IP mesin node.

    • Jika cluster dikonfigurasi untuk menggunakan mirror registry, mirror registry dapat dijangkau.

  • Google Cloud pemeriksaan untuk setiap node dan untuk cluster:

    • Artifact Registry, gcr.io, jangkauan diperiksa. Jika cluster dikonfigurasi untuk menggunakan mirror registry, pemeriksaan ini akan dilewati.

    • Google API dapat dijangkau.

  • Pemeriksaan jaringan node (bervariasi berdasarkan konfigurasi load balancing):

    • VIP untuk server Kubernetes API dapat diakses.

    • VIP load balancer dapat diakses.

    • Node dapat berkomunikasi di port yang diperlukan.

    • Instance peristiwa etcd disediakan dan persyaratan port terpenuhi.

Jika semua pemeriksaan lulus, Google Distributed Cloud akan membuat cluster. Untuk mengetahui informasi selengkapnya tentang persyaratan untuk membuat cluster, lihat Ringkasan prasyarat penginstalan.

Menjalankan pemeriksaan preflight sesuai permintaan untuk pembuatan cluster

Anda juga dapat menjalankan pemeriksaan pra-penerbangan secara terpisah, sebelum membuat cluster. Tindakan ini dapat bermanfaat karena operasi cluster utama, seperti pembuatan cluster, memerlukan waktu yang lama. Mengidentifikasi dan menyelesaikan masalah secara terpisah sebelum memulai operasi cluster utama dapat membantu Anda dalam penjadwalan.

Cluster yang dikelola sendiri

  • Perintah berikut memvalidasi file konfigurasi cluster yang ditentukan, tetapi tidak mencoba membuat cluster itu sendiri:

    bmctl check config --cluster CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama cluster yang terkait dengan file konfigurasi yang Anda periksa.

  • Perintah ini memeriksa apakah mesin dan jaringan siap untuk pembuatan cluster:

    bmctl check preflight --cluster CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama cluster yang Anda periksa.

Cluster pengguna

  • Perintah berikut memvalidasi file konfigurasi cluster yang ditentukan, tetapi tidak mencoba membuat cluster itu sendiri:

    bmctl check config --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster pengguna yang Anda periksa.
    • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin terkait.
  • Perintah berikut memeriksa apakah mesin dan jaringan siap untuk pembuatan cluster:

    bmctl check preflight --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
    

bmctl mendukung penggunaan --kubeconfig sebagai alias untuk flag--admin-kubeconfig.

Pemeriksaan awal untuk upgrade cluster

Saat Anda mengupgrade cluster, Google Distributed Cloud akan otomatis menjalankan pemeriksaan pra-penerbangan sebelum perubahan dilakukan.

Apa yang diperiksa?

Pemeriksaan awal untuk upgrade cluster memeriksa hal berikut:

  • Pemeriksaan mesin node:

    • Komputer cluster menggunakan sistem operasi (OS) yang didukung.

    • Versi OS didukung.

    • OS menggunakan versi kernel yang didukung.

    • Untuk Ubuntu, Uncomplicated Firewall (UFW) dinonaktifkan.

    • Mesin node memenuhi persyaratan CPU minimum.

    • Mesin node memiliki lebih dari 20% resource CPU yang tersedia.

    • Mesin node memenuhi persyaratan memori minimum.

    • Mesin node memenuhi persyaratan penyimpanan disk minimum.

    • Sinkronisasi waktu dikonfigurasi di komputer node.

    • Rute default untuk merutekan paket ke gateway default ada di node.

    • Domain Name System (DNS) berfungsi dengan baik. Jika cluster dikonfigurasi untuk berjalan di belakang proxy, pemeriksaan ini akan dilewati.

    • Jika cluster dikonfigurasi untuk menggunakan mirror registry, mirror registry dapat dijangkau.

    • Tidak ada node bidang kontrol atau node load balancer dalam mode pemeliharaan.
  • Google Cloud pemeriksaan untuk setiap node dan untuk cluster:

    • Artifact Registry, gcr.io, jangkauan diperiksa. Jika cluster dikonfigurasi untuk menggunakan mirror registry, pemeriksaan ini akan dilewati.

    • Google API dapat dijangkau.

  • Pemeriksaan mesin:

    • kubelet aktif dan berjalan di mesin node.

    • containerd aktif dan berjalan di mesin node.

    • Status endpoint kesehatan Antarmuka Jaringan Container (CNI) adalah sehat.

    • CIDR Pod tidak tumpang-tindih dengan alamat IP mesin node.

    • Masa berlaku sertifikat kubeadm belum berakhir.
  • Pemeriksaan jaringan node (bervariasi berdasarkan konfigurasi load balancing):

    • VIP untuk server Kubernetes API dapat diakses.

    • VIP load balancer dapat diakses.

    • Node dapat berkomunikasi di port yang diperlukan.

    • Instance peristiwa etcd disediakan dan persyaratan port terpenuhi.

Jika semua pemeriksaan lulus, Google Distributed Cloud akan mengupgrade cluster. Untuk mengetahui informasi selengkapnya tentang cara mengupgrade cluster, lihat Praktik terbaik untuk upgrade cluster Google Distributed Cloud dan Siklus proses dan tahap upgrade cluster.

Menjalankan pemeriksaan preflight sesuai permintaan untuk upgrade cluster

Perintah bmctl check preflight memungkinkan Anda menjalankan pemeriksaan preflight sebelum mengupgrade cluster. Anda dapat memeriksa apakah cluster siap untuk upgrade dengan menjalankan perintah pemeriksaan pra-penerbangan berikut sebelum memulai upgrade:

  1. Perbarui versi cluster (anthosBareMetalVersion) dalam file konfigurasi cluster.

  2. Gunakan perintah berikut untuk memeriksa apakah cluster siap diupgrade dan menjalankan pemeriksaan pra-penerbangan:

    bmctl check preflight --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang akan diupgrade.
    • ADMIN_KUBECONFIG: jalur ke file kubeconfig cluster admin.

    Saat Anda membuat pemeriksaan pra-penerbangan dengan perintah ini untuk menguji upgrade cluster, resource kustom PreflightCheck akan dibuat di cluster admin.

Pemeriksaan preflight internal pada cluster yang ada

Google Distributed Cloud melakukan pemeriksaan pendahuluan internal secara otomatis saat Anda menerapkan resource Kubernetes ke cluster yang ada. Jika ada pemeriksaan yang gagal, Google Distributed Cloud tidak akan mengubah node terkait, kecuali jika Anda melewati pemeriksaan secara eksplisit.

Melewati pemeriksaan awal saat menerapkan resource Kubernetes

Untuk mengabaikan pemeriksaan awal internal saat menerapkan resource ke cluster yang ada, Anda perlu menyetel kolom BypassPreflightCheck ke true dalam file konfigurasi cluster.

Berikut adalah bagian dari file konfigurasi cluster yang menunjukkan kolom bypassPreflightCheck yang ditetapkan ke true:

apiVersion: v1
kind: Namespace
metadata:
  name: cluster-user1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: user1
  namespace: cluster-user1
spec:
  type: user
  bypassPreflightCheck: true
  # Anthos cluster version.
  anthosBareMetalVersion: 1.33.100-gke.89
...

Menjalankan pemeriksaan pra-peluncuran terbaru

Pemeriksaan pra-penerbangan (dan health check) diperbarui saat masalah umum diidentifikasi. Untuk mengarahkan bmctl agar menjalankan pemeriksaan dari image patch terbaru dari versi minor yang diinstal, gunakan tanda opsi --check-image-version latest:

bmctl check preflight --cluster CLUSTER_NAME --check-image-version latest

Ganti CLUSTER_NAME dengan nama cluster yang Anda periksa.

Hal ini dapat membantu Anda mengatasi masalah umum yang baru-baru ini diidentifikasi tanpa perlu membuat atau mengupgrade cluster terlebih dahulu.

Anda juga dapat melakukan health check terbaru pada cluster aktif untuk menentukan apakah cluster tersebut beroperasi dengan benar. Untuk mengetahui informasi selengkapnya, lihat Menjalankan health check terbaru.

Mengabaikan hasil pemeriksaan awal otomatis

Jika Anda menjalankan pemeriksaan pra-penerbangan sesuai permintaan sebelum membuat atau mengupgrade cluster, Anda dapat melewati pemeriksaan pra-penerbangan otomatis. Untuk melewati pemeriksaan pendahuluan otomatis, gunakan tanda --force opsional saat Anda menjalankan bmctl create cluster atau bmctl upgrade cluster.

Langkah berikutnya