Я часто иногда отлаживаю модули с помощью kubectl delete pod
, поэтому он обновляет образ контейнера. Но каждый раз, когда я должен искать
полное название пода:
kubectl delete pod deployment_name-56fccbbfb8g4rj6
Как я могу просто удалить модуль, не зная хэша?
это невозможно, но вы можете удалить их все сразу, используя kubectl здесь:
kubectl delete --all pods --namespace=foo
если вы хотите удалить один модуль, вы должны сделать это вручную. иначе попробуйте это решение.
Вы можете удалить модуль на основе меток. Например, если у вашего модуля есть ярлык app=alpine
, вы можете удалить его следующим образом:
kubectl delete pod -l app=alpine
что делает -nxxx
?
Это сокращение от --namespace your_namespace.
В зависимости от вашей оболочки вы можете использовать автодополнение, чтобы система предлагала имя вашего модуля.
Bash-дополнение предоставляется многими менеджерами пакетов (см. здесь). Ты
можно установить с помощью apt-get install bash-completion
или yum install bash-completion
и т. д.
Для Zsh это можно сгенерировать с помощью команды kubectl completion zsh
. Использование скрипта завершения в вашей оболочке позволяет
kubectl автодополнение.
Чтобы сделать это во всех сеансах оболочки, добавьте в файл ~/.zshrc
следующее:
source <(kubectl completion zsh)
Другое дело, что вам не нужно уничтожать свой модуль, чтобы обновить образ. Вы можете просто использовать kubectl patch или kubectl set image
.
Для получения дополнительной информации ознакомьтесь с документом Kubernetes об исправлении объектов API с помощью kubectl.
kubectl get pod --all-namespaces | grep -viE "compl|работает" | awk 'NR>1{print $2 " -n " $1}' |при чтении строки;сделать kubectl удалить pod $line;готово
Вам не нужно ничего вручную удалять, чтобы обновить образ; просто измените тег
image:
в содержащей спецификации развертывания, и он автоматически заменит модули на новые.