Halaman ini menjelaskan metrik dan dasbor yang tersedia untuk memantau latensi startup workload Google Kubernetes Engine (GKE) dan node cluster yang mendasarinya. Anda dapat menggunakan metrik untuk melacak, memecahkan masalah, dan mengurangi latensi startup.
Halaman ini ditujukan untuk admin dan operator Platform yang perlu memantau dan mengoptimalkan latensi startup workload mereka. Untuk mempelajari lebih lanjut peran umum yang kami referensikan dalam konten Google Cloud , lihat Peran dan tugas pengguna GKE umum.
Ringkasan
Latensi startup sangat memengaruhi cara aplikasi Anda merespons lonjakan traffic, seberapa cepat replikanya pulih dari gangguan, dan seberapa efisien biaya pengoperasian cluster dan workload Anda. Memantau latensi startup workload dapat membantu Anda mendeteksi penurunan latensi dan melacak dampak update workload dan infrastruktur terhadap latensi startup.
Mengoptimalkan latensi startup workload memiliki manfaat berikut:
- Menurunkan latensi respons layanan Anda kepada pengguna selama lonjakan traffic.
- Mengurangi kapasitas penyajian berlebih yang diperlukan untuk menyerap lonjakan permintaan saat replika baru dibuat.
- Mengurangi waktu tidak ada aktivitas resource yang sudah di-deploy dan menunggu resource yang tersisa untuk dimulai selama komputasi batch.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Untuk menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Aktifkan Cloud Logging dan Cloud Monitoring API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.
Persyaratan
Untuk melihat metrik dan dasbor latensi startup workload, cluster GKE Anda harus memenuhi persyaratan berikut:
- Anda harus memiliki GKE versi 1.31.1-gke.1678000 atau yang lebih baru.
- Anda harus mengonfigurasi pengumpulan metrik sistem.
- Anda harus mengonfigurasi pengumpulan log sistem.
- Aktifkan kube state metrics dengan komponen
PODdi cluster Anda untuk melihat metrik Pod dan container.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengaktifkan pembuatan log serta mengakses dan memproses log, minta administrator untuk memberi Anda peran IAM berikut:
-
Melihat cluster, node, dan workload GKE:
Pelihat Kubernetes Engine (
roles/container.viewer) di project Anda -
Mengakses metrik latensi startup dan melihat dasbor:
Monitoring Viewer (
roles/monitoring.viewer) di project Anda -
Mengakses log dengan informasi latensi, seperti peristiwa pengambilan image Kubelet, dan melihatnya di Logs Explorer dan Observability Analytics:
Logs Viewer (
roles/logging.viewer) di project Anda
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Metrik latensi startup
Metrik latensi startup disertakan dalam metrik sistem GKE dan diekspor ke Cloud Monitoring di project yang sama dengan cluster GKE.
Nama metrik Cloud Monitoring dalam tabel ini harus diawali dengan
kubernetes.io/. Awalan tersebut telah dihilangkan dari
entri dalam tabel.
| Jenis metrik (Tingkat hierarki resource) Nama tampilan |
|
|---|---|
|
Jenis, Tipe, Unit
Resource yang dimonitor |
Deskripsi Label |
pod/latencies/pod_first_ready
(project)
Latensi pod pertama siap |
|
GAUGE, Double, s
k8s_pod |
Latensi startup end-to-end Pod (dari Pod Created hingga Ready), termasuk penarikan image. Dibuat sampelnya setiap 60 detik. |
node/latencies/startup
(project)
Latensi startup node |
|
GAUGE, INT64, s
k8s_node |
Total latensi startup node, dari CreationTimestamp instance GCE hingga Kubernetes node ready untuk pertama kalinya. Dibuat sampelnya setiap 60 detik.accelerator_family: klasifikasi node berdasarkan akselerator hardware: gpu, tpu, cpu.
kube_control_plane_available: apakah permintaan pembuatan node diterima saat KCP (bidang kontrol kube) tersedia.
|
autoscaler/latencies/per_hpa_recommendation_scale_latency_seconds
(project)
Latensi skala rekomendasi per HPA |
|
GAUGE, DOUBLE, s
k8s_scale |
Latensi rekomendasi penskalaan Horizontal Pod Autoscaler (HPA) (waktu antara pembuatan metrik dan penerapan rekomendasi penskalaan yang sesuai ke apiserver) untuk target HPA. Dibuat sampelnya setiap 60 detik. Setelah sampelnya dibuat, data tidak akan terlihat selama maksimal 20 detik.metric_type: jenis sumber metrik. Harus salah satu dari "ContainerResource", "External", "Object", "Pods", atau "Resource".
|
Melihat dasbor Latensi Startup untuk workload
Dasbor Startup Latency untuk workload hanya tersedia untuk Deployment. Guna melihat metrik latensi startup untuk Deployment, lakukan langkah-langkah berikut di konsol Google Cloud :
Buka halaman Workloads.
Untuk membuka tampilan Detail deployment, klik nama workload yang ingin Anda periksa.
Klik tab Observability.
Pilih Latensi Startup dari menu di sebelah kiri.
Melihat distribusi latensi startup Pod
Latensi startup Pod mengacu pada total latensi startup, termasuk penarikan image, yang mengukur waktu dari status Created Pod hingga status Ready. Anda dapat menilai latensi startup Pod menggunakan
dua diagram berikut:
Diagram Pod Startup Latency Distribution: diagram ini menunjukkan persentil latensi startup Pod (persentil ke-50, persentil ke-95, dan persentil ke-99) yang dihitung berdasarkan pengamatan peristiwa startup Pod selama interval waktu tetap 3 jam, misalnya, 00.00-03.00 dan 03.00-06.00. Anda dapat menggunakan diagram ini untuk tujuan berikut:
- Memahami latensi startup Pod dasar pengukuran Anda.
- Identifikasi perubahan latensi startup Pod dari waktu ke waktu.
- Korelasikan perubahan latensi startup Pod dengan peristiwa terbaru, seperti peristiwa Deployment Workload atau Cluster Autoscaler. Anda dapat memilih peristiwa dalam daftar Anotasi di bagian atas dasbor.
Diagram Jumlah Startup Pod: diagram ini menampilkan jumlah Pod yang dimulai selama interval waktu yang dipilih. Anda dapat menggunakan diagram ini untuk tujuan berikut:
- Memahami ukuran sampel Pod yang digunakan untuk menghitung persentil distribusi latensi startup Pod untuk interval waktu tertentu.
- Memahami penyebab Pod dimulai, seperti Deployment Workload atau peristiwa Horizontal Pod Autoscaler. Anda dapat memilih peristiwa dalam daftar Anotasi di bagian atas dasbor.
Melihat latensi startup setiap Pod
Anda dapat melihat latensi startup setiap Pod pada diagram linimasa Pod First Ready Latency dan daftar terkait.
- Gunakan diagram linimasa Latensi Siap Pod Pertama untuk mengorelasikan setiap mulai Pod dengan peristiwa terbaru, seperti peristiwa Horizontal Pod Autoscaler atau Cluster Autoscaler. Anda dapat memilih peristiwa ini dalam daftar Anotasi di bagian atas dasbor. Diagram ini membantu Anda menentukan potensi penyebab perubahan latensi startup dibandingkan dengan Pod lain.
- Gunakan daftar Pod First Ready Latency untuk mengidentifikasi setiap Pod yang memerlukan waktu paling lama atau paling singkat untuk memulai. Anda dapat mengurutkan daftar berdasarkan kolom Latensi. Saat mengidentifikasi Pod yang memiliki latensi startup tertinggi, Anda dapat memecahkan masalah penurunan latensi dengan mengorelasikan peristiwa mulai Pod dengan peristiwa terbaru lainnya.
Anda dapat mengetahui kapan setiap Pod dibuat dengan melihat nilai di kolom timestamp dalam peristiwa pembuatan Pod yang sesuai. Untuk melihat kolom
timestamp, jalankan kueri berikut di
Logs Explorer:
log_id("cloudaudit.googleapis.com/activity") AND
protoPayload.methodName="io.k8s.core.v1.pods.create" AND
resource.labels.project_id=PROJECT_ID AND
resource.labels.cluster_name=CLUSTER_NAME AND
resource.labels.location=CLUSTER_LOCATION AND
protoPayload.response.metadata.namespace=NAMESPACE AND
protoPayload.response.metadata.name=POD_NAME
Untuk mencantumkan semua peristiwa pembuatan Pod untuk beban kerja Anda, gunakan filter berikut
dalam kueri sebelumnya:
protoPayload.response.metadata.name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"
Saat membandingkan latensi setiap Pod, Anda dapat menguji dampak berbagai konfigurasi pada latensi startup Pod dan mengidentifikasi konfigurasi optimal berdasarkan persyaratan Anda.
Menentukan latensi penjadwalan Pod
Latensi penjadwalan Pod adalah jumlah waktu antara saat Pod dibuat dan saat Pod dijadwalkan pada node. Latensi penjadwalan Pod berkontribusi pada waktu mulai end-to-end Pod, dan dihitung dengan mengurangi stempel waktu peristiwa penjadwalan Pod dan permintaan pembuatan Pod.
Anda dapat menemukan stempel waktu setiap peristiwa penjadwalan Pod dari kolom jsonPayload.eventTime di peristiwa penjadwalan Pod yang sesuai. Untuk melihat kolom jsonPayload.eventTime, jalankan kueri berikut di Logs Explorer:
log_id("events")
jsonPayload.reason="Scheduled"
resource.type="k8s_pod"
resource.labels.project_id=PROJECT_ID
resource.labels.location=CLUSTER_LOCATION
resource.labels.cluster_name=CLUSTER_NAME
resource.labels.namespace_name=NAMESPACE
resource.labels.pod_name=POD_NAME
Untuk mencantumkan semua peristiwa penjadwalan Pod untuk workload Anda, gunakan filter berikut
dalam kueri sebelumnya:
resource.labels.pod_name=~"POD_NAME_PREFIX-[a-f0-9]{7,10}-[a-z0-9]{5}"
Melihat latensi pengambilan image
Latensi pengambilan image container berkontribusi pada latensi startup Pod dalam skenario saat image belum tersedia di node atau image perlu dimuat ulang. Saat mengoptimalkan latensi pengambilan image, Anda mengurangi latensi startup workload selama peristiwa penyebaran skala cluster.
Anda dapat melihat tabel Kubelet Image Pull Events untuk melihat kapan image container workload ditarik dan berapa lama prosesnya berlangsung.
Latensi pull image tersedia di kolom jsonPayload.message, yang
berisi pesan seperti berikut:
"Successfully pulled image "gcr.io/example-project/image-name" in 17.093s (33.051s including waiting). Image size: 206980012 bytes."
Melihat distribusi latensi rekomendasi penskalaan HPA
Latensi rekomendasi penskalaan Horizontal Pod Autoscaler (HPA) untuk target HPA adalah jumlah waktu antara saat metrik dibuat dan saat rekomendasi penskalaan yang sesuai diterapkan ke server API. Saat Anda mengoptimalkan latensi rekomendasi penskalaan HPA, Anda akan mengurangi latensi startup workload selama peristiwa penyebaran skala.
Penskalaan HPA dapat dilihat pada dua diagram berikut:
Diagram HPA Scaling Recommendation Latency Distribution: diagram ini menunjukkan persentil latensi rekomendasi penskalaan HPA (persentil ke-50, persentil ke-95, dan persentil ke-99) yang dihitung berdasarkan pengamatan rekomendasi penskalaan HPA selama interval waktu 3 jam terakhir. Anda dapat menggunakan diagram ini untuk tujuan berikut:
- Pahami latensi rekomendasi penskalaan HPA dasar pengukuran Anda.
- Mengidentifikasi perubahan latensi rekomendasi penskalaan HPA dari waktu ke waktu.
- Korelasikan perubahan latensi rekomendasi penskalaan HPA dengan peristiwa terbaru. Anda dapat memilih peristiwa dalam daftar Anotasi di bagian atas dasbor.
Diagram HPA Scaling Recommendation Count: diagram ini menunjukkan jumlah rekomendasi penskalaan HPA yang diamati selama interval waktu yang dipilih. Gunakan diagram untuk tugas berikut:
- Memahami ukuran sampel rekomendasi penskalaan HPA. Sampel digunakan untuk menghitung persentil dalam distribusi latensi untuk rekomendasi penskalaan HPA selama interval waktu tertentu.
- Korelasikan rekomendasi penskalaan HPA dengan peristiwa startup Pod baru dan dengan peristiwa Horizontal Pod Autoscaler. Anda dapat memilih peristiwa dalam daftar Anotasi di bagian atas dasbor.
Melihat masalah penjadwalan untuk Pod
Masalah penjadwalan pod dapat memengaruhi latensi startup end-to-end beban kerja Anda. Untuk mengurangi latensi startup end-to-end workload Anda, pecahkan masalah dan kurangi jumlah masalah ini.
Berikut adalah dua diagram yang tersedia untuk melacak masalah tersebut:
- Diagram Pod yang Tidak Dapat Dijadwalkan/Tertunda/Gagal menampilkan jumlah Pod yang tidak dapat dijadwalkan, tertunda, dan gagal dari waktu ke waktu.
- Diagram Backoff/Waiting/Readiness Failed Containers menunjukkan jumlah container dalam status ini dari waktu ke waktu.
Melihat dasbor latensi startup untuk node
Untuk melihat metrik latensi startup untuk node, lakukan langkah-langkah berikut di konsolGoogle Cloud :
Buka halaman Kubernetes Clusters.
Untuk membuka tampilan Cluster details, klik nama cluster yang ingin Anda periksa.
Klik tab Observability.
Dari menu di sebelah kiri, pilih Latensi Startup.
Melihat distribusi latensi startup node
Latensi startup node mengacu pada total latensi startup, yang mengukur waktu dari CreationTimestamp node hingga status Kubernetes node ready. Latensi startup node dapat dilihat di dua diagram berikut:
Diagram Node Startup Latency Distribution: diagram ini menunjukkan persentil latensi startup node (persentil ke-50, persentil ke-95, dan persentil ke-99) yang dihitung berdasarkan pengamatan peristiwa startup node selama interval waktu tetap 3 jam, misalnya, 00.00-03.00 dan 03.00-06.00. Anda dapat menggunakan diagram ini untuk tujuan berikut:
- Pahami latensi startup node dasar Anda.
- Mengidentifikasi perubahan latensi startup node dari waktu ke waktu.
- Korelasikan perubahan latensi startup node dengan peristiwa terbaru, seperti Update Cluster atau Update Node Pool. Anda dapat memilih peristiwa dalam daftar Anotasi di bagian atas dasbor.
Diagram Node Startup Count: diagram ini menunjukkan jumlah node yang dimulai selama interval waktu yang dipilih. Anda dapat menggunakan diagram untuk tujuan berikut:
- Pahami ukuran sampel node, yang digunakan untuk menghitung persentil distribusi latensi startup node untuk interval waktu tertentu.
- Pahami penyebab dimulainya node seperti Update Node Pool atau peristiwa Cluster Autoscaler. Anda dapat memilih peristiwa dalam daftar Anotasi di bagian atas dasbor.
Melihat latensi startup setiap node
Saat membandingkan latensi setiap node, Anda dapat menguji dampak berbagai konfigurasi node terhadap latensi startup node dan mengidentifikasi konfigurasi yang optimal berdasarkan persyaratan Anda. Anda dapat melihat latensi startup setiap node di diagram linimasa Node Startup Latency dan daftar terkait.
Gunakan diagram linimasa Node Startup Latency untuk menghubungkan setiap node yang dimulai dengan peristiwa terbaru, seperti Update Cluster atau Update Node Pool. Anda dapat menentukan potensi penyebab perubahan latensi startup dibandingkan dengan node lain. Anda dapat memilih peristiwa dalam daftar Anotasi di bagian atas dasbor.
Gunakan daftar Node Startup Latency untuk mengidentifikasi setiap node yang memerlukan waktu paling lama atau paling singkat untuk memulai. Anda dapat mengurutkan daftar berdasarkan kolom Latency. Saat mengidentifikasi node dengan latensi startup tertinggi, Anda dapat memecahkan masalah penurunan latensi dengan menghubungkan peristiwa mulai node dengan peristiwa terbaru lainnya.
Anda dapat mengetahui kapan node individual dibuat dengan melihat nilai kolom
protoPayload.metadata.creationTimestamp dalam peristiwa pembuatan node yang
sesuai. Untuk melihat kolom protoPayload.metadata.creationTimestamp, jalankan kueri berikut di Logs Explorer:
log_id("cloudaudit.googleapis.com/activity") AND
protoPayload.methodName="io.k8s.core.v1.nodes.create" AND
resource.labels.project_id=PROJECT_ID AND
resource.labels.cluster_name=CLUSTER_NAME AND
resource.labels.location=CLUSTER_LOCATION AND
protoPayload.response.metadata.name=NODE_NAME
Melihat latensi startup di node pool
Jika node pool Anda memiliki konfigurasi yang berbeda, misalnya, untuk menjalankan workload yang berbeda, Anda mungkin perlu memantau latensi startup node secara terpisah menurut node pool. Saat membandingkan latensi startup node di seluruh node pool, Anda bisa mendapatkan insight tentang pengaruh konfigurasi node terhadap latensi startup node dan mengoptimalkan latensi.
Secara default, dasbor Latensi Startup Node menampilkan Distribusi Latensi Startup gabungan dan Latensi Startup Node individual di semua node pool dalam cluster. Untuk melihat latensi startup node untuk node pool tertentu, pilih nama node pool menggunakan filter $node_pool_name_var yang terletak di bagian atas dasbor.
Langkah berikutnya
- Bandingkan strategi untuk mengurangi latensi startup.
- Pelajari cara mempercepat startup aplikasi menggunakan peningkatan CPU startup.
- Pelajari lebih lanjut cara mengurangi latensi cold start di GKE.
- Pelajari cara mengurangi latensi pengambilan image dengan Streaming image.
- Pelajari aspek ekonomi yang mengejutkan dari penyesuaian penskalaan otomatis Pod horizontal.
- Pantau workload Anda dengan pemantauan aplikasi otomatis.