|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
HPAs mit kubectl verwalten
Dieser Abschnitt beschreibt die Verwaltung von HPAs mit kubectl. Dieses Dokument enthält Anweisungen, wie man:
-
Ein HPA erstellen
-
Informationen zu HPAs abrufen
-
Ein HPA löschen
-
Ihre HPAs so konfigurieren, dass sie mit der CPU- oder Speicherauslastung skalieren
-
Ihre HPAs so konfigurieren, dass sie mit benutzerdefinierten Metriken skalieren, wenn Sie ein Drittanbieter-Tool wie Prometheus für Metriken verwenden
Sie können HPAs über die Rancher UI erstellen, anzeigen und löschen. Sie können sie auch so konfigurieren, dass sie basierend auf der CPU- oder Speicherauslastung über die Rancher UI skalieren. Für weitere Informationen siehe HPAs mit der Rancher UI verwalten. Für die Skalierung von HPAs basierend auf anderen Metriken als CPU oder Speicher benötigen Sie weiterhin kubectl.
Grundlegender kubectl-Befehl zur Verwaltung von HPAs
Wenn Sie eine HPA-Manifestdatei haben, können Sie HPAs mit kubectl erstellen, verwalten und löschen:
-
HPA erstellen
-
Mit Manifest:
kubectl create -f <HPA_MANIFEST> -
Ohne Manifest (nur Unterstützung für CPU):
kubectl autoscale deployment hello-world --min=2 --max=5 --cpu-percent=50
-
-
HPA-Informationen abrufen
-
Grundlegend:
kubectl get hpa hello-world -
Detaillierte Beschreibung:
kubectl describe hpa hello-world
-
-
HPA löschen
-
kubectl delete hpa hello-world
-
Beispiel für die HPA-Manifestdefinition
Das HPA-Manifest ist die Konfigurationsdatei, die zur Verwaltung eines HPA mit kubectl verwendet wird.
Der folgende Ausschnitt zeigt die Verwendung verschiedener Direktiven in einem HPA-Manifest. Siehe die Liste unter dem Beispiel, um den Zweck jeder Direktive zu verstehen.
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: hello-world
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: hello-world
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 50
- type: Resource
resource:
name: memory
targetAverageValue: 100Mi
| Direktive | Beschreibung |
|---|---|
|
Die Version der verwendeten Kubernetes |
|
Zeigt an, dass HPA Autoskalierung für die |
|
Zeigt an, dass die minimale Anzahl der laufenden Replikate nicht unter 1 fallen kann. |
|
Zeigt an, dass die maximale Anzahl der Replikate in der Implementierung nicht über 10 steigen kann. |
|
Zeigt an, dass die Implementierung Pods hochskaliert, wenn der durchschnittliche laufende Pod mehr als 50 % seiner angeforderten CPU verwendet. |
|
Zeigt an, dass die Implementierung Pods hochskaliert, wenn der durchschnittliche laufende Pod mehr als 100Mi Speicher verwendet. |
Konfiguration von HPA zur Skalierung mit Ressourcenmetriken (CPU und Speicher)
Cluster, die in Rancher v2.0.7 und höher erstellt wurden, haben alle erforderlichen Voraussetzungen (Metrics-Server und Kubernetes-Clusterkonfiguration), um den Horizontal Pod Autoscaler zu verwenden.
Führen Sie die folgenden Befehle aus, um zu überprüfen, ob Metriken in Ihrer Installation verfügbar sind:
$ kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% node-controlplane 196m 9% 1623Mi 42% node-etcd 80m 4% 1090Mi 28% node-worker 64m 3% 1146Mi 29% $ kubectl -n kube-system top pods NAME CPU(cores) MEMORY(bytes) canal-pgldr 18m 46Mi canal-vhkgr 20m 45Mi canal-x5q5v 17m 37Mi canal-xknnz 20m 37Mi kube-dns-7588d5b5f5-298j2 0m 22Mi kube-dns-autoscaler-5db9bbb766-t24hw 0m 5Mi metrics-server-97bc649d5-jxrlt 0m 12Mi $ kubectl -n kube-system logs -l k8s-app=metrics-server I1002 12:55:32.172841 1 heapster.go:71] /metrics-server --source=kubernetes.summary_api:https://kubernetes.default.svc?kubeletHttps=true&kubeletPort=10250&useServiceAccount=true&insecure=true I1002 12:55:32.172994 1 heapster.go:72] Metrics Server version v0.2.1 I1002 12:55:32.173378 1 configs.go:61] Using Kubernetes client with master "https://kubernetes.default.svc" and version I1002 12:55:32.173401 1 configs.go:62] Using kubelet port 10250 I1002 12:55:32.173946 1 heapster.go:128] Starting with Metric Sink I1002 12:55:32.592703 1 serving.go:308] Generated self-signed cert (apiserver.local.config/certificates/apiserver.crt, apiserver.local.config/certificates/apiserver.key) I1002 12:55:32.925630 1 heapster.go:101] Starting Heapster API server... [restful] 2018/10/02 12:55:32 log.go:33: [restful/swagger] listing is available at https:///swaggerapi [restful] 2018/10/02 12:55:32 log.go:33: [restful/swagger] https:///swaggerui/ is mapped to folder /swagger-ui/ I1002 12:55:32.928597 1 serve.go:85] Serving securely on 0.0.0.0:443
Konfiguration von HPA zur Skalierung mit benutzerdefinierten Metriken mit Prometheus
Sie können HPA so konfigurieren, dass es basierend auf benutzerdefinierten Metriken, die von Drittanbieter-Software bereitgestellt werden, automatisch skaliert. Der häufigste Anwendungsfall für Autoskalierung mit Drittanbieter-Software basiert auf Anwendungsebene-Metriken (d.h. HTTP-Anfragen pro Sekunde). HPA verwendet die custom.metrics.k8s.io API, um diese Metriken zu konsumieren. Diese API wird aktiviert, indem ein benutzerdefinierter Metrikenadapter für die Metrik-Sammlungslösung bereitgestellt wird.
Für dieses Beispiel werden wir Prometheus verwenden. Wir beginnen mit den folgenden Annahmen:
-
Prometheus ist im Cluster bereitgestellt.
-
Prometheus ist korrekt konfiguriert und sammelt ordnungsgemäße Metriken von Pods, Knoten, Namespaces usw.
-
Prometheus ist unter der folgenden URL und dem folgenden Port verfügbar:
http://prometheus.mycompany.io:80
Prometheus ist im Rancher v2.0 Katalog für die Bereitstellung verfügbar. Stellen Sie es aus dem Rancher-Katalog bereit, wenn es nicht bereits in Ihrem Cluster läuft.
Damit HPA benutzerdefinierte Metriken von Prometheus verwenden kann, ist das Paket k8s-prometheus-adapter im kube-system Namespace Ihres Clusters erforderlich. Um k8s-prometheus-adapter zu installieren, verwenden wir das Helm-Chart, das unter banzai-charts verfügbar ist.
-
Initialisieren Sie Helm in Ihrem Cluster.
# kubectl -n kube-system create serviceaccount tiller kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller helm init --service-account tiller
-
Klonen Sie das
banzai-chartsRepository von GitHub:# git clone https://github.com/banzaicloud/banzai-charts
-
Installieren Sie das
prometheus-adapterChart und geben Sie die Prometheus-URL sowie die Portnummer an.# helm install --name prometheus-adapter banzai-charts/prometheus-adapter --set prometheus.url="http://prometheus.mycompany.io",prometheus.port="80" --namespace kube-system
-
Überprüfen Sie, ob
prometheus-adapterordnungsgemäß läuft. Überprüfen Sie den Dienst-Pod und die Protokolle imkube-systemNamespace. -
Überprüfen Sie, ob der Dienst-Pod
Runningist. Geben Sie den folgenden Befehl ein. ` # kubectl get pods -n kube-system ` Suchen Sie in der resultierenden Ausgabe nach einem Status vonRunning.+ NAME READY STATUS RESTARTS AGE … prometheus-adapter-prometheus-adapter-568674d97f-hbzfx 1/1 Running 0 7h … + -
Überprüfen Sie die Dienstprotokolle, um sicherzustellen, dass der Dienst korrekt läuft, indem Sie den folgenden Befehl eingeben. ` # kubectl logs prometheus-adapter-prometheus-adapter-568674d97f-hbzfx -n kube-system ` Überprüfen Sie dann die Protokollausgabe, um zu bestätigen, dass der Dienst läuft.
.Prometheus Adaptor Logs [%collapsible] ====== ... I0724 10:18:45.696679 1 round_trippers.go:436] GET https://10.43.0.1:443/api/v1/namespaces/default/pods?labelSelector=app%3Dhello-world 200 OK in 2 milliseconds I0724 10:18:45.696695 1 round_trippers.go:442] Response Headers: I0724 10:18:45.696699 1 round_trippers.go:445] Date: Tue, 24 Jul 2018 10:18:45 GMT I0724 10:18:45.696703 1 round_trippers.go:445] Content-Type: application/json I0724 10:18:45.696706 1 round_trippers.go:445] Content-Length: 2581 I0724 10:18:45.696766 1 request.go:836] Response Body: {"kind":"PodList","apiVersion":"v1","metadata":{"selfLink":"/api/v1/namespaces/default/pods","resourceVersion":"6237"},"items":[{"metadata":{"name":"hello-world-54764dfbf8-q6l82","generateName":"hello-world-54764dfbf8-","namespace":"default","selfLink":"/api/v1/namespaces/default/pods/hello-world-54764dfbf8-q6l82","uid":"484cb929-8f29-11e8-99d2-067cac34e79c","resourceVersion":"4066","creationTimestamp":"2018-07-24T10:06:50Z","labels":{"app":"hello-world","pod-template-hash":"1032089694"},"annotations":{"cni.projectcalico.org/podIP":"10.42.0.7/32"},"ownerReferences":[{"apiVersion":"extensions/v1beta1","kind":"ReplicaSet","name":"hello-world-54764dfbf8","uid":"4849b9b1-8f29-11e8-99d2-067cac34e79c","controller":true,"blockOwnerDeletion":true}]},"spec":{"volumes":[{"name":"default-token-ncvts","secret":{"secretName":"default-token-ncvts","defaultMode":420}}],"containers":[{"name":"hello-world","image":"rancher/hello-world","ports":[{"containerPort":80,"protocol":"TCP"}],"resources":{"requests":{"cpu":"500m","memory":"64Mi"}},"volumeMounts":[{"name":"default-token-ncvts","readOnly":true,"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount"}],"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","imagePullPolicy":"Always"}],"restartPolicy":"Always","terminationGracePeriodSeconds":30,"dnsPolicy":"ClusterFirst","serviceAccountName":"default","serviceAccount":"default","nodeName":"34.220.18.140","securityContext":{},"schedulerName":"default-scheduler","tolerations":[{"key":"node.kubernetes.io/not-ready","operator":"Exists","effect":"NoExecute","tolerationSeconds":300},{"key":"node.kubernetes.io/unreachable","operator":"Exists","effect":"NoExecute","tolerationSeconds":300}]},"status":{"phase":"Running","conditions":[{"type":"Initialized","status":"True","lastProbeTime":null,"lastTransitionTime":"2018-07-24T10:06:50Z"},{"type":"Ready","status":"True","lastProbeTime":null,"lastTransitionTime":"2018-07-24T10:06:54Z"},{"type":"PodScheduled","status":"True","lastProbeTime":null,"lastTransitionTime":"2018-07-24T10:06:50Z"}],"hostIP":"34.220.18.140","podIP":"10.42.0.7","startTime":"2018-07-24T10:06:50Z","containerStatuses":[{"name":"hello-world","state":{"running":{"startedAt":"2018-07-24T10:06:54Z"}},"lastState":{},"ready":true,"restartCount":0,"image":"rancher/hello-world:latest","imageID":"docker-pullable://rancher/hello-world@sha256:4b1559cb4b57ca36fa2b313a3c7dde774801aa3a2047930d94e11a45168bc053","containerID":"docker://cce4df5fc0408f03d4adf82c90de222f64c302bf7a04be1c82d584ec31530773"}],"qosClass":"Burstable"}}]} I0724 10:18:45.699525 1 api.go:74] GET http://prometheus-server.prometheus.34.220.18.140.xip.io/api/v1/query?query=sum%28rate%28container_fs_read_seconds_total%7Bpod_name%3D%22hello-world-54764dfbf8-q6l82%22%2Ccontainer_name%21%3D%22POD%22%2Cnamespace%3D%22default%22%7D%5B5m%5D%29%29by%28pod_name%29&time=1532427525.697 200 OK I0724 10:18:45.699620 1 api.go:93] Response Body: {"status":"success","data":{"resultType":"vector","result":[{"metric":{"pod_name":"hello-world-54764dfbf8-q6l82"},"value":[1532427525.697,"0"]}]}} I0724 10:18:45.699939 1 wrap.go:42] GET /apis/custom.metrics.k8s.io/v1beta1/namespaces/default/pods/%2A/fs_read?labelSelector=app%3Dhello-world: (12.431262ms) 200 [[kube-controller-manager/v1.10.1 (linux/amd64) kubernetes/d4ab475/system:serviceaccount:kube-system:horizontal-pod-autoscaler] 10.42.0.0:24268] I0724 10:18:51.727845 1 request.go:836] Request Body: {"kind":"SubjectAccessReview","apiVersion":"authorization.k8s.io/v1beta1","metadata":{"creationTimestamp":null},"spec":{"nonResourceAttributes":{"path":"/","verb":"get"},"user":"system:anonymous","group":["system:unauthenticated"]},"status":{"allowed":false}} ... ====== -
Überprüfen Sie, ob die Metriken-API von kubectl aus zugänglich ist.
-
Wenn Sie direkt auf den Cluster zugreifen, geben Sie Ihre Server-URL im kubectl-Konfigurationsformat wie folgt ein:
https://<Kubernetes_URL>:6443.# kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1
Wenn die API zugänglich ist, sollten Sie eine Ausgabe erhalten, die der folgenden ähnlich ist.
API-Antwort
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"custom.metrics.k8s.io/v1beta1","resources":[{"name":"pods/fs_usage_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_rss","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_cpu_period","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_cfs_throttled","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_io_time","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_read","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_sector_writes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_user","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/last_seen","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/tasks_state","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_cpu_quota","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/start_time_seconds","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_write","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_cache","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_usage_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_cfs_periods","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_cfs_throttled_periods","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_reads_merged","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_working_set_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/network_udp_usage","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_inodes_free","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_inodes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_io_time_weighted","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_failures","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_swap","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_cpu_shares","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_memory_swap_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_usage","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_io_current","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_writes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_failcnt","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_reads","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_writes_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_writes_merged","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/network_tcp_usage","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_max_usage_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_memory_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_memory_reservation_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_load_average_10s","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_system","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_reads_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_sector_reads","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]}]}
-
Wenn Sie über Rancher auf den Cluster zugreifen, geben Sie Ihre Server-URL im kubectl-Konfigurationsformat wie folgt ein:
https://<RANCHER_URL>/k8s/clusters/<CLUSTER_ID>. Fügen Sie den Suffix/k8s/clusters/<CLUSTER_ID>dem API-Pfad hinzu.# kubectl get --raw /k8s/clusters/<CLUSTER_ID>/apis/custom.metrics.k8s.io/v1beta1
Wenn die API zugänglich ist, sollten Sie eine Ausgabe erhalten, die der folgenden ähnlich ist.
API-Antwort
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"custom.metrics.k8s.io/v1beta1","resources":[{"name":"pods/fs_usage_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_rss","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_cpu_period","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_cfs_throttled","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_io_time","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_read","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_sector_writes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_user","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/last_seen","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/tasks_state","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_cpu_quota","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/start_time_seconds","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_write","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_cache","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_usage_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_cfs_periods","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_cfs_throttled_periods","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_reads_merged","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_working_set_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/network_udp_usage","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_inodes_free","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_inodes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_io_time_weighted","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_failures","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_swap","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_cpu_shares","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_memory_swap_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_usage","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_io_current","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_writes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_failcnt","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_reads","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_writes_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_writes_merged","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/network_tcp_usage","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/memory_max_usage_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_memory_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/spec_memory_reservation_limit_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_load_average_10s","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/cpu_system","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_reads_bytes","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},{"name":"pods/fs_sector_reads","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]}]}
-