Je souhaite surveiller les utilisations du disque des volumes persistants dans le cluster. J'utilise CoreOS Kube Prometheus . Un tableau de bord tente d'interroger avec une métrique appelée kubelet_volume_stats_capacity_bytes qui n'est plus disponible avec les versions de Kubernetes à partir de la v1.12.
J'utilise Kubernetes version v1.13.4 et hostpath-provisioner pour provisionner les volumes en fonction de la revendication de volume persistant. Je souhaite accéder aux mesures actuelles d'utilisation du disque pour chaque volume persistant.
kube_persistentvolumeclaim_resource_requests_storage_bytes est disponible mais il affiche uniquement la demande de revendication persistante en octets
container_fs_usage_bytes ne couvre pas entièrement mon problème.
Oui, dans la dernière version de Kubernetes, vous ne pouvez pas surveiller des métriques telles que kubelet_volume_stats_capacity_bytes , mais il existe des solutions de contournement. Malheureusement, c'est un peu fragmenté dans Kubernetes aujourd'hui. Les PVC peuvent avoir des mesures de capacité et d'utilisation, selon le fournisseur de volume, et il semble que tout volume basé sur CSI ne les ait pas du tout. Nous pouvons le faire au mieux, mais il est simple d'atteindre rapidement les cas où ces mesures ne sont pas disponibles.
Tout d'abord, écrivez simplement votre propre script qui sera à chaque fois que des valeurs de métrique comme container_fs_usage_bytes sont rassemblées seront la différence de capacité entre la mesure avant la mesure et l'utilisation du conteneur dans octets (la mesure sera container_fs_usage_bytes utile).
Prometheus est une solution assez populaire, mais pour surveiller la capacité, en particulier l'utilisation du disque, vous pouvez utiliser Heapster, maintenant il est sur le point de "se retirer", mais pour ce cas particulier, vous pouvez l'utiliser, mais vous devrez également implémenter un script. Jetez un oeil sur le référentiel: heapster-memory
"res.Containers = append (res.Containers, metrics.ContainerMetrics {Name: c.Name, Usage: usage})"
J'espère que ça aide.
J'ai un travail comme celui-ci dans ma configuration de bal:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics
Avec ce travail en place, je vois les métriques suivantes disponibles dans Prometheus:
kubelet_volume_stats_available_bytes
kubelet_volume_stats_capacity_bytes
kubelet_volume_stats_inodes
kubelet_volume_stats_inodes_free
kubelet_volume_stats_inodes_used
kubelet_volume_stats_used_bytes