Pemeriksaan awal

Pemeriksaan {i>preflight<i} adalah tindakan pencegahan untuk membantu mengidentifikasi masalah sebelum Anda memulai operasi cluster besar, seperti membuat atau mengupgrade cluster. Kapan pemeriksaan ini berjalan secara otomatis sebelum operasi, tidak ada perubahan cluster Anda kecuali preflight memeriksa semuanya lulus. Anda juga dapat menjalankan {i>preflight<i} pemeriksaan sesuai permintaan.

Dokumen ini menjelaskan setiap pemeriksaan, dalam keadaan apa operasi itu dijalankan secara otomatis, bagaimana dan kapan harus menjalankannya secara manual, dan bagaimana menafsirkan hasilnya.

Di Google Distributed Cloud, Anda dapat menjalankan pemeriksaan preflight untuk berbagai situasi:

  • Google Distributed Cloud menjalankan pemeriksaan preflight saat Anda membuat atau mengupgrade cluster dan resource kumpulan node dengan bmctl. Jika pemeriksaan gagal, tidak perubahan dilakukan. Anda juga dapat mengabaikan pemeriksaan ini atau menjalankannya secara eksplisit.

  • Google Distributed Cloud juga menjalankan pemeriksaan preflight internal saat admin atau cluster hybrid membuat atau mengupdate resource Kubernetes di cluster pengguna. Tujuan akan dijalankan sebelum perubahan diterapkan pada cluster pengguna yang terpengaruh. Jika pemeriksaan gagal, tidak ada perubahan yang dilakukan.

PreflightCheck resource kustom

Saat pemeriksaan preflight berjalan, Google Distributed Cloud akan membuat PreflightCheck resource kustom. Resource kustom PreflightCheck bersifat persisten dan menyediakan catatan aktivitas dan hasil pemeriksaan preflight.

Untuk mengambil resource kustom PreflightCheck:

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

    kubectl get preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

    • ADMIN_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.
    • CLUSTER_NAMESPACE: namespace cluster.

    Respons akan mencantumkan resource berdasarkan namespace. Anda dapat menjalankan kubectl get preflightchecks di semua namespace untuk daftar lengkap. Untuk setiap respons menunjukkan usia resource dan apakah lulus pemeriksaan preflight. 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 cluster admin {i>kubeconfig<i}.
    • CLUSTER_NAMESPACE: namespace cluster.

    Contoh respons perintah berikut menunjukkan resource PreflightCheck untuk pemeriksaan preflight yang berhasil dan berjalan 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>
    

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

    • Bagian Checks mencantumkan setiap pemeriksaan preflight yang dijalankan dan apakah mereka lulus atau tidak. Dalam contoh ini, pemeriksaan berikut berjalan:
      • 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: Konektivitas Google Cloud pemeriksaan (akses Container Registry dan Google API) untuk komputer dengan Alamat IP 192.0.2.53 dan 192.0.2.54.
      • Gcp: Pemeriksaan konektivitas Google Cloud untuk cluster.
      • Node - Network: Pemeriksaan jaringan (konektivitas, operasi etcd, akses VIP, dan binding port) untuk cluster.
      • Pod - Cidr: Pemeriksaan alamat IP pod untuk menemukan alamat yang tumpang-tindih gugus ini.
    • Bagian Cluster Spec menunjukkan konfigurasi cluster.
    • Kolom Pass menampilkan true, yang menunjukkan bahwa pemeriksaan preflight yang disahkan secara kolektif.

Log pemeriksaan preflight

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

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

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

  • Log preflight terdiri dari file berikut:

    • File log untuk pemeriksaan mesin node, satu file untuk setiap node cluster. Catatan ini file diberi nama menggunakan alamat IP {i>node<i} tersebut. Sebagai contoh, mungkin 192.0.2.53.

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

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

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

Jika pemeriksaan {i>preflight<i} gagal, {i>file<i} log ini dapat membantu Anda mengidentifikasi dan memecahkan masalah.

Pemeriksaan preflight untuk pembuatan cluster

Jika Anda membuat cluster, Google Distributed Cloud secara otomatis menjalankan pemeriksaan preflight sebelum perubahan apa pun dilakukan.

Apa yang diperiksa?

Pemeriksaan preflight untuk penginstalan memeriksa hal berikut:

  • Pemeriksaan mesin node:

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

    • Versi OS didukung.

    • OS menggunakan versi {i>kernel<i} yang didukung.

    • Untuk Ubuntu, Uncomplicated Firewall (UFW) dinonaktifkan.

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

    • Untuk Red Hat Enterprise Linux, pengelola paket dnf dapat dioperasikan dan paket yang diperlukan juga 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 pada mesin {i>node<i}.

    • kubelet aktif dan berjalan di mesin node.

    • containerd aktif dan berjalan di mesin node.

    • Ada rute default untuk mengarahkan paket ke gateway default di node.

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

    • CIDR pod tidak tumpang tindih dengan alamat IP mesin node.

    • Jika cluster dikonfigurasi untuk menggunakan duplikat registry, mirror bisa dijangkau.

  • Google Cloud akan memeriksa setiap node dan cluster:

    • Container Registry, gcr.io, keterjangkauan diperiksa. Jika cluster tersebut dikonfigurasi untuk menggunakan duplikat registry, pemeriksaan ini 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 pada porta yang diperlukan.

    • Instance peristiwa etcd disediakan dan persyaratan port terpenuhi.

