#kubernetes #kubectl #restart
Вопрос:
У меня есть набор модулей Kubernetes (Kafka). Они были созданы Terraform, но каким-то образом они «выпали» из состояния (Terraform их не распознает) и неправильно настроены (они мне все равно больше не нужны).
Теперь я хочу полностью удалить модули из кластера. Основная проблема заключается в том, что даже после того, как я их уничтожаю / удаляю, они продолжают воссоздаваться / перезапускаться.
Я пытался:
kubectl get deployments --all-namespaces
а затем удалил пространство имен, в котором находились модули
kubectl delete -n <NS> deployment <DEPLOY>
Это пространство имен было удалено правильно. Тем не менее, если я сейчас попытаюсь удалить / уничтожить модули (принудительно и с каскадом), они все равно появятся снова. В событиях я вижу, что они воссозданы kubelet, но я не знаю, почему и как я могу остановить это поведение.
Я также проверил
kubectl get jobs --all-namespaces
Но ресурсы не найдены. А также
kubectl get daemonsets.app --all-namespaces
kubectl get daemonsets.extensions --all-namespaces
Но я не думаю, что один из них вообще имеет отношение к развертыванию Kafka.
Что еще я могу попробовать, чтобы удалить эти модули? Любая помощь приветствуется.
Ответ №1:
Это действительно похоже statefulset
на то, кто контролирует pods
Модули в StatefulSet имеют фиксированную уникальную идентификацию. Это удостоверение основано на уникальном порядковом индексе, который присваивается каждому модулю контроллером StatefulSet. Имена модулей принимают форму «<имя набора состояний> -<порядковый индекс>».
Итак, попробуйте kubectl get statefulset --all-namespaces
Ответ №2:
Хорошо, я смог найти основную причину.
С:
kubectl get all --all-namespaces
Я просмотрел все, что связано с именем модулей. По этой причине я нашел связанные службы. После того, как я удалил эти службы, модули не были воссозданы снова.
Я все еще думаю, что это не очень хорошее решение проблемы («Просто удалите все, что имеет одно и то же имя» …), И я был бы рад, если кто-нибудь может предложить лучшее решение для решения этой проблемы.
Ответ №3:
Для меня они выглядят как statefulset, вы пробовали также следующую команду?
kubectl get statefulset --all-namespaces
Ответ №4:
это должен быть statefulset
но проверьте эту ссылку, возможно, вы использовали что-то подобное с terraform: https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/stateful_set
kubectl get statefulset -n you-namespace