Критерии принятия решений
Выбор оптимального сетевого подключаемого модуля для вашего варианта использования зависит от условий. Каждый вариант имеет собственные преимущества, минусы и компромиссы, которые следует учитывать при выборе.
Критерии принятия решений высокого уровня
Исчерпание IPv4
Kubenet разработан с учетом сохранения пространства IP-адресов. Azure CNI предоставляет pod'ы с полным сетевым подключением, но требует большего диапазона IP-адресов и тщательного планирования. Исчерпание IPv4 — это состояние, при котором количество адресов достигает предела и не позволяет узлам участвовать в операциях масштабирования или обновления. Во время исчерпания приложение требует слишком большого количества ресурсов и отстает.
Kubenet позволяет узлам получать определенные IP-адреса без необходимости заранее резервировать большое количество IP-адресов для всех потенциальных pod, которые могут выполняться в кластере. При использовании kubenet вы беспокоитесь меньше об исчерпании IPv4 и обрабатываете небольшой диапазон IP-адресов для поддержки больших кластеров и требований приложений.
Следующие основные вычисления сравнивают адресное пространство в сетевых моделях:
- kubenet: простой диапазон IP-адресов /24 может поддерживать до 251 узлов в кластере (каждая подсеть виртуальной сети Azure резервирует первые три IP-адреса для операций управления). Это число узлов может поддерживать до 27 610 pods (по умолчанию максимально 110 pods на узел при использовании kubenet).
- Azure CNI: тот же базовый диапазон подсети /24 может поддерживать только 8 узлов в кластере. Эти узлы могут поддерживать только до 240 модулей (с максимальным значением по умолчанию, равным 30 модулям на узел с Azure CNI).
Размер кластера
Kubenet имеет жесткий максимум в 400 узлов на кластер, а максимальное число узлов для Azure CNI зависит от конфигурации плагина.
Связь
В Kubenet необходимо вручную управлять и поддерживать маршруты, определяемые пользователем. Для доступа к pod извне кластера необходимо использовать балансировщик нагрузки. С помощью Azure CNI модули pod получают полное подключение к виртуальной сети и могут быть напрямую доступны через частный IP-адрес из подключенных сетей.
Поддержка нескольких кластеров
В kubenet несколько кластеров не могут использовать одну подсеть узла. С помощью Azure CNI эта конфигурация возможна.
Задержка
По сравнению с Azure CNI Kubenet требует дополнительного перехода, что может вызвать некоторую небольшую задержку. Чувствительные к задержкам рабочие нагрузки должны развертываться в кластерах с использованием Azure CNI.
Дополнительные возможности
Azure CNI поддерживает сложные топологии сети с сетями Azure CNI, такими как виртуальные узлы или политики сети Azure.
Эти дополнительные возможности:
- Подсеть для пула узлов
- Динамическое выделение IP-адресов
- Выделение подсети узла и подсети pod
Различия в поведении между Kubenet и Azure CNI
Помимо критериев высокого уровня, существует множество различий в поведении и несоответствий в поддержке функций:
Способность | Kubenet | Azure CNI | Наложение Azure CNI | Azure CNI на базе Cilium |
---|---|---|---|---|
Развертывание кластера в существующей или новой виртуальной сети | Поддерживается — UDR вручную применены | Поддерживается | Поддерживается | Поддерживается |
Подключение между подами | Поддерживается | Поддержанный | Поддержанный | Поддержанный |
Pod-VM подключение; Виртуальная машина в той же виртуальной сети | Работает при инициировании пода | Работает обоими способами | Работает при инициировании pod-ом | Работает при запуске podа |
Pod-VM подключения; Виртуальная машина в пиринговой виртуальной сети | Работает, когда инициализируется pod | Работает обоими способами | Работает при запуске модулем (pod) | Работает при инициировании подом |
Локальный доступ с помощью VPN или Express Route | Работает, когда инициировано модулем pod | Работает обоими способами | Работает при инициировании pod'ом | Работает, когда инициируется pod |
Доступ к ресурсам, защищенным конечными точками службы | Поддержанный | Поддерживается | Поддерживается | |
Доступ к ресурсам, предоставляемым частными конечными точками | Поддерживается | Поддерживается | ||
Экспонирование служб Kubernetes через балансировщик нагрузки, шлюз приложений или Ingress-контроллер | Поддерживается | Поддержанный | Поддерживается | Те же ограничения при использовании режима наложения |
Azure DNS и частные зоны по умолчанию | Поддерживается | Поддерживается | Поддержанный | |
Поддержка пулов узлов Windows | Не поддерживается | Поддерживается | Поддерживается | Доступно только для Linux |
Виртуальные узлы | Не поддерживается | Поддержанный | Не поддерживается | |
Несколько кластеров, совместное использование одной подсети | Не поддерживается | Поддерживается | Поддерживается | |
Поддерживаемые политики сети | Ситец | Политики сети Calico и Azure | Calico, политики сети Azure, Cilium | Цилиум |