Health check adalah cara untuk menguji dan memantau pengoperasian cluster yang ada. Health check berjalan sendiri, secara berkala. Anda juga dapat menggunakan bmctl
untuk menjalankan health check sesuai permintaan. Dokumen ini menjelaskan setiap pemeriksaan, dalam keadaan
apa pemeriksaan tersebut berjalan secara otomatis, cara dan waktu untuk menjalankannya secara manual, serta cara
menafsirkan hasilnya.
Apa yang diperiksa?
Ada dua kategori health check Google Distributed Cloud:
Pemeriksaan mesin node
Pemeriksaan 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 mesin node dikonfigurasi dengan benar dan bahwa node tersebut memiliki resource dan konektivitas yang memadai untuk pembuatan cluster, upgrade cluster, dan operasi cluster.
Pemeriksaan ini sesuai dengan resource kustom HealthCheck
Bare Metal bernama
bm-system-NODE_IP_ADDRESS-machine
(misalnya,
bm-system-192.0.2.54-machine
) yang berjalan di cluster admin di namespace
cluster. Untuk mengetahui informasi selengkapnya tentang resource pemeriksaan kesehatan, lihat resource kustom
HealthCheck
.
Pemeriksaan mesin umum terdiri dari hal-hal berikut:
Mesin cluster menggunakan sistem operasi (OS) yang didukung.
Versi OS didukung.
OS menggunakan versi kernel yang didukung.
Kernel mengaktifkan opsi compiler BPF Just In Time (JIT) (
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 di mesin node.
Rute default untuk merutekan paket ke gateway default ada di node.
Domain Name System (DNS) berfungsi (pemeriksaan ini dilewati jika cluster dikonfigurasi untuk berjalan di balik proxy).
Jika cluster dikonfigurasi untuk menggunakan mirror registry, mirror registry dapat dijangkau.
Pemeriksaan Google Cloud mesin terdiri dari:
Container Registry,
gcr.io
dapat dijangkau (pemeriksaan ini dilewati jika cluster dikonfigurasi untuk menggunakan mirror registry).Google API dapat dijangkau.
Pemeriksaan kesehatan mesin terdiri dari hal-hal berikut:
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.
Untuk mengetahui informasi selengkapnya tentang persyaratan mesin node, lihat Prasyarat mesin node cluster.
Pemeriksaan seluruh cluster
Bagian ini menjelaskan hal yang dievaluasi oleh health check untuk cluster.
Pemeriksaan jaringan
Pemeriksaan jaringan node cluster sisi klien berikut berjalan secara otomatis sebagai bagian
dari health check berkala. Pemeriksaan jaringan tidak dapat dijalankan sesuai permintaan. Pemeriksaan ini
sesuai dengan resource kustom HealthCheck
Bare Metal bernama
bm-system-network
yang berjalan di cluster admin dalam namespace cluster. Untuk mengetahui informasi selengkapnya tentang resource health check, lihat resource kustom HealthCheck
.
Jika cluster menggunakan load balancing yang dipaketkan, node dalam kumpulan node load balancing harus memiliki konektivitas address resolution protocol (ARP) Lapisan 2. ARP diperlukan untuk penemuan VIP.
Node bidang kontrol memiliki port 8443 dan 8444 yang terbuka untuk digunakan oleh Identity Service GKE.
Node bidang kontrol memiliki port 2382 dan 2383 yang terbuka untuk digunakan oleh instance
etcd-events
.
Untuk informasi tentang protokol dan penggunaan port untuk cluster Anda, lihat Persyaratan jaringan.
Pemeriksaan jaringan untuk pemeriksaan pra-penerbangan berbeda dengan pemeriksaan kesehatan jaringan. Untuk mengetahui daftar pemeriksaan jaringan untuk pemeriksaan pra-penerbangan, lihat Pemeriksaan pra-penerbangan untuk pembuatan cluster atau Pemeriksaan pra-penerbangan untuk upgrade cluster.
Kubernetes
Pemeriksaan Kubernetes, yang berjalan secara otomatis sebagai bagian dari pemeriksaan kesehatan preflight dan berkala, juga dapat dijalankan sesuai permintaan. Pemeriksaan kesehatan ini tidak menampilkan error jika salah satu komponen panel kontrol yang tercantum tidak ada. Pemeriksaan hanya menampilkan error jika komponen ada dan memiliki error pada waktu eksekusi perintah.
Pemeriksaan ini sesuai dengan resource kustom HealthCheck
Bare Metal bernama
resource bm-system-kubernetes
yang berjalan di cluster admin dalam namespace
cluster. Untuk mengetahui informasi selengkapnya tentang resource pemeriksaan kesehatan, lihat resource kustom
HealthCheck
.
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 pra-penerbangan dan pemeriksaan kesehatan berkala, serta dapat dijalankan sesuai permintaan. Health check ini tidak menampilkan error jika salah satu add-on yang tercantum tidak ada. Pemeriksaan hanya menampilkan error jika add-on ada dan memiliki error pada waktu eksekusi perintah.
Pemeriksaan ini sesuai dengan resource kustom HealthCheck
Bare Metal bernama
resource bm-system-add-ons*
yang berjalan di cluster admin dalam namespace
cluster. Untuk mengetahui informasi selengkapnya tentang resource pemeriksaan kesehatan, lihat resource kustom
HealthCheck
.
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 menampilkan perubahan manual (drift konfigurasi):
Nilai kolom belum diperbarui
Kolom opsional belum ditambahkan atau dihapus
Referensi belum dihapus
Jika health check mendeteksi drift konfigurasi, nilai Status.Pass
resource kustom HealthCheck
Bare Metal
bm-system-add-ons
ditetapkan ke false
. Kolom
Description
di bagian Failures
berisi detail tentang
resource apa pun yang telah berubah, termasuk informasi berikut:
Version
: versi API untuk resource.Kind
: skema objek, sepertiDeployment
, untuk resource.Namespace
: namespace tempat resource berada.Name
: nama resource.Diff
: perbandingan format string perbedaan antara manifes resource dalam data dan manifes untuk resource yang diubah.
Resource kustom HealthCheck
Saat health check berjalan, Google Distributed Cloud akan membuat resource kustom HealthCheck
. Resource kustom HealthCheck
bersifat persisten dan memberikan catatan terstruktur tentang aktivitas dan hasil health check. Ada dua kategori resource kustom HeathCheck
:
Resource kustom
HealthCheck
Bare Metal (API Version: baremetal.cluster.gke.io/v1
): resource ini memberikan detail tentang pemeriksaan kesehatan berkala. Resource ini berada di cluster admin dalam namespace cluster. ResourceHealthCheck
Bare Metal bertanggung jawab untuk membuat tugas dan tugas cron pemeriksaan kesehatan. Referensi ini terus diperbarui dengan hasil terbaru.Resource kustom
HealthCheck
Anthos (API Version: anthos.gke.io/v1
): resource ini digunakan untuk melaporkan metrik health check. Resource ini berada dalam namespacekube-system
setiap cluster. Pembaruan materi ini adalah upaya terbaik. Jika update gagal karena masalah, seperti error jaringan sementara, kegagalan akan diabaikan.
Tabel berikut mencantumkan jenis resource yang dibuat untuk kategori
HealthCheck
:
Pemeriksaan Kesehatan Bare Metal | HealthCheck GKE Enterprise | Keparahan |
---|---|---|
Jenis: machine
Nama: |
Jenis: machine
Nama: |
Kritis |
Jenis: jaringan
Nama: |
Jenis: jaringan
Nama: |
Kritis |
Jenis: kubernetes
Nama: |
Jenis: kubernetes
Nama: |
Kritis |
Jenis: add-ons
Nama: |
Jenis: add-ons
Nama:
Nama: |
Opsional |
Untuk mengambil status HealthCheck
:
Untuk membaca hasil health check berkala, Anda bisa mendapatkan resource kustom terkait:
kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig ADMIN_KUBECONFIG --all-namespaces
Ganti
ADMIN_KUBECONFIG
dengan jalur file kubeconfig cluster admin.Contoh berikut menunjukkan health check yang berjalan secara berkala dan apakah pemeriksaan tersebut 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
Untuk membaca detail pemeriksaan kesehatan 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 file kubeconfig cluster admin.CLUSTER_NAMESPACE
: namespace cluster.
Saat Anda meninjau resource, bagian
Status:
berisi kolom penting berikut:Pass
: menunjukkan apakah tugas health check terakhir lulus atau tidak.Checks
: berisi informasi tentang tugas pemeriksaan kesehatan terbaru.Failures
: berisi informasi tentang tugas terbaru yang gagal.Periodic
: berisi informasi seperti kapan terakhir kali tugas health check dijadwalkan dan diinstrumentasikan.
Contoh
HealthCheck
berikut adalah untuk pemeriksaan mesin yang 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 adalah 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 ...
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 file kubeconfig cluster target.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 pemeriksaan kesehatan
Untuk health check berkala, setiap resource kustom HealthCheck
bare metal memiliki
CronJob
yang sesuai dengan nama yang sama. CronJob
ini bertanggung jawab untuk menjadwalkan
health check yang sesuai agar berjalan pada interval yang ditetapkan. CronJob
juga menyertakan penampung ansible-runner
yang menjalankan health check dengan membuat koneksi secure shell (SSH) ke node.
Untuk mengambil informasi tentang tugas cron:
Dapatkan daftar tugas cron yang telah berjalan untuk cluster tertentu:
kubectl get cronjobs --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
Ganti kode berikut:
ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.CLUSTER_NAMESPACE
: namespace cluster.
Contoh berikut menunjukkan respons umum:
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 di kolom
SCHEDULE
menunjukkan jadwal untuk setiap tugas pemeriksaan kesehatan yang dijalankan dalam sintaksis jadwal. Misalnya, tugasbm-system-kubernetes
berjalan pada pukul 17.17 (17
) setiap jam (*/1
) setiap hari (* * *
). Interval waktu untuk health check berkala tidak dapat diedit, tetapi berguna untuk pemecahan masalah guna mengetahui kapan tugas tersebut seharusnya dijalankan.Ambil detail untuk resource kustom
CronJob
tertentu:kubectl describe cronjob CRONJOB_NAME --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
Ganti kode berikut:
ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.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 menghasilkan log. Baik Anda menjalankan health check dengan bmctl
atau health check berjalan secara otomatis sebagai bagian dari health check berkala, log akan dikirim ke Cloud Logging. Saat menjalankan health check on demand,
file log akan dibuat di folder berstempel waktu di direktori log/
dari
folder cluster di workstation admin Anda. Misalnya, jika 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:
Dapatkan pod dan temukan pod pemeriksaan kesehatan tertentu yang Anda minati:
kubectl get pods --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
Ganti kode berikut:
ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.CLUSTER_NAMESPACE
: namespace cluster.
Contoh respons berikut menunjukkan beberapa pod pemeriksaan kesehatan:
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
Ambil log pod:
kubectl logs POD_NAME --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACE
Ganti kode berikut:
POD_NAME
: nama pod pemeriksaan kesehatan.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.CLUSTER_NAMESPACE
: namespace cluster.
Contoh berikut menunjukkan bagian log pod untuk pemeriksaan kesehatan mesin node yang berhasil:
... 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 log pod health check mesin node yang gagal. Contoh menunjukkan bahwa pemeriksaan
kubelet
(check_kubelet_pass
) gagal, yang menunjukkan bahwakubelet
tidak berjalan di 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 Logs Explorer. Health check berkala diklasifikasikan sebagai Pod dalam log konsol.
Di konsol Google Cloud, buka halaman Logs Explorer di menu Logging.
Di kolom Query, masukkan kueri dasar berikut:
resource.type="k8s_container" resource.labels.pod_name=~"bm-system.*-machine.*"
Jendela Hasil kueri menampilkan log untuk pemeriksaan kesehatan mesin node.
Berikut adalah daftar kueri untuk pemeriksaan kesehatan 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 berjalan setiap jam dan memeriksa komponen cluster berikut:
Anda dapat memeriksa kondisi cluster dengan melihat resource kustom HealthCheck
(healthchecks.baremetal.cluster.gke.io
) Bare Metal di cluster admin.
Pemeriksaan Jaringan, Kubernetes, dan Add-on adalah pemeriksaan tingkat cluster, sehingga ada
satu resource untuk setiap pemeriksaan. Pemeriksaan Mesin dijalankan untuk setiap node dalam
cluster target, sehingga ada resource untuk setiap node.
Untuk mencantumkan resource
HealthCheck
Bare Metal untuk cluster tertentu, jalankan perintah berikut:kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig=ADMIN_KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Ganti kode berikut:
ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.CLUSTER_NAMESPACE
: namespace cluster target health check.
Contoh respons berikut menunjukkan 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
untukhealthchecks.baremetal.cluster.gke.io
menunjukkan apakah health check terakhir berhasil (true
) atau gagal (false
).
Untuk mengetahui informasi selengkapnya tentang cara memeriksa status health check berkala, lihat
Resource kustom HealthCheck
dan Log health check.
Menonaktifkan health check berkala
Pemeriksaan kesehatan berkala diaktifkan secara default di semua cluster. Anda dapat menonaktifkan
health check berkala untuk cluster dengan menetapkan kolom periodicHealthCheck.enable
ke false
di resource Cluster.
Untuk menonaktifkan health check berkala:
Edit file konfigurasi cluster dan tambahkan kolom
periodicHealthCheck.enable
ke spesifikasi Cluster, lalu tetapkan nilainya kefalse
: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 ...
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 update.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Untuk memverifikasi bahwa pemeriksaan kesehatan berkala telah dinonaktifkan, jalankan perintah berikut untuk mengonfirmasi bahwa resource
healthchecks.baremetal.cluster.gke.io
yang sesuai telah dihapus:kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig=ADMIN_KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Ganti kode berikut:
ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.CLUSTER_NAMESPACE
: namespace cluster target health check.
Mengaktifkan kembali health check berkala
Pemeriksaan kesehatan berkala diaktifkan secara default di semua cluster. Jika telah
menonaktifkan health check berkala, Anda dapat mengaktifkannya kembali dengan menetapkan
kolom periodicHealthCheck.enable
ke true
di Resource cluster.
Untuk mengaktifkan kembali health check berkala:
Edit file konfigurasi cluster dan tambahkan kolom
periodicHealthCheck.enable
ke spesifikasi Cluster, lalu tetapkan nilainya ketrue
: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 ...
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 update.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Untuk memverifikasi bahwa pemeriksaan kesehatan berkala diaktifkan, jalankan perintah berikut untuk mengonfirmasi bahwa resource
healthchecks.baremetal.cluster.gke.io
yang sesuai ada:kubectl get healthchecks.baremetal.cluster.gke.io --kubeconfig=ADMIN_KUBECONFIG \ --namespace=CLUSTER_NAMESPACE
Ganti kode berikut:
ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.CLUSTER_NAMESPACE
: namespace cluster target health check.
Mungkin perlu waktu beberapa menit agar resource muncul.
Health check on demand
Bagian berikut menjelaskan pemeriksaan kesehatan yang dapat Anda jalankan sesuai permintaan
dengan bmctl check
. Saat Anda menggunakan bmctl check
untuk menjalankan health check, aturan berikut berlaku:
Saat Anda memeriksa cluster pengguna dengan perintah
bmctl check
, tentukan jalur file kubeconfig untuk cluster admin dengan flag--kubeconfig
.Log dibuat di direktori berstempel waktu dalam folder log cluster di workstation admin Anda (secara default,
bmctl-workspace/CLUSTER_NAME/log
).Log health check juga dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Log health check.
Untuk informasi selengkapnya tentang opsi lain untuk perintah bmctl
, lihat referensi perintah
bmctl
.
Add-on
Pastikan add-on Kubernetes yang ditentukan untuk cluster yang ditentukan dapat dioperasikan.
Untuk memeriksa add-on untuk cluster:
bmctl check add-ons --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
Ganti kode berikut:
CLUSTER_NAME
: nama cluster yang Anda periksa.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Untuk mengetahui daftar yang dicentang, lihat Add-on di bagian Yang dicentang dalam dokumen ini.
Pemeriksaan ini menghasilkan file log di direktori check-addons-TIMESTAMP
di folder log cluster di workstation admin Anda. Log juga
dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Log
health check.
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 yang Anda periksa.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Untuk mengetahui daftar yang diperiksa, lihat bagian berikut di bagian Yang diperiksa dalam dokumen ini:
Pemeriksaan ini menghasilkan file log di direktori check-cluster-TIMESTAMP
di folder log cluster di workstation admin Anda. Log juga
dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Log
health check.
Konfigurasi
Periksa file konfigurasi cluster. Pemeriksaan ini mengharapkan Anda telah membuat
file konfigurasi dan mengeditnya untuk menentukan detail konfigurasi
cluster untuk cluster Anda. Tujuan perintah ini adalah untuk menentukan apakah
setelan konfigurasi salah, tidak ada, atau memiliki error sintaksis. Anda
memberikan 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 yang Anda periksa.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Perintah ini memeriksa sintaksis YAML file konfigurasi cluster, akses Google Cloud, dan izin untuk akun layanan yang ditentukan dalam file konfigurasi cluster.
Pemeriksaan ini menghasilkan file log di direktori check-config-TIMESTAMP
di folder log cluster di workstation admin Anda. Log juga
dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Log
health check.
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 yang Anda periksa.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Pemeriksaan ini menghasilkan file log di direktori check-gcp-TIMESTAMP
di folder log cluster di workstation admin Anda. Log juga
dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Log
health check.
Kubernetes
Periksa kondisi operator Kubernetes penting yang berjalan di bidang kontrol. Pemeriksaan ini memverifikasi bahwa operator penting berfungsi dengan baik dan pod-nya tidak error. Health check ini tidak menampilkan error jika ada komponen platform kontrol yang tidak ada: health check ini hanya menampilkan error jika komponen ada dan memiliki error pada waktu eksekusi perintah.
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 node yang Anda periksa.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Untuk mengetahui daftar yang dicentang, lihat Kubernetes di bagian Yang dicentang dalam dokumen ini.
Pemeriksaan ini menghasilkan file log di direktori check-kubernetes-TIMESTAMP
di folder log cluster di workstation admin Anda. Log juga
dikirim ke Cloud Logging. Untuk mengetahui informasi selengkapnya tentang log, lihat Log
health check.
Node
Periksa mesin node cluster untuk mengonfirmasi bahwa mesin tersebut dikonfigurasi dengan benar dan memiliki resource dan konektivitas yang memadai untuk upgrade cluster dan operasi cluster.
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 node yang Anda periksa.NODE_IP_ADDRESSES
: daftar alamat IP yang dipisahkan koma untuk mesin node.ADMIN_KUBECONFIG
: jalur file kubeconfig cluster admin.
Untuk mengetahui daftar hal yang diperiksa, lihat Pemeriksaan mesin node di bagian Apa yang diperiksa dalam dokumen ini.
Pemeriksaan ini menghasilkan file log untuk setiap mesin node cluster di direktori check-nodes-TIMESTAMP
dalam folder log cluster di workstation admin Anda. Log juga dikirim ke Cloud Logging. Untuk mengetahui informasi
selengkapnya tentang log, lihat Log health check.
Pra-penerbangan
Untuk informasi tentang cara menggunakan bmctl
untuk menjalankan pemeriksaan pra-penerbangan, lihat
Menjalankan pemeriksaan pra-penerbangan on-demand untuk pembuatan cluster dan
Menjalankan pemeriksaan pra-penerbangan on-demand untuk upgrade cluster.
Pemeriksaan pra-penerbangan Runtime VM
Pemeriksaan pra-penerbangan Runtime VM di GDC memvalidasi serangkaian prasyarat mesin node sebelum menggunakan Runtime VM di GDC dan VM. Jika
pemeriksaan pra-penerbangan Runtime VM di GDC gagal, pembuatan VM akan diblokir. Jika
spec.enabled
ditetapkan ke true
di resource kustom VMRuntime
, pemeriksaan pra-penerbangan Runtime VM di GDC akan berjalan secara otomatis.
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
name: vmruntime
spec:
enabled: true
...
Untuk mengetahui informasi selengkapnya, lihat Pemeriksaan pra-penerbangan Runtime VM di GDC.
Menjalankan health check terbaru
Health check (dan pemeriksaan pra-penerbangan) diperbarui saat masalah umum diidentifikasi.
Untuk mengarahkan bmctl
agar menjalankan pemeriksaan dari image patch terbaru dari
versi minor yang diinstal, gunakan flag opsi --check-image-version latest
:
bmctl check cluster --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 mengupgrade cluster terlebih dahulu.
Anda juga dapat melakukan pemeriksaan pra-penerbangan terbaru sebelum menginstal atau mengupgrade cluster. Untuk informasi selengkapnya, lihat Menjalankan pemeriksaan pra-penerbangan terbaru.
Deteksi penyimpangan konfigurasi
Saat health check add-on berjalan, antara lain, health check ini akan memeriksa perubahan yang tidak terduga pada resource yang dikelola oleh Google Distributed Cloud. Secara khusus, pemeriksaan menilai manifes untuk resource ini guna menentukan apakah perubahan telah dilakukan oleh entitas eksternal. Pemeriksaan ini dapat membantu memberi peringatan dini tentang perubahan yang tidak disengaja yang mungkin merugikan kesehatan cluster. Laporan ini juga memberikan informasi pemecahan masalah yang berharga.
Manifes yang diperiksa
Dengan beberapa pengecualian, health check add-on akan meninjau semua resource yang dikelola Google Distributed Cloud untuk cluster Anda. Ini adalah resource yang diinstal dan dikelola oleh software Google Distributed Cloud. Ada ratusan resource ini dan sebagian besar manifesnya diperiksa untuk mengetahui adanya drift konfigurasi. Manifes ini ditujukan untuk semua jenis resource, termasuk, tetapi tidak terbatas pada, hal berikut:
|
|
|
Manifes yang tidak diperiksa
Secara desain, kami mengecualikan beberapa manifes dari peninjauan. Kami mengabaikan jenis resource tertentu, seperti Sertifikat, Secret, dan ServiceAccount, karena alasan privasi dan keamanan. Pemeriksaan add-on juga mengabaikan beberapa resource dan kolom resource, karena kami mengharapkannya diubah dan kami tidak ingin perubahan tersebut memicu error drift konfigurasi. Misalnya, pemeriksaan mengabaikan kolom replicas
di Deployment, karena Autoscaler dapat mengubah nilai ini.
Cara mengecualikan manifes tambahan atau bagian manifes dari peninjauan
Secara umum, sebaiknya jangan lakukan perubahan pada
resource yang dikelola Google Distributed Cloud atau abaikan perubahan yang dilakukan pada resource tersebut.
Namun, kami tahu bahwa resource terkadang memerlukan modifikasi untuk memenuhi
persyaratan kasus unik atau memperbaiki masalah. Oleh karena itu, kami menyediakan ConfigMap ignore-config-drift
untuk setiap cluster di fleet Anda. Anda menggunakan ConfigMap ini untuk menentukan resource dan kolom resource tertentu yang akan dikecualikan dari penilaian.
Google Distributed Cloud membuat ConfigMap ignore-config-drift
untuk setiap cluster. ConfigMap ini berada di cluster pengelola (admin atau campuran)
di bawah namespace cluster yang sesuai. Misalnya, jika Anda memiliki cluster admin (admin-one
) yang mengelola dua cluster pengguna (user-one
dan user-two
), Anda dapat menemukan ConfigMap ignore-config-drift
untuk cluster user-one
di cluster admin-one
di namespace cluster-user-one
.
Untuk mengecualikan resource atau kolom resource dari peninjauan:
Tambahkan kolom
data.ignore-resources
ke ConfigMapignore-config-drift
.Kolom ini menggunakan array string JSON, dengan setiap string menentukan resource dan, secara opsional, kolom tertentu dalam resource.
Tentukan resource dan, secara opsional, kolom tertentu yang akan diabaikan sebagai objek JSON dalam array string:
Objek JSON untuk resource dan kolom memiliki struktur berikut:
{ "Version": "RESOURCE_VERSION", "Kind": "RESOURCE_KIND", "Namespace": "RESOURCE_NAMESPACE", "Name": "RESOURCE_NAME", "Fields": [ "FIELD_1_NAME", "FIELD_2_NAME", ... "FIELD_N_NAME" ] }
Ganti kode berikut:
RESOURCE_VERSION
: (opsional) nilaiapiVersion
untuk resource.RESOURCE_KIND
: (opsional) nilaikind
untuk resource.RESOURCE_NAMESPACE
: (opsional) nilaimetadata.namespace
untuk resource.RESOURCE_NAME
: (opsional) nilaimetadata.name
untuk resource.FIELD_NAME
: (opsional) menentukan array kolom resource yang akan diabaikan. Jika Anda tidak menentukan kolom apa pun, pemeriksaan add-on akan mengabaikan semua perubahan pada resource.
Setiap kolom dalam objek JSON bersifat opsional, sehingga berbagai permutasi diizinkan. Anda dapat mengecualikan seluruh kategori resource, atau Anda dapat sangat akurat dan mengecualikan kolom tertentu dari resource tertentu.
Misalnya, jika Anda ingin pemeriksaan add-on mengabaikan perubahan apa pun hanya pada bagian
command
Deploymentais
di cluster admin, JSON mungkin terlihat seperti berikut:{ "Version": "apps/v1", "Kind": "Deployment", "Namespace": "anthos-identity-service", "Name": "ais", "Fields": [ "command" ] }
Anda akan menambahkan objek JSON ini ke
ignore-resources
di ConfigMapconfig-drift-ignore
sebagai nilai string dalam array seperti yang ditunjukkan dalam contoh berikut:apiVersion: v1 kind: ConfigMap metadata: creationTimestamp: "2024-09-24T00:39:45Z" name: config-drift-ignore namespace: cluster-example-admin ownerReferences: - apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster name: example-admin ... data: ignore-resources: '[{"Version":"apps/v1","Kind":"Deployment","Namespace":"anthos-identity-service","Name":"ais","Fields":["command"]}]' ...
Contoh setelan ConfigMap ini memungkinkan Anda menambahkan, menghapus, atau mengedit kolom
command
dalam Deploymentais
tanpa memicu error drift konfigurasi. Namun, pengeditan pada kolom di luar bagiancommand
dalam Deployment masih terdeteksi oleh pemeriksaan add-on dan dilaporkan sebagai drift konfigurasi.Jika Anda ingin mengecualikan semua Deployment, nilai
ignore-resources
mungkin terlihat seperti berikut:... data: ignore-resources: '[{"Kind":"Deployment"}]' ...
Karena
ignore-resources
menerima array string JSON, Anda dapat menentukan beberapa pola pengecualian. Jika Anda memecahkan masalah atau bereksperimen dengan cluster dan tidak ingin memicu error drift konfigurasi, fleksibilitas ini untuk mengecualikan resource yang sangat ditargetkan dan kolom resource atau kategori resource yang lebih luas dari deteksi drift dapat berguna.