Health check

Health check adalah cara untuk menguji dan memantau pengoperasian aplikasi klaster. Health check berjalan sendiri secara berkala. Anda juga dapat menggunakan bmctl untuk menjalankan health check on demand. Dokumen ini menjelaskan setiap pemeriksaan, dalam hal apa keadaan dijalankan secara otomatis, bagaimana dan kapan harus menjalankannya secara manual, dan bagaimana menafsirkan hasilnya.

Apa yang diperiksa?

Terdapat dua kategori health check Google Distributed Cloud:

  • Pemeriksaan mesin node

  • Pemeriksaan di seluruh cluster

Bagian berikut menguraikan hal-hal yang diperiksa untuk setiap kategori. Pemeriksaan ini digunakan untuk health check berkala dan on demand.

Pemeriksaan mesin node

Bagian ini menjelaskan hal yang dievaluasi oleh health check untuk mesin node. Pemeriksaan ini mengonfirmasi bahwa komputer {i>node<i} dikonfigurasi dengan benar dan bahwa mesin memiliki resource dan konektivitas yang memadai untuk pembuatan cluster, cluster upgrade, dan operasi cluster.

Pemeriksaan ini sesuai dengan resource kustom HealthCheck Bare Metal yang bernama bm-system-NODE_IP_ADDRESS-machine (misalnya, bm-system-192.0.2.54-machine) yang berjalan di cluster admin pada cluster namespace. Untuk mengetahui informasi selengkapnya tentang referensi health check, lihat HealthCheck resource kustom.

Pemeriksaan mesin yang umum terdiri dari hal berikut:

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

  • Versi OS didukung.

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

  • Kernel memiliki opsi compiler BPF Just In Time (JIT) yang diaktifkan (CONFIG_BPF_JIT=y).

  • 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 (pemeriksaan ini dilewati jika cluster dikonfigurasikan untuk berjalan di belakang proxy).

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

Pemeriksaan komputer Google Cloud terdiri dari hal berikut:

  • Container Registry, gcr.io dapat dijangkau (pemeriksaan ini dilewati jika cluster dikonfigurasi untuk menggunakan duplikat registry).

  • Google API dapat dijangkau.

Health check mesin terdiri dari hal berikut:

  • 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.

Untuk informasi selengkapnya tentang persyaratan mesin node, lihat Node cluster prasyarat mesin.

Pemeriksaan di seluruh cluster

Bagian ini menjelaskan hal-hal yang dievaluasi oleh health check untuk cluster.

Pemeriksaan jaringan

Pemeriksaan jaringan node cluster sisi klien berikut berjalan secara otomatis sebagai bagian health check berkala. Pemeriksaan jaringan tidak dapat dijalankan secara on demand. Pemeriksaan ini sesuai dengan resource kustom HealthCheck Bare Metal bernama bm-system-network yang berjalan di cluster admin di namespace cluster. Sebagai Informasi selengkapnya tentang referensi health check, lihat HealthCheck resource.

  • Jika cluster menggunakan load balancing yang dipaketkan, node dalam node load balancing kumpulan data harus memiliki konektivitas Layer 2 address resolution protocol (ARP). ARP diperlukan untuk penemuan VIP.

  • Node bidang kontrol memiliki porta 8443 dan 8444 yang terbuka untuk digunakan oleh GKE Identity Service.

  • Node bidang kontrol memiliki porta 2382 dan 2383 yang terbuka untuk digunakan oleh Instance etcd-events.

Untuk mengetahui informasi tentang protokol dan penggunaan port untuk Google Distributed Cloud cluster, lihat Persyaratan jaringan.

Pemeriksaan jaringan untuk pemeriksaan preflight berbeda dengan health check jaringan. Untuk daftar pemeriksaan jaringan untuk pemeriksaan preflight, lihat Pemeriksaan preflight untuk pembuatan cluster atau Pemeriksaan preflight untuk upgrade cluster.

Kubernetes

Pemeriksaan Kubernetes, yang berjalan secara otomatis sebagai bagian dari preflight dan periode health check, juga dapat dijalankan secara on-demand. Ini health check tidak menampilkan error jika salah satu bidang kontrol yang tercantum komponennya hilang. Pemeriksaan hanya menampilkan error jika komponen ada dan memiliki kesalahan pada waktu {i>command-execution<i}.

