Настройка маскарадинга в кластерах с несколькими диапазонами IP-адресов подов
Создайте кластер с несколькими диапазонами IP-адресов подов или расширьте адресное пространство существующего кластера, затем проверьте настройки маскарадинга.
Объект ConfigMap с именем ip-masq-agent в пространстве имен kube-system содержит настройки маскарадинга IP-адресов подов. В параметре data.config.nonMasqueradeCIDRs задаются диапазоны назначения, при обращении к которым IP-адрес пода не заменяется IP-адресом узла.
В кластерах с несколькими диапазонами IP-адресов подов сохраняйте в этом списке все диапазоны подов кластера.
Перед началом работы
Диапазоны подов можно задать при создании кластера или добавить позже при изменении кластера.
Перед добавлением диапазона в существующий кластер посмотрите и сохраните настройки маскарадинга. Если используете собственные диапазоны или другие настройки, включите ручное управление, чтобы сохранить их.
Синхронизируйте маскарадинг после добавления диапазона
- Проверьте режим управления ConfigMap
ip-masq-agent. - В зависимости от режима выполните следующие действия:
enforced— дождитесь следующего обновления конфигурации и убедитесь, что новый диапазон появился вnonMasqueradeCIDRs. Не редактируйтеdata.configвручную: сервис перезапишет изменения.disabled— выполнитеkubectl -n kube-system edit configmap ip-masq-agentи добавьте новый диапазон вdata.config.nonMasqueradeCIDRs. Сохраните прежние диапазоны и остальные настройки. Пример конфигурации приведен в разделе ручного управления.- Аннотации нет — дождитесь автоматического выбора режима и прочитайте ConfigMap повторно. Если нужно сохранить пользовательские настройки, явно задайте
disabledдо их редактирования.
- Проверьте результат.
Режимы управления
Режим задается аннотацией addon-cm-controller.mk8s.yc.io/mode:
|
Значение |
Поведение |
|
|
Сервис поддерживает весь |
|
|
Сервис не изменяет ConfigMap. Пользователь самостоятельно поддерживает системные и собственные диапазоны. |
|
Аннотации нет |
Сервис определяет режим по текущему содержимому и устанавливает |
|
Другое значение |
Сервис не изменяет ConfigMap и создает событие с причиной |
Проверка конфигурации выполняется периодически, по умолчанию раз в 60 секунд. Изменение режима не требует перезапуска кластера или узлов.
Посмотрите текущие настройки
Перед началом работы установите kubectl
Чтобы посмотреть режим и содержимое ConfigMap, выполните команду:
kubectl -n kube-system get configmap ip-masq-agent -o yaml
Перед изменением сохраните текущую конфигурацию:
kubectl -n kube-system get configmap ip-masq-agent -o yaml > ip-masq-agent-backup.yaml
Включите автоматическое управление
Используйте режим enforced, если вам достаточно системных диапазонов подов и стандартных настроек ip-masq-agent.
Важно
При включении enforced сервис перезапишет весь data.config. Пользовательские диапазоны, значения resyncInterval, masqLinkLocal и другие настройки не сохранятся. Перед изменением сохраните конфигурацию.
Чтобы передать управление сервису, выполните команду:
kubectl -n kube-system annotate configmap ip-masq-agent \
addon-cm-controller.mk8s.yc.io/mode=enforced --overwrite
При добавлении нового диапазона подов сервис автоматически добавит его в nonMasqueradeCIDRs.
Включите ручное управление
Если вы добавляете собственные диапазоны или меняете другие параметры ip-masq-agent:
-
Установите режим
disabled:kubectl -n kube-system annotate configmap ip-masq-agent \ addon-cm-controller.mk8s.yc.io/mode=disabled --overwrite -
Откройте ConfigMap для редактирования:
kubectl -n kube-system edit configmap ip-masq-agent -
В
nonMasqueradeCIDRsсохраните все диапазоны подов кластера и добавьте пользовательские диапазоны назначения, для которых маскарадинг не требуется. Например:data: config: |+ nonMasqueradeCIDRs: - 10.112.0.0/16 - 10.113.0.0/16 - 10.200.0.0/16 masqLinkLocal: false resyncInterval: 60sВ примере первые два диапазона относятся к подам, третий — к пользовательской сети. Замените их своими значениями. Сохраните остальные настройки, необходимые для вашей сети.
Важно
В режиме disabled после каждого добавления диапазона подов обновляйте nonMasqueradeCIDRs самостоятельно. Сервис не объединяет системные и пользовательские настройки.
Автоматический выбор режима
При первом запуске контроллер проверяет ConfigMap без аннотации. Если в ней перечислены только ожидаемые системные диапазоны, назначается режим enforced. Конфигурация с дополнительными, отсутствующими или измененными диапазонами получает режим disabled и сохраняется без изменений.
При сравнении учитывается порядок диапазонов. Системные диапазоны IPv4 в прежнем формате, занимавшем половину диапазона, могут быть распознаны и заменены полными. Смешанный список полных и половинных диапазонов классифицируется как пользовательская конфигурация.
Важно
Если вы изменяли только resyncInterval, masqLinkLocal или другие параметры, не меняя системный список CIDR, контроллер может выбрать enforced и перезаписать настройки. Чтобы сохранить их, заранее установите disabled.
Удаление аннотации запускает автоматический выбор повторно. Чтобы однозначно выбрать режим, задавайте enforced или disabled явно.
Проверьте результат
-
После создания новых узлов посмотрите назначенные им блоки адресов:
kubectl get nodes -o custom-columns=NAME:.metadata.name,POD_CIDR:.spec.podCIDR,POD_CIDRS:.spec.podCIDRsНовый диапазон может не использоваться, пока в прежнем остаются свободные блоки. Адреса существующих узлов и подов при добавлении диапазона не меняются.
-
Дождитесь следующей проверки конфигурации и посмотрите настройки:
kubectl -n kube-system get configmap ip-masq-agent -o yaml -
Проверьте события ConfigMap:
kubectl -n kube-system get events \ --field-selector involvedObject.kind=ConfigMap,involvedObject.name=ip-masq-agent \ --sort-by=.lastTimestampЕсли появилось событие
InvalidMode, исправьте значение аннотации. -
Чтобы проверить правила маскарадинга на узле, подключитесь к нему по SSH и выполните команду:
sudo iptables -t nat -L IP-MASQ -v -n
Не удаляйте ConfigMap для сброса настроек: сервис создаст ее заново по системному шаблону. Для изменения поведения используйте аннотацию режима.