问题来自于这个问题: https://github.com/kubernetes/kubectl/issues/717
Kubectl 在这样的表中返回信息:
$ kubectl get replicasets -n kube-system
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system datadog-657c65b75c 2 2 2 11d
kube-system kube-ops-view-5d8df57fc 1 1 0 33d
为了在不使用 json 格式化程序的情况下查找输出中的所有偏差,我可以执行以下命令:
grep -v '0 0 0\|1 1 1\|2 2 2\|3 3 3\|4 4 4\|5 5 5'
哪个 grep 命令可以涵盖所有可能的情况?目标是找到 DESIRED != CURRENT、CURRENT != READY 或 DESIRED != READY 的任何 ReplicaSet。
答案1
grep
当你的模式既不是固定字符串也不是正则表达式时,效果就不是很好了。
当您想要所有“所需”、“当前”和“就绪”的数字都不相同的副本集时,请使用更好的模式匹配语言,例如awk
:
kubectl get replicasets -n kube-system | awk '$3!=$4 || $4!=$5 {print $0}'
它应该返回标题和任何不一致的副本集。
您可以使用以下方式省略标题:
awk 'NR!=1 && ($3!=$4 || $4!=$5) {print $0 }'
一致的副本集将列出:
awk '$3==$4 && $4==$5 {print $0}'