Pemeriksaan ini sesuai dengan resource kustom HealthCheck Bare Metal yang bernama bm-system-kubernetesresource yang berjalan di cluster admin di cluster namespace. Untuk mengetahui informasi selengkapnya tentang referensi health check, lihat HealthCheck resource kustom.

  • Server API berfungsi.

  • Operator anetd dikonfigurasi dengan benar.

  • Semua node bidang kontrol dapat dioperasikan.

  • Komponen bidang kontrol berikut berfungsi dengan baik:

    • anthos-cluster-operator

    • controller-manager

    • cluster-api-provider

    • ais

    • capi-kubeadm-bootstrap-system

    • cert-manager

    • kube-dns

Add-on

Pemeriksaan add-on berjalan secara otomatis sebagai bagian dari pemeriksaan preflight dan kondisi berkala pemeriksaan dan dapat dijalankan secara on-demand. Health check ini tidak menampilkan error jika salah satu add-on yang tercantum tidak ada. Hanya pemeriksaan mengembalikan kesalahan jika add-on ada dan memiliki kesalahan pada waktu eksekusi perintah.

Pemeriksaan ini sesuai dengan resource kustom HealthCheck Bare Metal yang bernama bm-system-add-ons*resource yang berjalan di cluster admin di cluster namespace. Untuk mengetahui informasi selengkapnya tentang referensi health check, lihat HealthCheck resource kustom.

  • Komponen Stackdriver Cloud Logging dan Agen Connect dapat dioperasikan:

    • stackdriver-log-aggregator

    • stackdriver-log-forwarder

    • stackdriver-metadata-agent

    • stackdriver-prometheus-k8

    • gke-connect-agent

  • Resource yang dikelola Google Distributed Cloud tidak menunjukkan perubahan manual (penyimpangan konfigurasi):

    • Nilai kolom belum diperbarui

    • Kolom opsional belum ditambahkan atau dihapus

    • Referensi belum dihapus

Jika health check mendeteksi penyimpangan konfigurasi, Bare Metal bm-system-add-ons Nilai Status.Pass resource kustom HealthCheck ditetapkan ke false. Tujuan Kolom Description di bagian Failures berisi detail tentang resource yang telah berubah, termasuk informasi berikut:

  • Version: versi API untuk resource.
  • Kind: skema objek, seperti Deployment, untuk resource.
  • Namespace: namespace tempat resource berada.
  • Name: nama resource.
  • Diff: perbandingan format string untuk perbedaan antara resource manifes pada rekaman dan manifes untuk sumber daya yang diubah.

HealthCheck resource kustom

Saat health check berjalan, Google Distributed Cloud akan membuat HealthCheck kustom resource Anda HealthCheck resource kustom bersifat persisten dan menyediakan resource catatan aktivitas dan hasil health check. Ada dua kategori HeathCheck resource kustom:

  • Referensi kustom HealthCheck Bare Metal (API Version: baremetal.cluster.gke.io/v1): referensi ini memberikan detail tentang melakukan health check secara berkala. Resource ini ada di cluster admin dalam cluster namespace. Resource HealthCheck Bare Metal bertanggung jawab untuk membuat {i>cron job <i}dan {i>health check<i}. Referensi ini diperbarui secara konsisten dengan hasil terbaru.

  • Referensi kustom HealthCheck Anthos (API Version: anthos.gke.io/v1): referensi ini digunakan untuk melaporkan metrik health check. Resource ini bersifat di namespace kube-system setiap cluster. Pembaruan sumber daya ini adalah upaya terbaik. Jika update gagal menampilkan masalah, misalnya update sementara error jaringan, kegagalan akan diabaikan.

Tabel berikut mencantumkan jenis resource yang dibuat untuk Kategori HealthCheck:

HealthCheck Bare Metal HealthCheck GKE Enterprise Keparahan

Jenis: machine

Nama: bm-system-NODE_IP_ADDRESS-machine

Jenis: machine

Nama: bm-system-NODE_IP_ADDRESS-machine

Kritis

Jenis: network

Nama: bm-system-network

Jenis: network

Nama: bm-system-network

Kritis

Jenis: kubernetes

Nama: bm-system-kubernetes

Jenis: kubernetes

Nama: bm-system-kubernetes

Kritis

Jenis: add-on

Nama: bm-system-add-ons

Jenis: add-on

Nama: bm-system-add-ons-add-ons

Nama: bm-system-add-ons-configdrift

Opsional

