Как получить использование диска контейнера в Kubernetes (без команды docker)? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть кластер Kubernetes, и я хочу знать, сколько дискового пространства используют мои контейнеры. Я не говорю о подключенных томах.

Я могу получить эту информацию с помощью команд Docker, таких как docker system df -v или docker ps -s, но я не хочу подключаться к каждому отдельному рабочему узлу.

Есть ли способ получить использование диска контейнера через kubectl или есть метрики kubelet, откуда я могу получить эту информацию?

1 Ответ

0 голосов
/ 16 ноября 2018

Да, но в настоящее время не с kubectl, вы можете получать метрики из kubelet , либо через kube-apiserver (прокси), либо напрямую вызывая конечную точку сервера kubelet HTTP (s) (порт по умолчанию * 1003) *). Дисковые метрики обычно доступны на конечной точке /stats/summary, и вы также можете найти некоторые cAdvisor метрики на конечной точке /metrics/cavisor.

Например, чтобы получить 'usedBytes' для первого контейнера в первом модуле, возвращенного через kube-apiserver :

$ 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'

Маркер 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
...