Чтобы проверить, что режим высокой доступности делает то, что должен, мне нужно убить экземпляры во время тестирования, и мне нужно убить их таким образом, чтобы они не могли сообщить о своем отключении или подобном.
По практическим соображениям мне нужно провести тестирование в меньшей среде, в которой нет отдельного узла для каждого модуля, поэтому я не могу тестировать, выключая машины, но вместо этого мне нужно убить процессы. Я могу убить их docker kill
, но для этого требуется войти в узел и найти идентификатор докера контейнера. Есть ли способ добиться подобного эффекта с помощью exec kill
, но отправка SIGKILL
обрабатывать ID 1 не допускается.
Я также вижу, что используется удаление, но у меня есть случай, когда есть разница: при удалении контейнер воссоздается с чистым состоянием, но простой перезапуск его не делает, и развертывание, которое я тестирую, фактически смотрит на состояние во время запуска и имеет проблемы с запуском, поэтому мне нужно проверить случай, когда он не удален.
Могу ли я принудительно отключить поды, не давая им возможности очистить через API kubernetes /kubectl
?
Вы можете попробовать использовать команду
kubectl delete pods <pod> --grace-period=0 --force
Ключ --grace-period=<seconds>
Это время, которое Kubernetes ждет для корректного завершения работы Pod'а. Если он равен 0, SIGKILL будет немедленно отправлен любому процессу в модуле. Ключ --force
необходимо указать для такой операции в версиях Kubernetes 1.5 и выше.
Для получения дополнительной информации вы можете проверить официальная документация.