Untuk mengambil status HealthCheck:

  1. Untuk membaca hasil health check berkala, Anda bisa mendapatkan resource kustom:

    kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig ADMIN_KUBECONFIG --all-namespaces
    

    Ganti ADMIN_KUBECONFIG dengan jalur admin file kubeconfig cluster.

    Contoh berikut menunjukkan health check yang berjalan secara berkala dan apakah pemeriksaan lulus saat terakhir kali dijalankan:

    NAMESPACE               NAME                               PASS    AGE
    cluster-test-admin001   bm-system-192.0.2.52-machine       true    11d
    cluster-test-admin001   bm-system-add-ons                  true    11d
    cluster-test-admin001   bm-system-kubernetes               true    11d
    cluster-test-admin001   bm-system-network                  true    11d
    cluster-test-user001    bm-system-192.0.2.53-machine       true    56d
    cluster-test-user001    bm-system-192.0.2.54-machine       true    56d
    cluster-test-user001    bm-system-add-ons                  true    56d
    cluster-test-user001    bm-system-kubernetes               true    56d
    cluster-test-user001    bm-system-network                  true    56d
    
  2. Untuk membaca detail health check tertentu, gunakan kubectl describe:

    kubectl describe healthchecks.baremetal.cluster.gke.io HEALTHCHECK_NAME --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

    • HEALTHCHECK_NAME: nama health check.
    • ADMIN_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.
    • CLUSTER_NAMESPACE: namespace cluster.

    Saat Anda meninjau materi, bagian Status: berisi hal berikut {i>field <i}penting:

    • Pass: menunjukkan apakah tugas health check terakhir lulus atau tidak.
    • Checks: berisi informasi tentang tugas health check terbaru.
    • Failures: berisi informasi tentang tugas terbaru yang gagal.
    • Periodic: berisi informasi seperti kapan terakhir kali kesehatan pemeriksaan terjadwal dan diinstrumentasikan.

    Contoh HealthCheck berikut ditujukan agar pemeriksaan mesin berhasil:

    Name:         bm-system-192.0.2.54-machine
    Namespace:    cluster-test-user001
    Labels:       baremetal.cluster.gke.io/periodic-health-check=true
                  machine=192.0.2.54
                  type=machine
    Annotations:  <none>
    API Version:  baremetal.cluster.gke.io/v1
    Kind:         HealthCheck
    Metadata:
      Creation Timestamp:  2023-09-22T18:03:27Z
      ...
    Spec:
      Anthos Bare Metal Version:  1.16.0
      Cluster Name:               nuc-user001
      Interval In Seconds:        3600
      Node Addresses:
        192.168.1.54
      Type:  machine
    Status:
      Check Image Version:  1.16.0-gke.26
      Checks:
        192.168.1.54:
          Job UID:  345b74a6-ce8c-4300-a2ab-30769ea7f855
          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
      ...
      Conditions:
        Last Transition Time:  2023-11-22T17:53:18Z
        Observed Generation:   1
        Reason:                LastPeriodicHealthCheckFinished
        Status:                False
        Type:                  Reconciling
      Node Pool Specs:
        node-pool-1:
          Cluster Name:  nuc-user001
        ...
      Pass:                  true
      Periodic:
        Last Schedule Time:                    2023-11-22T17:53:18Z
        Last Successful Instrumentation Time:  2023-11-22T17:53:18Z
      Start Time:                              2023-09-22T18:03:28Z
    Events:
      Type    Reason                  Age                  From                    Message
      ----    ------                  ----                 ----                    -------
      Normal  HealthCheckJobFinished  6m4s (x2 over 6m4s)  healthcheck-controller  health check job bm-system-192.0.2.54-machine-28344593 finished
    

    Contoh HealthCheck berikut ditujukan untuk pemeriksaan mesin yang gagal:

    Name:         bm-system-192.0.2.57-machine
    Namespace:    cluster-user-cluster1
    ...
    API Version:  baremetal.cluster.gke.io/v1
    Kind:         HealthCheck
    ...
    Status:
      Checks:
        192.0.2.57:
          Job UID:  492af995-3bd5-4441-a950-f4272cb84c83
          Message:  following checks failed, ['check_kubelet_pass']
          Pass:     false
      Failures:
        Category:     AnsibleJobFailed
        Description:  Job: machine-health-check.
        Details:       Target: 1192.0.2.57. View logs with: [kubectl logs -n cluster-user-test bm-system-192.0.2.57-machine-28303170-qgmhn].
        Reason:       following checks failed, ['check_kubelet_pass']
      Pass:                  false
      Periodic:
        Last Schedule Time:                    2023-10-24T23:04:21Z
        Last Successful Instrumentation Time:  2023-10-24T23:31:30Z
      ...
    
  3. Untuk mendapatkan daftar health check untuk metrik, gunakan perintah berikut:

    kubectl get healthchecks.anthos.gke.io --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system
    

    Ganti CLUSTER_KUBECONFIG dengan jalur target file kubeconfig cluster.

    Contoh berikut menunjukkan format respons:

    NAMESPACE     NAME                                            COMPONENT   NAMESPACE   STATUS    LAST_COMPLETED
    kube-system   bm-system-10.200.0.3-machine                                            Healthy   56m
    kube-system   bm-system-add-ons-add-ons                                               Healthy   48m
    kube-system   bm-system-add-ons-configdrift                                           Healthy   48m
    kube-system   bm-system-kubernetes                                                    Healthy   57m
    kube-system   bm-system-kubernetes-1.16.1-non-periodic                                Healthy   25d
    kube-system   bm-system-network                                                       Healthy   32m
    kube-system   check-kubernetes-20231114-190445-non-periodic                           Healthy   3h6m
    kube-system   component-status-controller-manager                                     Healthy   5s
    kube-system   component-status-etcd-0                                                 Healthy   5s
    kube-system   component-status-etcd-1                                                 Healthy   5s
    kube-system   component-status-scheduler                                              Healthy   5s
    

