Aiutaci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Recupera le metriche grezze del piano di controllo in Prometheus format
Il Kubernetes control plane espone una serie di metriche rappresentate in un formato Prometheus.
Per visualizzare l'output non elaborato delle metriche, esegui il comando seguente.
kubectl get --raw
endpoint
Questo comando consente di passare qualsiasi percorso dell'endpoint e restituisce la risposta non elaborata. L'output elenca diverse metriche line-by-line, con ogni riga che include un nome di metrica, tag e un valore.
metric_name{tag="value"[,...]} value
Recupera le metriche dal server API
L'endpoint generale API del server è esposto sul piano di EKS controllo di Amazon. Questo endpoint è utile principalmente quando si esamina una metrica specifica.
kubectl get --raw /metrics
Di seguito viene riportato un output di esempio:
[...] # 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
Questo output non elaborato restituisce alla lettera ciò che il server espone. API
Recupera le metriche del piano di controllo con metrics.eks.amazonaws.com
Per i nuovi cluster che sono Kubernetes versione 1.28
e successive, Amazon espone EKS anche le metriche relative al API gruppo. metrics.eks.amazonaws.com
Queste metriche includono componenti del piano di controllo come e. kube-scheduler
kube-controller-manager
Queste metriche sono disponibili anche per i cluster esistenti con una versione della piattaforma uguale o successiva rispetto alla tabella seguente.
Versione di Kubernetes | Versione della piattaforma |
---|---|
|
|
|
|
|
|
|
|
Nota
Se disponi di una configurazione webhook che potrebbe bloccare la creazione della nuova APIService
risorsa v1.metrics.eks.amazonaws.com
sul cluster, la funzionalità Metrics Endpoint potrebbe non essere disponibile. Puoi verificarlo nel registro di kube-apiserver
controllo cercando la parola chiave. v1.metrics.eks.amazonaws.com
Recupera kube-scheduler
le metriche
Per recuperare le kube-scheduler
metriche, utilizzate il seguente comando.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics"
Di seguito viene riportato un output di esempio:
# 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 [...]
Recupera le metriche kube-controller-manager
Per recuperare le kube-controller-manager
metriche, utilizzate il seguente comando.
kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics"
Di seguito viene riportato un output di esempio:
[...] 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 [...]
Comprendi le metriche dello scheduler e del controller manager
La tabella seguente descrive le metriche dello scheduler e del controller manager rese disponibili per Prometheus stile scraping. Per ulteriori informazioni su queste metriche, consulta Kubernetes
Parametro | Componente del piano di controllo | Descrizione |
---|---|---|
scheduler_pending_pods |
pianificatore |
Il numero di Pod che attendono di essere programmati su un nodo per l'esecuzione. |
scheduler_schedule_attempts_total |
pianificatore |
Il numero di tentativi effettuati per programmare i Pod. |
scheduler_preemption_attempts_total |
pianificatore |
Il numero di tentativi effettuati dallo scheduler per programmare i Pod con priorità più alta eliminando quelli con priorità inferiore. |
scheduler_preemption_victims |
pianificatore |
Il numero di Pod che sono stati selezionati per lo sfratto per fare spazio ai Pod con priorità più alta. |
scheduler_pod_scheduling_attempts |
pianificatore |
Il numero di tentativi di pianificare correttamente un Pod. |
scheduler_scheduling_attempt_duration_seconds |
pianificatore |
Indica la velocità o la lentezza con cui lo scheduler riesce a trovare un luogo adatto per l'esecuzione di un Pod in base a vari fattori come la disponibilità delle risorse e le regole di pianificazione. |
scheduler_pod_scheduling_sli_duration_seconds |
pianificatore |
La end-to-end latenza di un Pod in fase di pianificazione, dal momento in cui il Pod entra nella coda di pianificazione. Ciò potrebbe comportare più tentativi di pianificazione. |
kube_pod_resource_request |
pianificatore |
Le risorse richieste dai carichi di lavoro sul cluster, suddivise per Pod. Questo mostra l'utilizzo delle risorse che lo scheduler e kubelet prevedono per ogni Pod per le risorse, insieme all'eventuale unità per la risorsa. |
kube_pod_resource_limit |
pianificatore |
Il limite di risorse per i carichi di lavoro sul cluster, suddiviso per Pod. Questo mostra l'utilizzo delle risorse che lo scheduler e kubelet prevedono per ogni Pod per le risorse, insieme all'eventuale unità per la risorsa. |
cronjob_controller_job_creation_skew_duration_seconds |
gestore del controller |
Il tempo che intercorre tra la pianificazione dell'esecuzione di un cronjob e la creazione del job corrispondente. |
workqueue_depth |
gestore del controller |
La profondità attuale della coda. |
workqueue_adds_total |
gestore del controller |
Il numero totale di aggiunte gestite da workqueue. |
workqueue_queue_duration_seconds |
gestore del controller |
Il tempo in secondi in cui un elemento rimane nella coda di lavoro prima di essere richiesto. |
workqueue_work_duration_seconds |
gestore del controller |
Il tempo in secondi impiegato per l'elaborazione di un elemento dalla coda di lavoro. |
Implementa uno scraper Prometheus per acquisire metriche in modo coerente
Per implementare uno scraper Prometheus per analizzare in modo coerente le metriche, usa la seguente configurazione:
--- 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
L'autorizzazione che segue è richiesta per consentire al Pod di accedere al nuovo endpoint metrico.
{ "effect": "allow", "apiGroups": [ "metrics.eks.amazonaws.com" ], "resources": [ "kcm/metrics", "ksh/metrics" ], "verbs": [ "get" ] },
Per correggere il ruolo utilizzato, puoi usare il seguente comando.
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"] } } ]'
Quindi puoi visualizzare il Prometheus dashboard inviando tramite proxy la porta di Prometheus scraper verso la porta locale.
kubectl port-forward pods/prom-pod 9090:9090
Per il tuo EKS cluster Amazon, anche le principali metriche del piano di controllo di Kubernetes vengono inserite in Amazon Metrics sotto il namespace. CloudWatch AWS/EKS
Per visualizzarli, apri la CloudWatch consoleAWS/EKS
nomi e una dimensione delle metriche per il tuo cluster.
📝 Modifica questa pagina su GitHub