Вопрос исходит из вопроса: 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 может охватить все возможные случаи? Цель состоит в том, чтобы найти любые ReplicaSets, где ЖЕЛАТЕЛЬНЫЙ! = ТЕКУЩИЙ, ТЕКУЩИЙ! = ГОТОВ или ЖЕЛАТЕЛЬНЫЙ! = ГОТОВ.
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}'