cron job health check

Untuk health check berkala, setiap resource kustom HealthCheck bare metal memiliki sesuai CronJob dengan nama yang sama. CronJob ini bertanggung jawab untuk menjadwalkan health check yang sesuai untuk dijalankan pada interval yang ditetapkan. CronJob juga mencakup penampung ansible-runner yang menjalankan health check dengan membuat koneksi secure shell (SSH) ke node.

Untuk mengambil informasi tentang cron job:

  1. Dapatkan daftar cron job yang telah berjalan untuk cluster tertentu:

    kubectl get cronjobs --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

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

    Contoh berikut menunjukkan respons standar:

    NAMESPACE           NAME                           SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    cluster-test-admin   bm-system-10.200.0.3-machine   17 */1 * * *   False     0        11m             25d
    cluster-test-admin   bm-system-add-ons              25 */1 * * *   False     0        3m16s           25d
    cluster-test-admin   bm-system-kubernetes           16 */1 * * *   False     0        12m             25d
    cluster-test-admin   bm-system-network              41 */1 * * *   False     0        47m             25d
    

    Nilai dalam kolom SCHEDULE menunjukkan jadwal untuk setiap respons periksa jalannya tugas sintaksis jadwal. Misalnya, tugas bm-system-kubernetes berjalan pada 17 menit terakhir dari satu jam (17) setiap jam (*/1) setiap hari (* * *). Interval waktu untuk health check berkala tidak dapat diedit, tetapi berguna untuk memecahkan masalah untuk mengetahui kapan mereka harus berjalan.

  2. Ambil detail untuk resource kustom CronJob tertentu:

    kubectl describe cronjob CRONJOB_NAME --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

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

    Contoh berikut menunjukkan CronJob yang berhasil:

    Name:                          bm-system-network
    Namespace:                     cluster-test-admin
    Labels:                        AnthosBareMetalVersion=1.16.1
                                  baremetal.cluster.gke.io/check-name=bm-system-network
                                  baremetal.cluster.gke.io/periodic-health-check=true
                                  controller-uid=2247b728-f3f5-49c2-86df-9e5ae9505613
                                  type=network
    Annotations:                   target: node-network
    Schedule:                      41 */1 * * *
    Concurrency Policy:            Forbid
    Suspend:                       False
    Successful Job History Limit:  1
    Failed Job History Limit:      1
    Starting Deadline Seconds:     <unset>
    Selector:                      <unset>
    Parallelism:                   <unset>
    Completions:                   1
    Active Deadline Seconds:       3600s
    Pod Template:
      Labels:           baremetal.cluster.gke.io/check-name=bm-system-network
      Annotations:      target: node-network
      Service Account:  ansible-runner
      Containers:
      ansible-runner:
        Image:      gcr.io/anthos-baremetal-release/ansible-runner:1.16.1-gke.5
        Port:       <none>
        Host Port:  <none>
        Command:
          cluster
        Args:
          -execute-command=network-health-check
          -login-user=root
          -controlPlaneLBPort=443
        Environment:  <none>
        Mounts:
          /data/configs from inventory-config-volume (ro)
          /etc/ssh-key from ssh-key-volume (ro)
      Volumes:
      inventory-config-volume:
        Type:      ConfigMap (a volume populated by a ConfigMap)
        Name:      bm-system-network-inventory-bm-system-ne724a7cc3584de0635099
        Optional:  false
      ssh-key-volume:
        Type:            Secret (a volume populated by a Secret)
        SecretName:      ssh-key
        Optional:        false
    Last Schedule Time:  Tue, 14 Nov 2023 18:41:00 +0000
    Active Jobs:         <none>
    Events:
      Type    Reason            Age   From                Message
      ----    ------            ----  ----                -------
      Normal  SuccessfulCreate  48m   cronjob-controller  Created job bm-system-network-28333121
      Normal  SawCompletedJob   47m   cronjob-controller  Saw completed job: bm-system-network-28333121, status: Complete
      Normal  SuccessfulDelete  47m   cronjob-controller  Deleted job bm-system-network-28333061
    

