В этом кратком руководстве показано, как удалить ресурсы пространства имен, застрявшие в состоянии завершения в вашем кластере Kubernetes.

Хотя я не буду вдаваться в подробности, ПОЧЕМУ возникают эти проблемы, я покажу вам быстрый способ их решения.

Проблема

Возможно, у вас уже было это несколько раз, и вы просто сошли с ума. Вы удаляете ресурс, и Kubernetes переводит его в состояние завершения.

Но даже после ожидания в течение нескольких минут или часов ничего не происходит, а ресурс все еще есть.

На следующем скриншоте вы можете увидеть такой ресурс. В моем случае пространство имен flux-system. Даже когда я явно использую команду delete ns, она никогда не завершится и просто застрянет.

Кстати, не удивляйтесь, что на скриншоте вы видите mkctl вместо kubectl. Это просто псевдоним, который я использую для доступа к моему локальному кластеру MicroK8s. Он использует kubectl под капотом.

Спасение

К счастью, есть простой способ быстро избавиться от зависшего ресурса.

Во-первых, вы должны сбросить определение ресурса в файл в вашей локальной системе:

kubectl get ns flux-system -o json > tmp_ns.json

Затем вы можете использовать редактор по вашему выбору (в данном случае это Vim) и удалить запись kubernetes из массива spec.finalizers.

Затем вы должны указать Kubernetes применить измененную конфигурацию JSON replace способом:

kubectl replace --raw "/api/v1/namespaces/flux-system/finalize" -f ./tmp_ns.json

Но убедитесь, что вы не пропустите замену пути к ресурсу. Маловероятно, что вы также захотите удалить пространство имен flux-system из своей системы. ;-)

На следующем снимке экрана вы можете увидеть команду replace в действии. Целая стена текста в терминале.

Давайте немного увеличим нижнюю часть терминала. Как вы можете видеть на следующем скриншоте, я снова попытался получить пространство имен flux-system из кластера Kubernetes, но ресурс больше не может быть найден. Оно удалено... УРА!!!

Хотите связаться?

Если вы хотите связаться со мной, пожалуйста, напишите мне в LinkedIn.

Кроме того, не стесняйтесь проверить мои книжные рекомендации 📚.