Ответ 1
Вы можете использовать опцию go templating, встроенную в kubectl, чтобы отформатировать вывод, чтобы просто показать имена для каждого модуля:
kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
Я ищу вариант для перечисления всех имен контейнеров
Как обойтись без awk (или вырезать). Теперь я использую эту команду
kubectl get --no-headers=true pods -o name | awk -F "/" '{print $2}'
Вы можете использовать опцию go templating, встроенную в kubectl, чтобы отформатировать вывод, чтобы просто показать имена для каждого модуля:
kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
Вы можете использовать настраиваемые столбцы в опции вывода, чтобы получить имя и --no-headers
kubectl get --no-headers=true pods -l app=external-dns -o custom-columns=:metadata.name
Лично я предпочитаю этот метод, потому что он опирается только на kubectl, не очень многословен, и мы не получаем pod/prefix в выводе:
kubectl get pods --no-headers -o custom-columns=":metadata.name"
Получить имена контейнеров с помощью -o=name
Подробнее см. в этом шпаргалке.
kubectl get pods -o=name
Пример вывода:
pod/kube-xyz-53kg5
pod/kube-xyz-jh7d2
pod/kube-xyz-subt9
Чтобы удалить трейлинг pod/
, вы можете использовать стандартную команду bash sed
kubectl get pods -o=name | sed "s/^.\{4\}//"
Пример вывода:
kube-xyz-53kg5
kube-pqr-jh7d2
kube-abc-s2bt9
Чтобы получить podname с определенной строкой, используйте стандартную команду linux grep
kubectl get pods -o=name | grep kube-pqr | sed "s/^.\{4\}//"
Пример вывода:
kube-pqr-jh7d2
С этим именем вы можете делать такие вещи, как добавление псевдонима для получения оболочки к работающему контейнеру:
alias bashkubepqr='kubectl exec -it $(kubectl get pods -o=name | grep kube-pqr | sed "s/^.\{4\}//") bash'
Вы можете использовать -o = name для отображения только имен модулей. Например, для отображения прокси-модулей вы можете использовать:
kubectl get pods -o=name --all-namespaces | grep kube-proxy
Результат:
pod/kube-proxy-95rlj
pod/kube-proxy-bm77b
pod/kube-proxy-clc25
альтернатива jsonpath
kubectl get po -o jsonpath="{range .items[*]}{@.metadata.name}{end}" -l app=nginx-ingress,component=controller
см. также: больше примеров вариантов вывода kubectl
kubectl get po --all -n amespaces | awk '{if ($ 4! = "Running") system ("kubectl -n" $ 1 "удалить модули" $ 2 "--grace-period = 0" "--force")}'