Log health check

Saat dijalankan, health check akan membuat log. Apakah Anda menjalankan health check dengan bmctl atau berjalan secara otomatis sebagai bagian dari health check berkala, log akan dikirim ke Cloud Logging. Saat menjalankan health check on demand, file log dibuat dalam folder berstempel waktu di direktori log/ file folder di workstation admin Anda. Misalnya, jika Anda menjalankan perintah bmctl check kubernetes untuk cluster bernama test-cluster, Anda akan menemukan log di direktori seperti bmctl-workspace/test-cluster/log/check-kubernetes-20231103-165923.

Melihat log secara lokal

Anda dapat menggunakan kubectl untuk melihat log health check berkala:

  1. Dapatkan pod dan temukan pod health check tertentu yang Anda minati:

    kubectl get pods --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

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

    Contoh respons berikut menunjukkan beberapa pod health check:

    NAME                                                              READY   STATUS      RESTARTS   AGE
    bm-system-10.200.0.4-machine-28353626-lzx46                       0/1     Completed   0          12m
    bm-system-10.200.0.5-machine-28353611-8vjw2                       0/1     Completed   0          27m
    bm-system-add-ons-28353614-gxt8f                                  0/1     Completed   0          24m
    bm-system-check-kernel-gce-user001-02fd2ac273bc18f008192e177x2c   0/1     Completed   0          75m
    bm-system-cplb-init-10.200.0.4-822aa080-7a2cdd71a351c780bf8chxk   0/1     Completed   0          74m
    bm-system-cplb-update-10.200.0.4-822aa082147dbd5220b0326905lbtj   0/1     Completed   0          67m
    bm-system-gcp-check-create-cluster-202311025828f3c13d12f65k2xfj   0/1     Completed   0          77m
    bm-system-kubernetes-28353604-4tc54                               0/1     Completed   0          34m
    bm-system-kubernetes-check-bm-system-kub140f257ddccb73e32c2mjzn   0/1     Completed   0          63m
    bm-system-machine-gcp-check-10.200.0.4-6629a970165889accb45mq9z   0/1     Completed   0          77m
    ...
    bm-system-network-28353597-cbwk7                                  0/1     Completed   0          41m
    bm-system-network-health-check-gce-user05e0d78097af3003dc8xzlbd   0/1     Completed   0          76m
    bm-system-network-preflight-check-create275a0fdda700cb2b44b264c   0/1     Completed   0          77m
    
  2. Ambil log pod:

    kubectl logs POD_NAME  --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
    

    Ganti kode berikut:

    • POD_NAME: nama pod health check.
    • ADMIN_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.
    • CLUSTER_NAMESPACE: namespace cluster.

    Contoh berikut menunjukkan bagian log pod untuk mesin node yang berhasil pemeriksaan kesehatan:

    ...
    TASK [Summarize health check] **************************************************
    Wednesday 29 November 2023  00:26:22 +0000 (0:00:00.419)       0:00:19.780 ****
    ok: [10.200.0.4] => {
        "results": {
            "check_cgroup_pass": "passed",
            "check_cni_pass": "passed",
            "check_containerd_pass": "passed",
            "check_cpu_pass": "passed",
            "check_default_route": "passed",
            "check_disks_pass": "passed",
            "check_dns_pass": "passed",
            "check_docker_pass": "passed",
            "check_gcr_pass": "passed",
            "check_googleapis_pass": "passed",
            "check_kernel_version_pass": "passed",
            "check_kubelet_pass": "passed",
            "check_memory_pass": "passed",
            "check_pod_cidr_intersect_pass": "passed",
            "check_registry_mirror_reachability_pass": "passed",
            "check_time_sync_pass": "passed",
            "check_ubuntu_1804_kernel_version": "passed",
            "check_ufw_pass": "passed",
            "check_vcpu_pass": "passed"
        }
    }
    ...
    

    Contoh berikut menunjukkan bagian dari pod health check mesin node yang gagal log. Contoh menunjukkan bahwa pemeriksaan kubelet (check_kubelet_pass) gagal, yang menunjukkan bahwa kubelet tidak berjalan pada node ini.

    ...
    TASK [Reach a final verdict] ***************************************************
    Thursday 02 November 2023  17:30:19 +0000 (0:00:00.172)       0:00:17.218 *****
    fatal: [10.200.0.17]: FAILED! => {"changed": false, "msg": "following checks failed, ['check_kubelet_pass']"}
    ...
    

