##試したこと
元々kubectl get podsでこれを表示したくて
- .spec.containers[*].resources.requests.memory
- .spec.containers[*].resources.limits.memory
時間があったのでcustom-columns, label-columns, field-selector, sort-byも試してみました。表示できるスペックのまとまっているサイトを見つけることができなかったのでリスト化することに。
以下の#71612でも説明ありますが、現在のcustom-columnsは使いにくい。
kubectl get pods + custom-columnではなくcustom-columnsしか表示されません。
あと検索すると-o=を使っている人と-o+spaceの例があるのですがオフィシャルはスペースでした。
##気になる/kind feature
kubectl - Introduce "custom-columns" variant to add additional columns to output #71612
https://github.com/kubernetes/kubernetes/issues/71612
##References
https://kubernetes.io/docs/reference/kubectl/overview/#custom-columns
https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
https://kubernetes.io/docs/reference/kubectl/overview/#sorting-list-objects
##使い方
表示したいものを探すのには
kubectl get <pod, node, svc etc> -o json
kubectl get <pod, node, svc etc> -o yaml
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
こういうものも見つけました
https://gist.github.com/so0k/42313dbb3b547a0f51a547bb968696ba
基本
kubectl get pods -o custom-columns='<表示したいもの>'
Example - Pod |
---|
CONTAINERS:.spec.containers[].name |
M_LIMITS:.spec.containers[].resources.limits.memory |
M_REQUESTS:.spec.containers[].resources.requests.memory |
NAME:.metadata.name |
NAMESPACE:.metadata.namespace |
NODE_IP:.status.hostIP |
POD_IP:.status.podIP |
PORTS:.spec.template.spec.containers[].ports.containerPort |
RESTART_POLICY:.spec.restartPolicy |
RESTARTS:.status.containerStatuses[].restartCount |
RSRC:.metadata.resourceVersion |
STATUS:.status.phase |
##サンプル
###custom-coulmns
-o custom-columns=<spec>
Pods
デフォルト表示のREADYとAGEもcustom-columnsでは表示できず。
kubectl get pods -o='custom-columns=NAME:.metadata.name,CONTAINERS:.spec.containers[].name,Images:.spec.containers[].image'
kubectl get pods -o custom-columns='NAME:.metadata.name,STATUS:.status.phase, RESTARTS:.status.containerStatuses[].restartCount,M_REQUESTS:.spec.containers[].resources.requests.memory,M_LIMITS:.spec.containers[].resources.limits.memory,NODE_IP:.status.hostIP,POD_IP:.status.podIP'
Nodes
AZがわかると便利だと思う。 ポイント".metadata.labels."kubernetes.io/role"のようなものはエスケープする。
kubectl get nodes -o custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain\.beta\.kubernetes\.io/zone'
###Use a separate file
-o custom-columns-file=<filename>
NAME STATUS M_REQUESTS M_LIMITS
.metadata.name .status.phase .spec.containers[*].resources.requests.memory .spec.containers[*].resources.limits.memory
###label-columns
-L or --label-columns <spec>
kubectl get nodes --label-columns failure-domain.beta.kubernetes.io/zone
###field-selector
--field-selector <spec>
kubectl get pods --field-selector=status.phase=Running,spec.restartPolicy=Always
###sort-by
kubectl get pods -o wide --sort-by=.spec.nodeName
##deployment おまけ
deploy.spec.template.spec.containers.ports.containerPort
##Jsonpathの使い方
次にまとめようと思います