Bantu tingkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bidang kontrol Kubernetes memperlihatkan sejumlah metrik yang direpresentasikan dalam format Prometheus.
Untuk melihat output metrik mentah, ganti endpoint
dan jalankan perintah berikut.
kubectl get --raw endpoint
Perintah ini memungkinkan Anda untuk melewati jalur titik akhir apa pun dan mengembalikan respons mentah. Output mencantumkan metrik yang berbeda line-by-line, dengan setiap baris termasuk nama metrik, tag, dan nilai.
metric_name{tag="value"[,...]} value
Ambil metrik dari server API
Titik akhir server API umum diekspos di bidang kontrol Amazon EKS. Titik akhir ini terutama berguna ketika melihat metrik tertentu.
kubectl get --raw /metrics
Contoh output adalah sebagai berikut.
[...]
# HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.
# TYPE rest_client_requests_total counter
rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994
rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1
rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06
rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173
rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2
rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3
rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8
# HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts
# TYPE ssh_tunnel_open_count counter
ssh_tunnel_open_count 0
# HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts
# TYPE ssh_tunnel_open_fail_count counter
ssh_tunnel_open_fail_count 0
Output mentah ini mengembalikan kata per kata yang ditampilkan server API.
Ambil metrik bidang kontrol dengan metrics.eks.amazonaws.com
Untuk cluster yang versi Kubernetes ke 1.28
atas, Amazon EKS juga mengekspos metrik di bawah grup API. metrics.eks.amazonaws.com
Metrik ini mencakup komponen bidang kontrol seperti kube-scheduler
dankube-controller-manager
.
catatan
Jika Anda memiliki konfigurasi webhook yang dapat memblokir pembuatan APIService
sumber daya baru v1.metrics.eks.amazonaws.com
di klaster Anda, fitur titik akhir metrik mungkin tidak tersedia. Anda dapat memverifikasinya di log kube-apiserver
audit dengan mencari v1.metrics.eks.amazonaws.com
kata kunci.
Ambil metrik kube-scheduler
Untuk mengambil kube-scheduler
metrik, gunakan perintah berikut.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics"
Contoh output adalah sebagai berikut.
# TYPE scheduler_pending_pods gauge
scheduler_pending_pods{queue="active"} 0
scheduler_pending_pods{queue="backoff"} 0
scheduler_pending_pods{queue="gated"} 0
scheduler_pending_pods{queue="unschedulable"} 18
# HELP scheduler_pod_scheduling_attempts [STABLE] Number of attempts to successfully schedule a pod.
# TYPE scheduler_pod_scheduling_attempts histogram
scheduler_pod_scheduling_attempts_bucket{le="1"} 79
scheduler_pod_scheduling_attempts_bucket{le="2"} 79
scheduler_pod_scheduling_attempts_bucket{le="4"} 79
scheduler_pod_scheduling_attempts_bucket{le="8"} 79
scheduler_pod_scheduling_attempts_bucket{le="16"} 79
scheduler_pod_scheduling_attempts_bucket{le="+Inf"} 81
[...]
Ambil metrik kube-controller-manager
Untuk mengambil kube-controller-manager
metrik, gunakan perintah berikut.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics"
Contoh output adalah sebagai berikut.
[...]
workqueue_work_duration_seconds_sum{name="pvprotection"} 0
workqueue_work_duration_seconds_count{name="pvprotection"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-08"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-07"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-06"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-06"} 0
workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-05"} 19
workqueue_work_duration_seconds_bucket{name="replicaset",le="0.001"} 109
workqueue_work_duration_seconds_bucket{name="replicaset",le="0.01"} 139
workqueue_work_duration_seconds_bucket{name="replicaset",le="0.1"} 181
workqueue_work_duration_seconds_bucket{name="replicaset",le="1"} 191
workqueue_work_duration_seconds_bucket{name="replicaset",le="10"} 191
workqueue_work_duration_seconds_bucket{name="replicaset",le="+Inf"} 191
workqueue_work_duration_seconds_sum{name="replicaset"} 4.265655885000002
[...]
Memahami metrik scheduler dan controller manager
Tabel berikut menjelaskan metrik penjadwal dan manajer pengontrol yang tersedia untuk pengikisan gaya Prometheus. Untuk informasi selengkapnya tentang metrik ini, lihat Referensi Metrik Kubernetes di dokumentasi
Metrik | Komponen bidang kontrol | Deskripsi |
---|---|---|
scheduler_pending_pods |
penjadwal |
Jumlah Pod yang menunggu untuk dijadwalkan ke sebuah node untuk dieksekusi. |
scheduler_schedule_attempts_total |
penjadwal |
Jumlah upaya yang dilakukan untuk menjadwalkan Pod. |
scheduler_preemption_attempts_total |
penjadwal |
Jumlah upaya yang dilakukan oleh penjadwal untuk menjadwalkan Pod prioritas yang lebih tinggi dengan mengusir Pod prioritas yang lebih rendah. |
scheduler_preemption_victims |
penjadwal |
Jumlah Pod yang telah dipilih untuk penggusuran untuk memberi ruang bagi Pod dengan prioritas yang lebih tinggi. |
scheduler_pod_scheduling_attempts |
penjadwal |
Jumlah upaya untuk berhasil menjadwalkan sebuah Pod. |
scheduler_scheduling_attempt_duration_seconds |
penjadwal |
Menunjukkan seberapa cepat atau lambat scheduler dapat menemukan tempat yang cocok untuk menjalankan Pod berdasarkan berbagai faktor seperti ketersediaan sumber daya dan aturan penjadwalan. |
scheduler_pod_scheduling_sli_duration_seconds |
penjadwal |
end-to-endLatensi untuk Pod sedang dijadwalkan, sejak Pod memasuki antrean penjadwalan. Ini mungkin melibatkan beberapa upaya penjadwalan. |
kube_pod_resource_request |
penjadwal |
Sumber daya yang diminta oleh beban kerja pada klaster, dipecah oleh Pod. Ini menunjukkan penggunaan sumber daya yang diharapkan oleh scheduler dan kubelet per Pod untuk sumber daya bersama dengan unit untuk sumber daya jika ada. |
kube_pod_resource_limit |
penjadwal |
Batas sumber daya untuk beban kerja di klaster, dipecah berdasarkan Pod. Ini menunjukkan penggunaan sumber daya yang diharapkan oleh scheduler dan kubelet per Pod untuk sumber daya bersama dengan unit untuk sumber daya jika ada. |
cronjob_controller_job_creation_skew_duration_seconds |
manajer pengontrol |
Waktu antara kapan cronjob dijadwalkan untuk dijalankan, dan saat pekerjaan yang sesuai dibuat. |
workqueue_depth |
manajer pengontrol |
Kedalaman antrian saat ini. |
workqueue_adds_total |
manajer pengontrol |
Jumlah total penambahan ditangani oleh workqueue. |
workqueue_queue_duration_seconds |
manajer pengontrol |
Waktu dalam hitungan detik item tetap berada dalam antrean kerja sebelum diminta. |
workqueue_work_duration_seconds |
manajer pengontrol |
Waktu dalam hitungan detik memproses item dari antrean kerja membutuhkan waktu. |
Terapkan scraper Prometheus untuk mengikis metrik secara konsisten
Untuk menerapkan scraper Prometheus untuk mengikis metrik secara konsisten, gunakan konfigurasi berikut:
---
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-conf
data:
prometheus.yml: |-
global:
scrape_interval: 30s
scrape_configs:
# apiserver metrics
- job_name: apiserver-metrics
kubernetes_sd_configs:
- role: endpoints
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels:
[
__meta_kubernetes_namespace,
__meta_kubernetes_service_name,
__meta_kubernetes_endpoint_port_name,
]
action: keep
regex: default;kubernetes;https
# Scheduler metrics
- job_name: 'ksh-metrics'
kubernetes_sd_configs:
- role: endpoints
metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels:
[
__meta_kubernetes_namespace,
__meta_kubernetes_service_name,
__meta_kubernetes_endpoint_port_name,
]
action: keep
regex: default;kubernetes;https
# Controller Manager metrics
- job_name: 'kcm-metrics'
kubernetes_sd_configs:
- role: endpoints
metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels:
[
__meta_kubernetes_namespace,
__meta_kubernetes_service_name,
__meta_kubernetes_endpoint_port_name,
]
action: keep
regex: default;kubernetes;https
---
apiVersion: v1
kind: Pod
metadata:
name: prom-pod
spec:
containers:
- name: prom-container
image: prom/prometheus
ports:
- containerPort: 9090
volumeMounts:
- name: config-volume
mountPath: /etc/prometheus/
volumes:
- name: config-volume
configMap:
name: prometheus-conf
Izin yang mengikuti diperlukan untuk Pod untuk mengakses endpoint metrik baru.
{
"effect": "allow",
"apiGroups": [
"metrics.eks.amazonaws.com"
],
"resources": [
"kcm/metrics",
"ksh/metrics"
],
"verbs": [
"get"
] },
Untuk menambal peran yang digunakan, Anda dapat menggunakan perintah berikut.
kubectl patch clusterrole <role-name> --type=json -p='[
{
"op": "add",
"path": "/rules/-",
"value": {
"verbs": ["get"],
"apiGroups": ["metrics.eks.amazonaws.com"],
"resources": ["kcm/metrics", "ksh/metrics"]
}
}
]'
Kemudian Anda dapat melihat dasbor Prometheus dengan mem-proxy port scraper Prometheus ke port lokal Anda.
kubectl port-forward pods/prom-pod 9090:9090
Untuk klaster Amazon EKS Anda, metrik bidang kontrol Kubernetes inti juga dimasukkan ke dalam Metrik Amazon CloudWatch di bawah namespace. AWS/EKS
Untuk melihatnya, buka CloudWatch konsolAWS/EKS
namespace dan dimensi metrik untuk klaster Anda.