Lihat log di Cloud Logging

Log health check di-streaming ke Cloud Logging dan dapat dilihat di {i>Log Explorer<i}. Health check berkala diklasifikasikan sebagai Pod dalam log konsol.

  1. Di konsol Google Cloud, buka halaman Logs Explorer di Menu Logging.

    Buka Logs Explorer

  2. Di kolom Kueri, masukkan kueri dasar berikut:

    resource.type="k8s_container"
    resource.labels.pod_name=~"bm-system.*-machine.*"
    
  3. Jendela Query results akan menampilkan log untuk health check mesin node.

Berikut adalah daftar kueri untuk health check berkala:

  • Mesin node

    resource.type="k8s_container"
    resource.labels.pod_name=~"bm-system.*-machine.*"
    
  • Jaringan

    resource.type="k8s_container"
    resource.labels.pod_name=~"bm-system-network.*"
    
  • Kubernetes

    resource.type="k8s_container"
    resource.labels.pod_name=~"bm-system-kubernetes.*"
    
  • Add-on

    resource.type="k8s_container"
    resource.labels.pod_name=~"bm-system-add-ons.*"
    

Health check berkala

Secara default, health check berkala dijalankan setiap jam dan memeriksa hal-hal berikut komponen cluster:

Anda dapat memeriksa kondisi cluster dengan melihat Bare Metal HealthCheck (healthchecks.baremetal.cluster.gke.io) resource kustom di cluster admin. Pemeriksaan Jaringan, Kubernetes, dan Add-on merupakan pemeriksaan tingkat cluster, adalah satu sumber daya untuk setiap pemeriksaan. Pemeriksaan Mesin dijalankan untuk setiap node di cluster target, jadi ada resource untuk setiap node.

  • Untuk mencantumkan resource HealthCheck Bare Metal untuk cluster tertentu, jalankan perintah perintah berikut:

    kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig=ADMIN_KUBECONFIG \
        --namespace=CLUSTER_NAMESPACE
    

    Ganti kode berikut:

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

    • CLUSTER_NAMESPACE: namespace target cluster health check.

    Contoh respons berikut menampilkan formatnya:

    NAMESPACE               NAME                               PASS    AGE
    cluster-test-user001    bm-system-192.0.2.53-machine       true    56d
    cluster-test-user001    bm-system-192.0.2.54-machine       true    56d
    cluster-test-user001    bm-system-add-ons                  true    56d
    cluster-test-user001    bm-system-kubernetes               true    56d
    cluster-test-user001    bm-system-network                  true    56d
    

    Kolom Pass untuk healthchecks.baremetal.cluster.gke.io menunjukkan apakah health check terakhir lulus (true) atau gagal (false).

Untuk mengetahui informasi selengkapnya tentang cara memeriksa status health check berkala, lihat HealthCheck resource kustom dan Log health check.

Nonaktifkan health check berkala

Health check berkala diaktifkan secara default pada semua cluster. Anda dapat menonaktifkan health check berkala untuk cluster dengan menyetel periodicHealthCheck.enable ke false di resource Cluster.