Setelah semua pemeriksaan lulus, Google Distributed Cloud akan membuat cluster. Untuk selengkapnya informasi tentang persyaratan untuk membuat cluster, lihat Penginstalan ringkasan prasyarat.

Menjalankan pemeriksaan preflight on-demand untuk pembuatan cluster

Anda juga dapat menjalankan pemeriksaan preflight secara independen, sebelum membuat cluster. Hal ini dapat bermanfaat untuk operasi cluster utama, seperti operasi cluster dan memakan waktu. Mengidentifikasi dan menyelesaikan masalah secara terpisah sebelum memulai operasi cluster besar dapat membantu Anda dalam penjadwalan.

Cluster yang dikelola sendiri

  • Perintah berikut memvalidasi 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 komputer dan jaringan sudah 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 yang Anda periksa.
    • ADMIN_KUBECONFIG: jalur yang terkait file kubeconfig cluster admin.
  • Perintah berikut memeriksa apakah mesin dan jaringan sudah 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 preflight untuk upgrade cluster

Saat Anda mengupgrade cluster, Google Distributed Cloud secara otomatis menjalankan pemeriksaan preflight sebelum perubahan apa pun dibuat.

Apa yang diperiksa?

Pemeriksaan preflight untuk upgrade cluster memeriksa hal berikut:

  • Pemeriksaan mesin node:

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

    • Versi OS didukung.

    • OS menggunakan versi {i>kernel<i} 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 pada mesin {i>node<i}.

    • Ada rute default untuk mengarahkan paket ke gateway default di node.

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

    • Jika cluster dikonfigurasi untuk menggunakan duplikat registry, mirror bisa dijangkau.

    * Tidak ada node bidang kontrol atau node load balancer yang berada dalam mode pemeliharaan.

  • Google Cloud akan memeriksa setiap node dan cluster:

    • Container Registry, gcr.io, keterjangkauan diperiksa. Jika cluster tersebut dikonfigurasi untuk menggunakan duplikat registry, pemeriksaan ini dilewati.

    • Google API dapat dijangkau.

  • Pemeriksaan komputer:

    • kubelet aktif dan berjalan di mesin node.

    • containerd aktif dan berjalan di mesin node.

    • Status endpoint kondisi Antarmuka Jaringan Container (CNI) responsif.

    • CIDR pod tidak tumpang tindih dengan alamat IP mesin node.

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

    • VIP untuk server Kubernetes API dapat diakses.

    • VIP load balancer dapat diakses.

    • Node dapat berkomunikasi pada porta yang diperlukan.

    • Instance peristiwa etcd disediakan dan persyaratan port terpenuhi.

Setelah semua pemeriksaan lulus, Google Distributed Cloud akan mengupgrade cluster. Untuk selengkapnya tentang cara mengupgrade cluster, lihat Praktik terbaik untuk Cluster Google Distributed Cloud upgrade dan Siklus proses dan stage upgrade cluster.

Menjalankan pemeriksaan preflight on-demand untuk upgrade cluster

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

  1. Update versi cluster (anthosBareMetalVersion) di cluster file konfigurasi Anda.

  2. Gunakan perintah berikut untuk memeriksa apakah cluster siap diupgrade dan menjalankan pemeriksaan preflight:

    bmctl check preflight --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang akan diupgrade.
    • ADMIN_KUBECONFIG: jalur ke cluster admin {i>kubeconfig<i}.

    Saat Anda membuat pemeriksaan preflight dengan perintah ini untuk menguji cluster saat upgrade, resource kustom PreflightCheck dibuat di cluster admin.

Pemeriksaan preflight internal pada cluster yang ada

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

Abaikan pemeriksaan preflight saat menerapkan resource Kubernetes

Untuk mengabaikan pemeriksaan preflight internal saat menerapkan resource ke yang ada cluster, Anda perlu menetapkan kolom BypassPreflightCheck ke true di file konfigurasi cluster Anda.

Berikut adalah bagian dari file konfigurasi cluster yang menampilkan Kolom bypassPreflightCheck 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.0-gke.1930
...

Menjalankan pemeriksaan preflight terbaru

Pemeriksaan preflight (dan health check) diperbarui saat masalah umum teridentifikasi. Untuk mengarahkan bmctl agar menjalankan pemeriksaan dari image patch terbaru Anda yang terinstal, gunakan tanda opsi --check-image-version latest:

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

Ganti CLUSTER_NAME dengan nama cluster yang yang Anda periksa.

Hal ini dapat membantu Anda menemukan masalah umum yang baru-baru ini teridentifikasi tanpa terlebih dahulu membuat atau mengupgrade cluster Anda.

Anda juga dapat melakukan health check terbaru pada cluster live untuk menentukan apakah beroperasi dengan baik. Untuk informasi selengkapnya, lihat Jalankan health check terbaru.

Mengabaikan hasil pemeriksaan preflight otomatis

Jika Anda menjalankan pemeriksaan preflight secara on demand sebelum membuat atau mengupgrade cluster, dapat mengabaikan pemeriksaan preflight otomatis. Untuk mengabaikan pemeriksaan preflight otomatis, gunakan flag --force opsional saat Anda menjalankan bmctl create cluster atau bmctl upgrade cluster.

Langkah selanjutnya