У меня есть частный кластер gke с несколькими пулами узлов, и я читаю документацию, кажется, если я создам Cloud NAT, это возможно только для всего кластера. Есть ли способ настроить только часть кластера, чтобы иметь доступ для отправки трафика через NAT? Я ковырялся и, похоже, не представляется возможным назначить сеть, диапазон IP-адресов или подсеть для пула узлов, поэтому я не уверен, возможно ли это.
Настройте Cloud NAT только для 1 пула узлов в кластере GKE
Ответы (2)
Вы можете проверить старое решение nat gw от Google, Например, виртуальная машина на основе экземпляра вместо Cloud NAT. Возможный способ сделать то, что вам нужно, следующий:
- Создайте выделенный пул узлов GKE с тегом
- Создайте экземпляр виртуальной машины NAT, используя приведенные выше примеры terraform или вручную
- Создайте маршрут по умолчанию, используя созданный экземпляр виртуальной машины NAT в качестве пункта назначения, и примените этот маршрут к экземплярам с тегом, который вы использовали для создания пула узлов GKE.
В упомянутом решении nat gw используется аналогичный метод, но он применяет маршрут ко всем пулам узлов с использованием всего тега кластера, а не отдельного тега пула узлов.
Сначала мы должны обрисовать в общих чертах, что вам нужно будет настроить.
Компоненты:
1.) Экземпляр шлюза NAT
2.) Сетевые теги и маршруты VPC
3.) Пулы узлов с сетевыми тегами.
Для 1 и 2 вам потребуется настроить другой экземпляр виртуальной машины GCE в качестве шлюза NAT аналогично тому, как показано в нашем Руководство по GCE NAT. Это должно привести к созданию экземпляра NAT и маршрута VPC, который направляет сетевой трафик от тегированных ресурсов к NAT.
Обязательно используйте теги, относящиеся к пулам узлов, которые будут использовать экземпляр в качестве NAT.
Для 3. Чтобы указать пулы узлов на экземпляр NAT, вы должны использовать правильные сетевые теги на узлах, чтобы трафик от этих узлов маршрутизировался правильно.
Узел / Nodepool с тегами -> Маршрут VPC -> Экземпляр NAT -> Интернет
Чтобы применить это ко всему пулу узлов, вам нужно будет применить теги на уровне пула узлов, чтобы он каскадировался на базовые узлы, и вы можете увидеть, как это сделать здесь. К сожалению, это невозможно для существующих пулов узлов, поэтому вам придется удалить и воссоздать существующие пулы узлов с соответствующими тегами, например, ниже:
Пулы узлов контейнера gcloud создают прокси --cluster = prod-cluster --tags = NatRouteA