Untuk menonaktifkan health check berkala:

  1. Edit file konfigurasi cluster dan tambahkan periodicHealthCheck.enable ke spesifikasi Cluster dan tetapkan nilainya ke false:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-user-basic
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      profile: default
      ...
      periodicHealthCheck:
        enable: false
      ...
    
  2. Update cluster dengan menjalankan perintah bmctl update:

    bmctl update cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang ingin Anda memperbarui.

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

  3. Untuk memverifikasi bahwa health check berkala telah dinonaktifkan, jalankan perintah berikut untuk mengonfirmasi bahwa kode healthchecks.baremetal.cluster.gke.io resource telah dihapus:

    kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig=ADMIN_KUBECONFIG \
        --namespace=CLUSTER_NAMESPACE
    

    Ganti kode berikut:

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

    • CLUSTER_NAMESPACE: namespace target cluster health check.

Mengaktifkan kembali health check berkala

Health check berkala diaktifkan secara default pada semua cluster. Jika Anda sudah health check berkala yang telah dinonaktifkan, Anda dapat mengaktifkannya kembali Kolom periodicHealthCheck.enable ke true di resource Cluster.

Untuk mengaktifkan kembali health check berkala:

  1. Edit file konfigurasi cluster dan tambahkan periodicHealthCheck.enable ke spesifikasi Cluster dan tetapkan nilainya ke true:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-user-basic
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      profile: default
      ...
      periodicHealthCheck:
        enable: true
      ...
    
  2. Update cluster dengan menjalankan perintah bmctl update:

    bmctl update cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang ingin Anda memperbarui.

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

  3. Untuk memverifikasi bahwa health check berkala telah diaktifkan, jalankan perintah berikut untuk mengonfirmasi bahwa kode healthchecks.baremetal.cluster.gke.io resource ada:

    kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig=ADMIN_KUBECONFIG \
        --namespace=CLUSTER_NAMESPACE
    

    Ganti kode berikut:

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

    • CLUSTER_NAMESPACE: namespace target cluster health check.

    Mungkin perlu waktu beberapa menit hingga resource muncul.

Health check on-demand

Bagian berikut menjelaskan health check yang dapat Anda jalankan secara on demand dengan bmctl check. Saat Anda menggunakan bmctl check untuk menjalankan health check, aturan berikut berlaku:

  • Saat memeriksa cluster pengguna dengan perintah bmctl check, tentukan jalurnya dari file kubeconfig untuk cluster admin dengan flag --kubeconfig.

  • Log dibuat dalam direktori yang diberi stempel waktu di folder log cluster di workstation admin Anda (secara default, bmctl-workspace/CLUSTER_NAME/log).

  • Log health check juga dikirim ke Cloud Logging. Untuk informasi selengkapnya tentang log, lihat Log health check.

Untuk informasi selengkapnya tentang opsi lain untuk perintah bmctl, lihat bmctl referensi perintah.

Add-on

Pastikan add-on Kubernetes yang ditentukan untuk cluster yang ditentukan telah dapat dioperasikan.

  • Untuk memeriksa add-on cluster:

    bmctl check add-ons --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster tempat Anda memeriksa.
    • ADMIN_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.

Untuk daftar hal yang diperiksa, lihat Add-on di bagian Apa dicentang di dokumen ini.

Pemeriksaan ini menghasilkan file log di check-addons-TIMESTAMP di folder log cluster di workstation admin Anda. Catatan juga dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Health check log.

Cluster

Periksa semua node cluster, jaringan node, Kubernetes, dan add-on untuk cluster yang ditentukan. Anda memberikan nama cluster, dan bmctl akan mencari file konfigurasi cluster di bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml, secara default.

  • Untuk memeriksa kondisi cluster:

    bmctl check cluster --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster tempat Anda memeriksa.
    • ADMIN_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.

Untuk daftar hal yang dicentang, lihat bagian berikut di bagian Hal yang dicentang dari dokumen ini:

Pemeriksaan ini menghasilkan file log di check-cluster-TIMESTAMP di folder log cluster di workstation admin Anda. Catatan juga dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Health check log.

Konfigurasi

Periksa file konfigurasi cluster. Pemeriksaan ini memperkirakan bahwa Anda telah membuat file konfigurasi dan mengeditnya untuk menentukan konfigurasi cluster untuk cluster Anda. Tujuan dari perintah ini adalah untuk menentukan apakah pengaturan konfigurasi apa pun salah, hilang, atau memiliki kesalahan sintaks. Anda berikan nama cluster, dan bmctl akan mencari file konfigurasi cluster di bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml, secara default.

  • Untuk memeriksa file konfigurasi cluster:

    bmctl check config --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster tempat Anda memeriksa.
    • ADMIN_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.

