クラスター内の永続ボリュームのディスク使用量を監視したい。私は CoreOS Kube Prometheus を使用しています。ダッシュボードは、kubelet_volume_stats_capacity_bytesというメトリックでクエリを実行しようとしていますが、v1.12以降のKubernetesバージョンでは使用できません。
Kubernetesバージョンv1.13.4と hostpath-provisioner を使用して、永続的なボリュームの要求に基づいてボリュームをプロビジョニングしています。各永続ボリュームの現在のディスク使用状況メトリックにアクセスしたい。
kube_persistentvolumeclaim_resource_requests_storage_bytesは使用できますが、永続的な要求リクエストのみがバイト単位で表示されます
container_fs_usage_bytesは私の問題を完全にはカバーしていません。
はい。最新バージョンのKubernetesでは、kubelet_volume_stats_capacity_bytesなどの指標を監視できませんが、いくつかの回避策があります。残念ながら、これは今日のKubernetesでは少し断片化されています。ボリュームプロバイダーによっては、PVCに容量と使用状況のメトリックが含まれる場合があり、CSIベースのボリュームにはこれらがまったくないようです。これはベストエフォートベースで行うことができますが、これらのメトリックスが利用できない場合は簡単にすぐにヒットします。
最初に、container_fs_usage_bytesのようなメトリックの値が収集されるたびに独自のスクリプトを作成するだけで、測定前の容量とコンテナの使用量の違いがカウントされますバイト(メトリックはcontainer_fs_usage_bytesが役立ちます)。
Prometheusは非常に人気のあるソリューションですが、容量、特にディスク使用量を監視するにはHeapsterを使用できますが、今は「引退」しようとしていますが、この特別な場合にのみ使用できますが、スクリプトも実装する必要があります。リポジトリを見てみましょう: heapster-memory
"res.Containers = append(res.Containers、metrics.ContainerMetrics {Name:c.Name、Usage:usage})"
お役に立てば幸いです。
私のプロム構成には次のような仕事があります:
- 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
このジョブを実行すると、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