Pemeriksaan pra-penerbangan

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 situasi 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 resource cluster dan node pool dengan bmctl. Jika pemeriksaan gagal, tidak ada perubahan yang dilakukan. Anda juga dapat mengabaikan pemeriksaan ini, atau menjalankannya secara eksplisit.

  • Google Distributed Cloud juga menjalankan pemeriksaan pra-penerbangan internal saat admin atau cluster campuran 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.

Resource kustom PreflightCheck

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

Untuk mengambil resource kustom PreflightCheck:

  1. Dapatkan daftar pemeriksaan pra-penerbangan yang telah berjalan 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 berdasarkan namespace. Anda dapat menjalankan kubectl get preflightchecks di semua namespace untuk mendapatkan daftar yang komprehensif. Untuk setiap resource, respons akan menampilkan usia resource dan apakah pemeriksaan pra-penerbangan lulus atau tidak. Contoh respons berikut menunjukkan 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 pra-penerbangan yang berhasil 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 pra-penerbangan yang dijalankan dan apakah pemeriksaan tersebut lulus 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 mesin 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 Container Registry dan Google API) untuk mesin dengan alamat IP 192.0.2.53 dan 192.0.2.54.
      • Gcp: Konektivitas Google Cloud memeriksa cluster.
      • Node - Network: Pemeriksaan jaringan (konektivitas, operasi etcd, akses VIP, dan binding port) untuk cluster.
      • Pod - Cidr: Alamat IP pod memeriksa alamat yang tumpang-tindih untuk cluster.
    • Bagian Cluster Spec menampilkan konfigurasi cluster.
    • Kolom Pass menampilkan true, yang menunjukkan bahwa pemeriksaan pra-penerbangan lulus secara kolektif.

Log pemeriksaan pra-penerbangan

Saat pemeriksaan pra-penerbangan berjalan sebagai hasil dari perintah bmctl, seperti bmctl check preflight, Google Distributed Cloud akan membuat file log. Berikut ini yang dihasilkan dan tempatnya:

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

  • 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 Google Cloud cluster, 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 pra-penerbangan untuk pembuatan cluster

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

Apa yang diperiksa?

Pemeriksaan pra-penerbangan untuk penginstalan memeriksa hal berikut:

  • Pemeriksaan mesin node:

    • Mesin 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 mesin 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 balik proxy, pemeriksaan ini akan dilewati.

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

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

  • Google Cloud memeriksa setiap node dan cluster:

    • Container Registry, gcr.io, keterjangkauan 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 informasi selengkapnya tentang persyaratan untuk membuat cluster, lihat Ringkasan prasyarat penginstalan.

Menjalankan pemeriksaan pra-penerbangan on demand 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, memakan waktu. 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 pra-penerbangan untuk upgrade cluster

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

Apa yang diperiksa?

Pemeriksaan pra-penerbangan untuk upgrade cluster memeriksa hal berikut:

  • Pemeriksaan mesin node:

    • Mesin 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 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 balik 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 yang berada dalam mode pemeliharaan.

  • Google Cloud memeriksa setiap node dan cluster:

    • Container Registry, gcr.io, keterjangkauan 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) baik.

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

  • 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 pra-penerbangan on demand untuk upgrade cluster

Perintah bmctl check preflight memungkinkan Anda menjalankan pemeriksaan pra-penerbangan sebelum mengupgrade cluster. Anda dapat memeriksa apakah cluster siap untuk diupgrade 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 untuk 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 pra-penerbangan internal pada cluster yang ada

Google Distributed Cloud melakukan pemeriksaan pra-penerbangan 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 mengabaikan pemeriksaan secara eksplisit.

Melewati pemeriksaan pra-penerbangan saat menerapkan resource Kubernetes

Untuk mengabaikan pemeriksaan pra-penerbangan internal saat menerapkan resource ke cluster yang ada, Anda perlu menetapkan kolom BypassPreflightCheck ke true dalam file konfigurasi cluster.

Berikut adalah bagian dari file konfigurasi cluster yang menampilkan 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.30.400-gke.133
...

Menjalankan pemeriksaan pra-penerbangan 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 menemukan masalah umum yang baru-baru ini diidentifikasi tanpa membuat atau mengupgrade cluster terlebih dahulu.

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

Mengabaikan hasil pemeriksaan pra-penerbangan otomatis

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

Langkah selanjutnya