Внешние узлы кластера
Примечание
Подключение внешних узлов находится на стадии Preview. Их использование не тарифицируется.
Managed Service for Kubernetes позволяет подключать в качестве узлов кластера Kubernetes серверы, расположенные вне Yandex Cloud.
Требования для подключения внешних узлов к кластеру
Чтобы подключить внешние узлы к кластеру Managed Service for Kubernetes, необходимо соответствие следующим требованиям:
-
Сетевая связность на уровне L3 между локальной сетевой инфраструктурой ваших серверов и облачной сетью кластера Managed Service for Kubernetes. Внешние узлы подключаются к мастеру кластера только через его внутренний IP-адрес в облачной сети Yandex Cloud.
Установить приватное выделенное соединение между вашей локальной сетевой инфраструктурой и Yandex Cloud можно следующими способами:
- С помощью сервиса Yandex Cloud Interconnect.
- Самостоятельно с помощью VPN — например, IPSec или WireGuard.
-
Кластер Managed Service for Kubernetes использует туннельный режим сети.
-
Подключаемые серверы должны иметь доступ в интернет.
-
Операционная система подключаемых серверов — Ubuntu 24.04.
Как подключить внешние узлы к кластеру Managed Service for Kubernetes, читайте в разделе Подключение внешних узлов к кластеру.
Разделение ответственности
Для предсказуемой работы внешних узлов необходимо обеспечить бесперебойную работу:
- вычислительной инфраструктуры — используемых серверов и установленной на них операционной системы;
- мы не рекомендуем использовать подключаемые сервера для чего-либо, кроме выполнения функций узлов кластера;
- локальной сетевой инфраструктуры используемых серверов;
- соединения между вашей локальной сетевой инфраструктурой и Yandex Cloud.
Yandex Cloud предоставляет услугу обеспечения надежного приватного соединения между вашей локальной сетевой и облачной инфраструктурой в рамках сервиса Cloud Interconnect. В качестве альтернативы вы можете самостоятельно настраивать и обеспечивать качество такого соединения с помощью VPN.
Yandex Cloud не предоставляет услугу по управлению и обеспечению надежности вычислительной и сетевой инфраструктуры вне датацентров Yandex Cloud. Вы можете воспользоваться преимуществами управляемой инфраструктуры в рамках использования обычных групп узлов сервиса Managed Service for Kubernetes.
Ограничения при работе с внешними узлами
При проектировании распределения рабочих нагрузок по узлам в кластере Managed Service for Kubernetes необходимо учитывать следующие особенности:
- К внешним узлам невозможно подключать объекты
PersistentVolumeна основе облачных дисков Yandex Cloud. - Сервисы на основе L3-балансировщиков Yandex Cloud (например,
LoadBalancer) не распределяют трафик на такие узлы.
Нагрузки, которым необходима эта функциональность, необходимо размещать только на узлах кластера Managed Service for Kubernetes, которые расположены в Yandex Cloud. Для этого вы можете воспользоваться настройками node affinity
...
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: yandex.cloud/node-group-id # Kubernetes-метка узлов, расположенных в Yandex Cloud.
operator: Exists
...
В качестве альтернативы управлению трафиком с помощью L3-балансировщиков вы можете воспользоваться управлением трафиком на уровне L7. Для этого установите в кластер Managed Service for Kubernetes Ingress-контроллер и используйте ресурсы типа Ingress.
Продукты Marketplace Ingress-контроллер и Gateway API на базе Yandex Application Load Balancer не поддерживают балансировку трафика на внешние узлы.
Для балансировки трафика на внешние узлы воспользуйтесь контроллером Gwin или одним из альтернативных Ingress-контроллеров.
Чтобы использовать контроллер Gwin для балансировки трафика на внешние узлы:
-
Адрес внешнего узла должен быть доступен L7-балансировщику Application Load Balancer.
-
Адрес внешнего узла должен присутствовать в
statusузла как ресурса, например:kubectl get no -o yaml example-cluster-node-1 | yq ".status.addresses"- address: 10.0.0.7 type: InternalIP - address: 2001:db8::1 type: InternalIP - address: example-cluster-node-1 type: Hostname