Основная проблема вызвана тем, что в calico есть контейнер инициализации, но нет контейнера очистки. T
Чтобы отменить развертывание calico, мы должны выполнить обычную операцию kubectl delete -f <yaml>
, а затем удалить файл конфигурации calico в каждом из узлов /etc/cni/net.d/
. Этот файл конфигурации вместе с другими двоичными файлами загружается на хост контейнером инициализации.
https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/
По этой ссылке мы видим, что kubelet считывает конфигурацию файл из каталога по умолчанию, и если есть несколько файлов конфигурации, то он применяет подключаемый модуль CNI из файла конфигурации, который появляется первым в алфавитном порядке (почему, боже, почему ??).
Итак, в В нашем случае после удаления calico он будет удален из всех прав администратора, но узлы все равно будут пытаться применять правила calico на основе файла конфигурации, который он получил из каталога по умолчанию. Затем перезапустите узел, чтобы избавиться от правил iptable.
Удаление файла и перезапуск узла решают проблему, и мы возвращаемся к нормальному поведению. Другой способ решить ту же проблему - просто отключить узел из кластера, если вы находитесь в управляемом кластере Kubernetes. Поскольку облачная инфраструктура publi c автоматически загружает другой узел, чтобы сохранить то же состояние, у него больше нет файла конфигурации calico.