ade*_*asi 2 kubernetes prometheus kubectl
我有一个Kubernetes集群,想知道我的容器使用多少磁盘空间。我不是在谈论已安装的卷。
我可以通过使用docker命令(例如docker system df -v或)来获取此信息docker ps -s,但我不想连接到每个工作节点。
有没有办法通过获取容器的磁盘使用率,kubectl还是有kubelet指标可以从中获取此信息?
是的,但目前不适用于kubectl,您可以通过kube-apiserver(代理)或直接调用kubelet HTTP服务器端点(默认端口)从kubelet获取指标10250。磁盘指标通常在/stats/summary终结点计算机上可用,您还可以在/metrics/cavisor终结点计算机上找到一些cAdvisor指标。
例如,要获取通过kube-apiserver返回的第一个容器中的第一个容器的“ usedBytes” :
$ curl -k -s -H 'Authorization: Bearer <REDACTED>' \
https://kube-apiserver:6443/api/v1/nodes/<node-name>/proxy/stats/summary \
| jq '.pods[0].containers[0].rootfs.usedBytes'
Run Code Online (Sandbox Code Playgroud)
Bearer令牌可以是绑定到ClusterRole的服务帐户令牌,如下所示:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
name: myrole
rules:
- apiGroups:
- ""
resources:
- nodes
- nodes/proxy
verbs:
- get
- list
- watch
- nonResourceURLs:
- /metrics
- /api/*
verbs:
- get
Run Code Online (Sandbox Code Playgroud)
添加到 Rico 的答案中,您可以使用它kubectl来设置 API 服务器的代理,以便您可以查询 API,并处理服务器地址和身份验证的详细信息。
设置 API 服务器的本地代理
kubectl proxy --port=8080
Run Code Online (Sandbox Code Playgroud)
然后你可以使用类似的命令
curl http://localhost:8080/api/v1/nodes/<node-name>/proxy/stats/summary 2>/dev/null | jq '.pods[].containers[].rootfs.usedBytes'
Run Code Online (Sandbox Code Playgroud)
这将为您提供每个容器的 rootfs 使用情况列表。
| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |