Как я могу гарантировать, что я аннотирую каждый узел Kubernetes до того, как на него будут назначены модули на EKS?
Я пытаюсь использовать CNI Custom Networking на EKS, чтобы убедиться, что IP-адреса Pod выделены из альтернативных поднаборов (чтобы предотвратить голодание IP в подсетях, в которых работают узлы кластера). Для этого мне нужно создать несколько ENIConfigs и аннотировать каждый узел.
Как я могу убедиться, что каждый узел аннотирован до того, как на него запланированы какие-либо модули, чтобы убедиться, что IP-адреса модулей не выделены из подсетей, в которых работают мои узлы?
РЕДАКТИРОВАТЬ: Единственное решение, которое я могу думать до сих пор, это:
- Добавить NoSchedule taint для всех узлов по умолчанию
- Разверните пользовательский контроллер, который переносит порчу
- Получить контроллер аннотировать все узлы по мере необходимости и удалить вред
Однако, если вышеприведенное является единственным обходным решением, которое требует значительных усилий для управляемого сервиса
1 ответ
Как насчет:
- Добавить
ENIConfigComplete: false
портить все узлы по умолчанию - Разверните DaemonSet, который допускает
ENIConfigComplete: false
- DaemonSet создает модуль на каждом новом узле, который
- создает некоторые ENIConfigs на узле (скрипт bash??)
- аннотирует каждый узел
ENIConfigComplete: true
- DaemonSet больше не переносит узел, поэтому
- Стручок удален из узла.
DaemonSet обеспечит правильную настройку каждого нового узла.
Salesforce расскажет об этой методике подготовки дисков на их новых узлах:
Это позволило бы избежать длительного процесса контроллера.