Hilf mit, diese Seite zu verbessern
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Die Kubernetes-Steuerebene stellt eine Reihe von Metriken zur Verfügung, die in einem Prometheus-Format dargestellt werden.
Um die Ausgabe der Rohmetriken anzuzeigen, ersetzen Sie den folgenden endpoint
Befehl und führen Sie ihn aus.
kubectl get --raw endpoint
Mit diesem Befehl können Sie einen beliebigen Endpunktpfad übergeben und die Rohantwort zurückgeben. In der Ausgabe werden verschiedene Metriken aufgeführt line-by-line, wobei jede Zeile einen Metriknamen, Tags und einen Wert enthält.
metric_name{tag="value"[,...]} value
Metriken vom API-Server abrufen
Der allgemeine API-Serverendpunkt ist auf der Amazon EKS-Steuerebene verfügbar. Dieser Endpunkt ist in erster Linie nützlich, wenn Sie sich eine bestimmte Metrik ansehen.
kubectl get --raw /metrics
Eine Beispielausgabe sieht wie folgt aus.
[...]
# 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
Diese Rohausgabe zeigt exakt das, was der API-Server bereitstellt.
Rufen Sie Metriken der Kontrollebene ab mit metrics.eks.amazonaws.com
Für Cluster mit Kubernetes-Version 1.28
und höher stellt Amazon EKS auch Metriken unter der API-Gruppe zur Verfügung. metrics.eks.amazonaws.com
Zu diesen Metriken gehören Komponenten der Steuerungsebene wie und. kube-scheduler
kube-controller-manager
Anmerkung
Wenn Sie über eine Webhook-Konfiguration verfügen, die die Erstellung der neuen APIService
Ressource in v1.metrics.eks.amazonaws.com
Ihrem Cluster blockieren könnte, ist die Metrik-Endpunktfunktion möglicherweise nicht verfügbar. Sie können dies im kube-apiserver
Audit-Protokoll überprüfen, indem Sie nach dem v1.metrics.eks.amazonaws.com
Schlüsselwort suchen.
Metriken abrufen kube-scheduler
Verwenden Sie den folgenden Befehl, um kube-scheduler
Metriken abzurufen.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics"
Eine Beispielausgabe sieht wie folgt aus.
# 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
[...]
Metriken abrufen kube-controller-manager
Verwenden Sie den folgenden Befehl, um kube-controller-manager
Metriken abzurufen.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics"
Eine Beispielausgabe sieht wie folgt aus.
[...]
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
[...]
Machen Sie sich mit den Metriken für Scheduler und Controller Manager vertraut
In der folgenden Tabelle werden die Scheduler- und Controller-Manager-Metriken beschrieben, die für Scraping im Prometheus-Stil zur Verfügung gestellt werden. Weitere Informationen zu diesen Metriken finden Sie unter Kubernetes Metrics Reference in der Kubernetes-Dokumentation
Metrik | Komponente der Steuerungsebene | Beschreibung |
---|---|---|
scheduler_pending_pods |
Scheduler |
Die Anzahl der Pods, die darauf warten, zur Ausführung auf einem Knoten geplant zu werden. |
scheduler_schedule_attempts_total |
Scheduler |
Die Anzahl der Versuche, Pods zu planen. |
scheduler_preemption_attempts_total |
Scheduler |
Die Anzahl der Versuche des Schedulers, Pods mit höherer Priorität einzuplanen, indem er Pods mit niedrigerer Priorität entfernt. |
scheduler_preemption_victims |
Scheduler |
Die Anzahl der Pods, die für die Räumung ausgewählt wurden, um Platz für Pods mit höherer Priorität zu schaffen. |
scheduler_pod_scheduling_attempts |
Scheduler |
Die Anzahl der Versuche, einen Pod erfolgreich zu planen. |
scheduler_scheduling_attempt_duration_seconds |
Scheduler |
Gibt an, wie schnell oder langsam der Scheduler auf der Grundlage verschiedener Faktoren wie Ressourcenverfügbarkeit und Planungsregeln in der Lage ist, einen geeigneten Ort für die Ausführung eines Pods zu finden. |
scheduler_pod_scheduling_sli_duration_seconds |
Scheduler |
Die end-to-end Latenz für einen geplanten Pod ab dem Zeitpunkt, zu dem der Pod in die Warteschlange für die Terminplanung aufgenommen wird. Dies kann mehrere Planungsversuche beinhalten. |
kube_pod_resource_request |
Scheduler |
Die von Workloads auf dem Cluster angeforderten Ressourcen, aufgeschlüsselt nach Pods. Dies zeigt die Ressourcennutzung, die der Scheduler und Kubelet pro Pod für Ressourcen erwarten, sowie die Einheit für die Ressource, falls vorhanden. |
kube_pod_resource_limit |
Scheduler |
Das Ressourcenlimit für Workloads auf dem Cluster, aufgeschlüsselt nach Pods. Dies zeigt die Ressourcennutzung, die der Scheduler und Kubelet pro Pod für Ressourcen erwarten, sowie die Einheit für die Ressource, falls vorhanden. |
cronjob_controller_job_creation_skew_duration_seconds |
Controller-Manager |
Die Zeit zwischen der geplanten Ausführung eines Cronjobs und der Erstellung des entsprechenden Jobs. |
workqueue_depth |
Controller-Manager |
Die aktuelle Tiefe der Warteschlange. |
workqueue_adds_total |
Controller-Manager |
Die Gesamtzahl der von der Workqueue verarbeiteten Hinzufügungen. |
workqueue_queue_duration_seconds |
Controller-Manager |
Die Zeit in Sekunden, in der ein Element in der Arbeitswarteschlange verbleibt, bevor es angefordert wird. |
workqueue_work_duration_seconds |
Controller-Manager |
Die Zeit in Sekunden, die die Verarbeitung eines Elements aus der Arbeitswarteschlange dauert. |
Setzen Sie einen Prometheus-Scraper ein, um Kennzahlen konsistent zu erfassen
Verwenden Sie die folgende Konfiguration, um einen Prometheus-Scraper einzusetzen, um die Metriken konsistent zu erfassen:
---
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
Die folgende Berechtigung ist erforderlich, damit der Pod auf den neuen Metriken-Endpunkt zugreifen kann.
{
"effect": "allow",
"apiGroups": [
"metrics.eks.amazonaws.com"
],
"resources": [
"kcm/metrics",
"ksh/metrics"
],
"verbs": [
"get"
] },
Um die verwendete Rolle zu patchen, können Sie den folgenden Befehl verwenden.
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"]
}
}
]'
Anschließend können Sie das Prometheus-Dashboard anzeigen, indem Sie den Port des Prometheus-Scrapers an Ihren lokalen Port weiterleiten.
kubectl port-forward pods/prom-pod 9090:9090
Für Ihren Amazon EKS-Cluster werden die Kernmetriken der Kubernetes-Steuerebene auch in Amazon CloudWatch Metrics unter dem Namespace aufgenommen. AWS/EKS
Um sie anzuzeigen, öffnen Sie die CloudWatch KonsoleAWS/EKS
Namespace und eine Metrikdimension für Ihren Cluster aus.