오늘도 얇디 얇은 ^^ Kube Tool 관련 정보 공유 합니다.
Kube PV가 실제로 사용하는(allocate, PVC 할당량이 아니라) Disk 사용량을 확인하려면 개별 POD 접속해서 일일이 df 명령어로 확인 해야 합니다. 하지만 kubectl df-pv Tool 사용하시면 빠르게 확인 가능합니다. 사용법 공유 합니다.
Test 내역
- kubectl df-pv 설치
- 전체 Namespace 및 개별 Namespace 단위 PV Disk 사용량 확인
(--help 옵션 리스트)
그럼 설치부터 해 보겠습니다. 설치는 kube krew 사용하여 아주 간단합니다. (사전에 kubectl krew 설치가 필요합니다.) kubectl krew 설치는 아래 링크 참고 부탁 드립니다.
https://github.com/kubernetes-sigs/krew/
kube df-pv 설치
[spkr@erdia22 hosts (ubuns:rook-ceph)]$ curl https://krew.sh/df-pv | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2225 0 2225 0 0 1931 0 --:--:-- 0:00:01 --:--:-- 1929
./LICENSE
./krew-darwin_amd64
./krew-darwin_arm64
./krew-linux_amd64
./krew-linux_arm
./krew-linux_arm64
./krew-windows_amd64.exe
WARNING: Detected stdin, but discarding it because of --manifest or args
Installing plugin: krew
W0721 11:14:19.289989 13391 install.go:160] Skipping plugin "krew", it is already installed
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" not found in bashrc, adding now
Updated the local copy of plugin index.
New plugins available:
* assert
* cost
* cyclonus
* karbon
* mc
* multinet
* pexec
* pod-lens
* promdump
* pvmigrate
* rbac-tool
* reliably
* resource-versions
* tunnel
* vela
* whisper-secret
Upgrades available for installed plugins:
* minio v3.0.29 -> v4.1.3
* neat v2.0.2 -> v2.0.3
* rabbitmq v1.4.0 -> v1.8.0
* starboard v0.9.2 -> v0.10.3
WARNING: Detected stdin, but discarding it because of --manifest or args
Installing plugin: df-pv
Installed plugin: df-pv
\
| Use this plugin:
| kubectl df-pv
| Documentation:
| https://github.com/yashbhutwala/kubectl-df-pv
/
WARNING: You installed plugin "df-pv" from the krew-index plugin repository.
These plugins are not audited for security by the Krew maintainers.
Run them at your own risk.
you will need to reload your shell with or add krew to your path with 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' before krew can be used
이제 설치가 완료 되었습니다. 처음 krew 설치하셨다면 아래 source 명령어 실행합니다.
[spkr@erdia22 kvdi (ubuns:yelb)]$ source ~/.bashrc
이제 kubectl df-pv 사용해 보겠습니다. 사용법은 아주 간단합니다. 사용 용량 별 색깔도 구분하고 깔끔하네요.
[spkr@erdia22 kvdi (ubuns:yelb)]$ k df-pv
PV NAME PVC NAME NAMESPACE NODE NAME POD NAME VOLUME MOUNT NAME SIZE USED AVAILABLE %USED IUSED IFREE %IUSED
pvc-67192cbc-6ec5-4224-8bf2-8e5dd4e5bb21 rbd-pvc default ubun20-1 csirbd-demo-pod mypvc 975Mi 2Mi 957Mi 0.26 11 65525 0.02
pvc-2fabb3b3-e368-4bd5-bb6b-1fb66eb0b6f2 redis-pvc yelb ubun20-2 yelb-appserver-5c895ddb7f-h9lzh cart-redis-data 195Gi 50Gi 145Gi 25.56 12 13107188 0.00
kubernetes가 사용하는 전체 pv를 포함합니다.
[spkr@erdia22 kvdi (ubuns:yelb)]$ k get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-2fabb3b3-e368-4bd5-bb6b-1fb66eb0b6f2 200Gi RWO Delete Bound yelb/redis-pvc rook-ceph-block 85m
pvc-67192cbc-6ec5-4224-8bf2-8e5dd4e5bb21 1Gi RWO Delete Bound default/rbd-pvc rook-ceph-block 8h
위에서 확인 하실 수 있듯이 k get pv로 하면 실제 사용량이 아니라 할당량(CAPACITY)이 조회되어 실 사용량을 아실 수 없습니다.
kubectl df-pv 가 없으면 아래와 같이 해 주어야 하는데 훨씬 간단하네요.
[spkr@erdia22 kvdi (ubuns:yelb)]$ k exec -it yelb-appserver-5c895ddb7f-h9lzh -- bash -c 'df -h'
Filesystem Size Used Avail Use% Mounted on
overlay 196G 14G 172G 8% /
tmpfs 64M 0 64M 0% /dev
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/mapper/ubuntu--vg-ubuntu--lv 196G 14G 172G 8% /etc/hosts
shm 64M 0 64M 0% /dev/shm
/dev/rbd0 196G 51G 146G 26% /var/lib/redis
tmpfs 7.9G 12K 7.9G 1% /run/secrets/kubernetes.io/serviceaccount
tmpfs 7.9G 0 7.9G 0% /proc/acpi
tmpfs 7.9G 0 7.9G 0% /proc/scsi
tmpfs 7.9G 0 7.9G 0% /sys/firmware
이것은 PV 하나에 대한 실 사용량이고 PV가 10개, 100개 이면 10개, 100개 POD에서 일일이 해야 합니다.
그럼, k df-pv 옵션 사용법을 help로 확인해 보겠습니다.
[spkr@erdia22 kvdi (ubuns:yelb)]$ k df-pv -h
df-pv emulates Unix style df for persistent volumes w/ ability to filter by namespace
It autoconverts all "sizes" to IEC values (see: https://en.wikipedia.org/wiki/Binary_prefix and https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory)
It colors the values based on "severity" [red: > 75% (too high); yellow: < 25% (too low); green: >= 25 and <= 75 (OK)]
Usage:
df-pv [flags]
Flags:
--as string Username to impersonate for the operation
--as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
--cache-dir string Default HTTP cache directory (default "/home/spkr/.kube/http-cache")
--certificate-authority string Path to a cert file for the certificate authority
--client-certificate string Path to a client certificate file for TLS
--client-key string Path to a client key file for TLS
--cluster string The name of the kubeconfig cluster to use
--context string The name of the kubeconfig context to use
-d, --disable-color boolean flag for disabling colored output
-h, --help help for df-pv
--insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
--kubeconfig string Path to the kubeconfig file to use for CLI requests.
-n, --namespace string If present, the namespace scope for this CLI request
--request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-s, --server string The address and port of the Kubernetes API server
--tls-server-name string Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
--token string Bearer token for authentication to the API server
--user string The name of the kubeconfig user to use
-v, --verbosity string log level; one of [info, debug, trace, warn, error, fatal, panic] (default "info")
몇가지 옵션이 있는데, 사용 할만한 건 -n, namespace 단위로 구분하는 옵션이네요. -n 옵션 사용해서 namespace 단위로 구분하시면 됩니다.
[spkr@erdia22 kvdi (ubuns:yelb)]$ k df-pv -n default
PV NAME PVC NAME NAMESPACE NODE NAME POD NAME VOLUME MOUNT NAME SIZE USED AVAILABLE %USED IUSED IFREE %IUSED
pvc-67192cbc-6ec5-4224-8bf2-8e5dd4e5bb21 rbd-pvc default ubun20-1 csirbd-demo-pod mypvc 975Mi 2Mi 957Mi 0.26 11 65525 0.02
이름도 df-pv 로 외우기도 쉽고 직관적이라 활용성이 뛰어나네요.
이상, 간단한 Tool 설치로 PV 사용량을 확인하실 수 있는 kubectl df-pv 공유 하였습니다.
kubectl df-pv 공식 사이트
https://github.com/yashbhutwala/kubectl-df-pv
'쿠버네티스 일반' 카테고리의 다른 글
Gitlab Helm Install on On-Prem (0) | 2021.07.30 |
---|---|
Kubernetes PVC Replication (8) | 2021.07.28 |
Kube snapshot scheduler (0) | 2021.07.22 |
Kubernetes Snapshot 백업/복구 (0) | 2021.07.16 |
Kube Project 수행 시 필요한 Tool Set List (0) | 2021.06.20 |