You are viewing documentation for Kubernetes version: v1.18
Kubernetes v1.18 dokumentasi sudah tidak dirawat lagi. Versi yang kamu lihat ini hanyalah snapshot statis. Untuk dokumentasi terkini, lihat versi terkini.
Metrik-Metrik untuk Control Plane Kubernetes
Metrik dari komponen sistem dapat memberikan pandangan yang lebih baik tentang apa yang sedang terjadi di dalam sistem. Metrik sangat berguna untuk membuat dasbor (dashboard) dan peringatan (alert).
Metrik di dalam control plane Kubernetes disajikan dalam format prometheus dan dapat terbaca oleh manusia.
Metrik-Metrik pada Kubernetes
Dalam kebanyakan kasus, metrik tersedia pada endpoint /metrics
dari server HTTP.
Untuk komponen yang tidak mengekspos endpoint secara bawaan, endpoint tersebut dapat diaktifkan
dengan menggunakan opsi --bind-address
.
Contoh-contoh untuk komponen tersebut adalah:
- kube-controller-managerKomponen di master yang menjalankan kontroler.
- kube-proxykube-proxy is a network proxy that runs on each node in the cluster.
- kube-apiserverKomponen di master yang mengekspos API Kubernetes. Merupakan front-end dari kontrol plane Kubernetes.
- kube-schedulerKomponen di master yang bertugas mengamati pod yang baru dibuat dan belum di-assign ke suatu node dan kemudian akan memilih sebuah node dimana pod baru tersebut akan dijalankan.
- kubeletAgen yang dijalankan pada setiap node di klaster dan bertugas memastikan kontainer dijalankan di dalam pod.
Di dalam lingkungan produksi, kamu mungkin ingin mengonfigurasi Server Prometheus atau scraper metrik (pengambil metrik) lainnya untuk mengumpulkan metrik-metrik ini secara berkala dan membuatnya tersedia dalam semacam basis data yang time series.
Perlu dicatat bahwa kubeletAgen yang dijalankan pada setiap node di klaster dan bertugas memastikan kontainer dijalankan di dalam pod.
juga mengekspos metrik pada endpoint-endpoint seperti /metrics/cadvisor
,
/metrics/resource
dan /metrics/probes
. Metrik-metrik tersebut tidak memiliki
siklus hidup yang sama.
Jika klaster kamu menggunakan RBACManages authorization decisions, allowing admins to dynamically configure access policies through the Kubernetes API.
,
untuk membaca metrik memerlukan otorisasi melalui sebuah User, Group, atau
ServiceAccount dengan ClusterRole yang memperbolehkan mengakses /metrics
.
Sebagai contoh:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- nonResourceURLs:
- "/metrics"
verbs:
- get
Siklus Hidup (Lifecycle) Metrik
Alpha metric → Stable metric → Deprecated metric → Hidden metric → Deletion
Metrik-metrik Alpha tidak memiliki jaminan stabilitas; dengan demikian mereka dapat dimodifikasi atau dihapus kapan saja.
Metrik-metrik Stable dijamin tidak berubah (dijamin stabilitasnya); Secara khusus, stabilitas berarti:
- metrik itu sendiri tidak akan dihapus (atau diganti namanya)
- jenis metrik tidak akan dimodifikasi
Metrik Deprecated memberi penanda bahwa metrik tersebut suatu saat akan dihapus; untuk menemukan versi yang mana, kamu perlu memeriksa anotasi, yang mencakup dari versi Kubernetes mana yang metrik tersebut akan dianggap deprecated.
Sebelum deprecation:
# HELP some_counter this counts things
# TYPE some_counter counter
some_counter 0
Sesudah deprecation:
# HELP some_counter (Deprecated since 1.15.0) this counts things
# TYPE some_counter counter
some_counter 0
Setelah metrik disembunyikan maka secara bawaan metrik tidak dipublikasikan untuk scraping (pengambilan metrik). Untuk menggunakan metrik yang tersembunyi, kamu perlu mengganti (override) konfigurasi untuk komponen klaster yang relevan.
Setelah metrik dihapus, metrik tidak dipublikasikan. Kamu tidak dapat mengubah metrik tersebut dengan menggunakan override.
Melihat Metrik tersembunyi
Seperti dijelaskan di atas, para admin dapat mengaktifkan metrik tersembunyi melalui opsi pada baris perintah (command line) untuk binary (program) tertentu. Ini ditujukan untuk digunakan sebagai solusi bagi para admin apabila mereka gagal memigrasi metrik yang sudah deprecated dalam rilis terakhir.
Opsi show-hidden-metrics-for-version
menunjukkan versi yang ingin kamu tampilkan
metrik yang sudah deprecated dalam rilis tersebut. Versi ini ditampilkan dalam bentuk x.y,
di mana x adalah versi major, y adalah versi minor. Versi patch tidak
diperlukan meskipun metrik dapat di_-deprecate_ dalam rilis _patch_, hal ini
adalah karena kebijakan _deprecation_ untuk metrik hanya berlaku terhadap rilis minor.
Opsi tersebut hanya dapat menggunakan versi minor sebelumnya sebagai parameternya. Semua
metrik yang disembunyikan di versi sebelumnya akan dikeluarkan jika para admin
mengatur versi sebelumnya ke show-hidden-metrics-for-version
. Versi yang
terlalu lama tidak diizinkan karena hal ini melanggar kebijakan untuk metrik yang
sudah deprecated.
Ambil metrik A
sebagai contoh, di sini diasumsikan bahwa A
sudah deprecated
pada rilis 1.n. Menurut kebijakan metrik yang sudah deprecated, kita dapat mencapai kesimpulan
sebagai berikut:
- Pada rilis
1.n
, metrik sudah di_-deprecated_, dan dapat diperlihatkan secara bawaan. - Pada rilis
1.n + 1
, metrik disembunyikan secara bawaan dan dapat diperlihatkan dengan baris perintahshow-hidden-metrics-for-version=1.n
. - Pada rilis
1.n + 2
, metrik harus dihapus dari codebase. Tidak ada jalan keluar lagi.
Jika kamu meng-upgrade dari rilis 1.12
ke 1.13
, tetapi masih bergantung pada
metrik A
yang di-deprecate dalam 1.12
, kamu harus mengatur metrik
tersembunyi melalui baris perintah: --show-hidden-metrics=1.12
dan ingatlah
untuk menghapus ketergantungan terhadap metrik ini sebelum meng-upgrade ke 1.14
.
Metrik komponen
Metrik kube-controller-manager
Metrik Controller Manager memberikan pandangan penting tentang kinerja dan kesehatan Controller Manager. Metrik ini mencakup metrik runtime berbahasa Go yang umum seperti jumlah go_routine dan metrik khusus pengontrol seperti latensi request etcd atau latensi API dari Cloud provider (AWS, GCE, OpenStack) yang dapat digunakan untuk mengukur kesehatan klaster.
Mulai dari Kubernetes 1.7, metrik Cloud provider yang detail tersedia untuk operasi penyimpanan untuk GCE, AWS, Vsphere, dan OpenStack. Metrik ini dapat digunakan untuk memantau kesehatan operasi PersistentVolume.
Misalnya, untuk GCE metrik tersebut adalah:
cloudprovider_gce_api_request_duration_seconds { request = "instance_list"}
cloudprovider_gce_api_request_duration_seconds { request = "disk_insert"}
cloudprovider_gce_api_request_duration_seconds { request = "disk_delete"}
cloudprovider_gce_api_request_duration_seconds { request = "attach_disk"}
cloudprovider_gce_api_request_duration_seconds { request = "detach_disk"}
cloudprovider_gce_api_request_duration_seconds { request = "list_disk"}
Selanjutnya
- Baca tentang format teks Prometheus untuk berbagai metrik
- Lihat daftar metrik Kubernetes yang stable
- Baca tentang kebijakan deprecation Kubernetes