我想列出一個節點的豆莢和豆莢雕像,例如。
Node A
Pod1 Status
Pod2 Status
Node B
Pod1 Status
Pod2 Status
有沒有kubectl我可以使用的命令?
uj5u.com熱心網友回復:
嘗試這個:
kubectl get pods -A --field-selector spec.nodeName=<node name> | awk '{print $2" "$4}'
uj5u.com熱心網友回復:
kubectl get pods
會給你幾乎你想要的,但它沒有Node資訊,這就是你需要的原因-o wide(我懷疑你真的想要-A這里的引數);那么你需要一些awk. 所以可能是這樣的:
kubectl get pods -o wide | awk '{print $1" "$3" "$7}
uj5u.com熱心網友回復:
此鏈接上的其他命令。
kubectl get pods -o wide
uj5u.com熱心網友回復:
這個腳本給出了你想要的輸出:
kubectl get --no-headers pods --all-namespaces -o wide > /tmp/allpods
while read node; do
echo "${node/node\//}"
grep " ${node/node\//} " /tmp/allpods | \
while read line; do
set -- $line
echo "$2 $4"
done
done < <(kubectl get nodes --no-headers --output=name)
但在我看來,這個版本的輸出更具可讀性:
- 第一列:k8s 節點名稱
- 第二列:命名空間/pod-name
kubectl get --no-headers pods --all-namespaces -o wide > /tmp/allpods
while read node; do
echo "${node/node\//}"
while read line; do
set -- $line
echo " $2 $4"
done < <(grep " ${node/node\//} " /tmp/allpods)
done < <(kubectl get nodes --no-headers --output=name) | column -t -s ' '
輸出:
k8s-node01
my-namespace01/mypod01-321-86d58674d8-kv222
my-namespace01/mypod01-321-redis-55dc88454c-z6xfj
[...]
k8s-node02
[...]
正如公認的答案所暗示的那樣,為每個集群節點執行 API 呼叫會使腳本在具有數十個節點和數千個 pod 的生產環境中執行時間非常長。這就是我選擇將單個呼叫的結果保存到臨時檔案的解決方案的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/317631.html