Perintah ini memeriksa sintaksis YAML dari file konfigurasi cluster, Akses dan izin Google Cloud untuk akun layanan yang ditentukan dalam file konfigurasi cluster Anda.

Pemeriksaan ini menghasilkan file log di check-config-TIMESTAMP di folder log cluster di workstation admin Anda. Catatan juga dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Health check log.

Konektivitas ke Google Cloud

Pastikan semua mesin node cluster dapat mengakses Container Registry (gcr.io) dan endpoint Google API (googleapis.com).

  • Untuk memeriksa akses cluster ke resource Google Cloud yang diperlukan:

    bmctl check gcp --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster tempat Anda memeriksa.
    • ADMIN_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.

Pemeriksaan ini menghasilkan file log di check-gcp-TIMESTAMP di folder log cluster di workstation admin Anda. Catatan juga dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Health check log.

Kubernetes

Memeriksa kondisi operator Kubernetes penting yang berjalan di bidang kontrol. Pemeriksaan ini memverifikasi bahwa operator penting berfungsi dengan baik dan bahwa operator pod tidak mengalami error. Health check ini tidak menampilkan error jika salah satu komponen bidang kontrol hilang: fungsi ini hanya mengembalikan kesalahan jika komponen ada dan memiliki kesalahan pada waktu {i>command-execution<i}.

  • Untuk memeriksa kondisi komponen Kubernetes di cluster Anda:

    bmctl check kubernetes --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang berisi yang Anda periksa.
    • ADMIN_KUBECONFIG: jalur kubeconfig cluster admin .

Untuk mengetahui daftar apa saja yang dicek, lihat Kubernetes di halaman What's dicentang di dokumen ini.

Pemeriksaan ini menghasilkan file log di direktori check-kubernetes-TIMESTAMP pada folder log cluster di workstation admin Anda. Catatan juga dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Health check log.

Node

Periksa mesin node cluster untuk memastikan bahwa komputer itu telah dikonfigurasi dengan benar dan bahwa serta memiliki resource dan konektivitas yang memadai untuk upgrade cluster dan cluster operasi.

  • Untuk memeriksa kondisi mesin node di cluster Anda:

    bmctl check nodes --cluster CLUSTER_NAME --addresses NODE_IP_ADDRESSES --kubeconfig ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang berisi yang Anda periksa.
    • NODE_IP_ADDRESSES: daftar alamat IP yang dipisahkan koma untuk mesin node.
    • ADMIN_KUBECONFIG: jalur kubeconfig cluster admin .

Untuk mengetahui daftar yang dicentang, lihat Pemeriksaan mesin node di bagian Apa yang dicentang pada dokumen ini.

Pemeriksaan ini menghasilkan file log untuk setiap mesin node cluster dalam Direktori check-nodes-TIMESTAMP di folder log cluster di workstation admin Anda. Log juga dikirim ke Cloud Logging. Untuk selengkapnya informasi tentang log, lihat Log health check.

Preflight

Untuk mengetahui informasi tentang penggunaan bmctl guna menjalankan pemeriksaan preflight, lihat Jalankan pemeriksaan preflight on-demand untuk pembuatan cluster dan Jalankan pemeriksaan preflight on-demand untuk upgrade cluster.

Pemeriksaan preflight Runtime VM

Pemeriksaan preflight Runtime VM di Google Distributed Cloud memvalidasi sekumpulan mesin node sebelum menggunakan Runtime VM di Google Distributed Cloud dan VM. Jika Runtime VM di pemeriksaan preflight Google Distributed Cloud gagal, pembuatan VM diblokir. Kapan spec.enabled disetel ke true di resource kustom VMRuntime, Runtime VM di pemeriksaan preflight Google Distributed Cloud berjalan secara otomatis.

apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
  name: vmruntime
spec:
  enabled: true
...

Untuk informasi selengkapnya, lihat Pemeriksaan preflight VM Runtime di Google Distributed Cloud

Jalankan health check terbaru

Health check (dan pemeriksaan preflight) 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 cluster --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 mengupgrade cluster Anda.

Anda juga dapat melakukan pemeriksaan preflight terbaru sebelum menginstal atau mengupgrade . Untuk mengetahui informasi selengkapnya, lihat Menjalankan pemeriksaan preflight terbaru.

Langkah selanjutnya