반응형
(도커 명령 없이) 쿠버네티스에서 컨테이너의 디스크 사용량을 가져오는 방법은 무엇입니까?
Kubernetes 클러스터가 있는데 컨테이너에서 사용하는 디스크 공간이 얼마인지 알고 싶습니다. 탑재된 볼륨을 말하는 것이 아닙니다.
또는 와 같은 도커 명령을 사용하여 이 정보를 얻을 수 있지만 모든 작업자 노드에 연결하고 싶지는 않습니다.
를 통해 컨테이너의 디스크 사용량을 확인할 수 있는 방법이 있습니까? 아니면 이 정보를 확인할 수 있는 큐브 메트릭이 있습니까?
예, 하지만 현재 kubectl을 사용하지 않고 kube-apiser 서버(프록시)를 통해 또는 kubelet HTTP(s) 서버 끝점(기본 포트)에 직접 호출하여 메트릭을 가져올 수 있습니다. 디스크 메트릭은 일반적으로 엔드포인트에서 사용할 수 있으며 일부 메트릭도 엔드포인트에서 찾을 수 있습니다.
예를 들어 첫 번째 포드의 첫 번째 컨테이너에 대한 '사용된 바이트'를 가져오려면 다음을 통해 반환됩니다:
$ 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'
베어러 토큰은 다음과 같이 클러스터 역할에 연결된 서비스 계정 토큰일 수 있습니다:
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
Rico의 답변에 추가하여 API 서버에 대한 프록시를 설정하여 서버 주소 및 인증에 대한 세부 정보를 API에 쿼리할 수 있습니다.
를 사용하여 API 서버에 대한 로컬 프록시 설정
kubectl proxy --port=8080
그런 다음 다음과 같은 명령을 사용할 수 있습니다
curl http://localhost:8080/api/v1/nodes/<node-name>/proxy/stats/summary 2>/dev/null | jq '.pods[].containers[].rootfs.usedBytes'
각 컨테이너별 rootfs 사용량 목록을 제공합니다.
Stephen의 답변에 덧붙여, 여기 당신이 크기(바이트)와 함께 포드 이름을 원하는지에 대한 컬 쿼리가 있다.
curl http://localhost:8080/api/v1/nodes/<node-name>/proxy/stats/summary 2>/dev/null | jq '.pods[].containers[] | "\(.name) \(.rootfs.usedBytes)"'
표 대신 을 사용하여 인쇄하는 하나의 추가 기능으로 사용합니다. 사이즈도 출력됩니다
echo -e "NODE\tNAMESPACE\tPOD\tCONTAINER\tROOTFS\tLOGS"
kubectl get --raw "/api/v1/nodes/${node}/proxy/stats/summary" | jq -r '. | .node.nodeName as $node | .pods[] | .podRef.namespace as $namespace | .podRef.name as $pod | .containers[] | [$node, $namespace, $pod, .name, .rootfs.usedBytes, .logs.usedBytes] | @tsv'
반응형
'개발하자' 카테고리의 다른 글
쿠베르네테스에서 사용되지 않는 비밀을 식별하는 방법은 무엇입니까? (0) | 2023.07.08 |
---|---|
쿠베르네테스에서 '--volumes-from'을 흉내내는 방법 (0) | 2023.07.07 |
Kubernetes 조타 장치 - 주행 포드에 주행 조타 장치 설치 (0) | 2023.07.06 |
어떻게 렌즈(쿠베르네테스 IDE)가 SSH 키 없이 쿠베르네테스 노드에 직접 셸 액세스할 수 있습니까? (0) | 2023.07.05 |
유형 스크립트에서 정규식과 일치하는 문자열 유형을 정의하는 방법은 무엇입니까? (0) | 2023.07.05 |