Kubectl命令行
Table of Contents
注:基于Kubenetes 版本:Server v1.17.2、Client v1.17.9
kubectl命令行全景图⌗
有趣的kubectl命令⌗
获取正在Running的Pod⌗
kubectl get pods -A --field-selector=status.phase==Running
NAMESPACE NAME READY STATUS RESTARTS AGE
kelu cka2-75dbf7c54-gm4r4 1/1 Running 0 23h
kube-system calico-kube-controllers-ccf66db4-cpvqp 1/1 Running 0 3d20h
kube-system calico-node-8d4th 1/1 Running 0 3d2h
kube-system calico-node-szmzb 1/1 Running 0 3d20h
查看节点内存容量⌗
kubectl get no -o json | jq -r '.items | sort_by(.status.capacity.memory)[]|[.metadata.name,.status.capacity.memory]| @tsv'
rq-bjptest01 3848040Ki
rqinterntest2 7986060Ki
查看各个节点上的Pod数量⌗
kubectl get po -o json --all-namespaces | jq '.items | group_by(.spec.nodeName) | map({"nodeName": .[0].spec.nodeName, "count": length}) | sort_by(.count)'
[
{
"nodeName": "rq-bjptest01",
"count": 3
},
{
"nodeName": "rqinterntest2",
"count": 8
}
]
kubectl get pods --all-namespaces -o json | jq '.items[] | .spec.nodeName' -r | sort | uniq -c
17 rqkubedev03
30 rqkubedev04
23 rqkubedev05
查看POD以及镜像⌗
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
NAME IMAGES
details-v1-5974b67c8-gqz94 docker.io/istio/examples-bookinfo-details-v1:1.16.2,docker.io/istio/proxyv2:1.7.2
gitea-5bb577b964-w64gg harbor.caih.local/gitea/gitea:1.10.1
productpage-v1-64794f5db4-hw2fl docker.io/istio/examples-bookinfo-productpage-v1:1.16.2,docker.io/istio/proxyv2:1.7.2
查看各个节点上的POD⌗
kubectl get pods --all-namespaces -o json | jq '.items | map({podName: .metadata.name, nodeName: .spec.nodeName}) | group_by(.nodeName) | map({nodeName: .[0].nodeName, pods: map(.podName)})'
[
{
"nodeName": "rqkubedev03",
"pods": [
"123-84654b5d8f-sm2dt",
"reviews-v2-6cb6ccd848-ndsqq",
"fleet-agent-6cc4bd5c67-b877w",
"jaeger-es-index-cleaner-1602806100-5ngzz",
"jaeger-es-index-cleaner-1602806100-b47gk",
"jaeger-es-index-cleaner-1602806100-kkx2z",
"jaeger-es-index-cleaner-1602806100-rg6z8",
"jaeger-es-index-cleaner-1602806100-s47n4",
查看Pod占用的内存和CPU并按内存或者CPU排序⌗
# 内存
kubectl top pods -A | sort --reverse --key 4 --numeric
caihcloud jenkinsm-6fc5d7fc46-2tl6q 29m 1995Mi
istio-system prometheus-788c945c9c-mdrjf 97m 1424Mi
kube-system kube-apiserver-rqkubedev04 149m 957Mi
kube-system kube-apiserver-rqkubedev03 69m 476Mi
caihcloud jenkinsslaveswarm-6c6f5d8d9b-8ns5w 2m 464Mi
# CPU
kubectl top pods -A | sort --reverse --key 3 --numeric
kube-system kube-apiserver-rqkubedev04 150m 964Mi
istio-system prometheus-788c945c9c-mdrjf 89m 1426Mi
kube-system kube-apiserver-rqkubedev03 42m 532Mi
kube-system calico-node-6n65m 42m 46Mi
kube-system calico-node-fg6tk 34m 49Mi
获取重启次数降序排序的Pod⌗
kubectl get pods -A --sort-by=.status.containerStatuses[0].restartCount | tac
kube-system kube-scheduler-rqkubedev03 0/1 CrashLoopBackOff 593 2d2h
traefik-v2 traefik-gfnw5 1/1 Running 27 23d
kube-system kube-controller-manager-rqkubedev03 1/1 Running 24 23d
kube-system kube-controller-manager-rqkubedev04 1/1 Running 22 23d
kube-system kube-apiserver-rqkubedev03 1/1 Running 21 23d
NAMESPACE NAME READY STATUS RESTARTS AGE
获得所有POD的request和limits⌗
kubectl get pods -A -o custom-columns='NAME:metadata.name,MEM_REQUEST:spec.containers[*].resources.requests.memory,MEM_LIMIT:spec.containers[*].resources.limits.memory,CPU_REQUEST:spec.containers[*].resources.requests.cpu,CPU_LIMIT:spec.containers[*].resources.limits.cpu'
NAME MEM_REQUEST MEM_LIMIT CPU_REQUEST CPU_LIMIT
123-84654b5d8f-sm2dt <none> <none> <none> <none>
backend-c56f64647-grql6 10Mi 1Gi 10m <none>
caihcloud-67ffdf9fc9-wzmts 10Mi 1Gi 10m <none>
caihcloud-ui-9fbb954dc-trtn7 10Mi 1Gi 10m <none>
caihcloudm-caihcloudm-api-5cfffcc96-mz6pt 10Mi 1Gi 10m 200m
caihcloudm-caihcloudm-api-5cfffcc96-xdwsb 10Mi 1Gi 10m 200m
获取节点的IP⌗
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name} {.status.addresses[?(@.type=="InternalIP")].address}{"\n"}{end}'
rqkubedev03 10.19.0.57
rqkubedev04 10.19.0.58
rqkubedev05 10.19.0.59
获取Service的Nodeport信息⌗
kubectl get -A svc -o json | jq -r '.items[] | [.metadata.name,([.spec.ports[].nodePort | tostring ] | join("|"))]| @tsv'
backend 23168|20675
caihcloud 37386
caihcloud-ui 26105
caihcloudm-caihcloudm-api 36236
caihcloudm-caihcloudm-prerender 31964
获取POD网段⌗
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}' | tr " " "\n"
10.193.0.0/24
10.193.1.0/24
10.193.2.0/24
输出一个POD中所有的容器的日志⌗
kubectl logs caihcloudm-caihcloudm-api-5cfffcc96-mz6pt -n caihcloud —all-containers
按标签输出POD的日志⌗
kubectl -n caihcloud logs -f -l app=caihcloudm-caihcloudm-api
获取前一个容器的日志(容器异常挂掉的场景)⌗
kubectl logs caihcloud-67ffdf9fc9-wzmts -n caihcloud --previous
Read other posts