Оценка Производительности Cni Для Сети Kubernetes В Сети 10G (Август 2020 Г.)



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

ТЛ;ДР: Все CNI работают как надо, за исключением Kube-Router и Kube-OVN, Calico, за исключением автоматического определения MTU, лучший.

Статья-обновление моих прошлых проверок( 2018 И 2019 ), на момент тестирования я использую Kubernetes 1.19 в Ubuntu 18.04 с обновленными CNI по состоянию на август 2020 года.



Прежде чем мы углубимся в метрики.



Что нового с апреля 2019 года?

  • Можно тестировать на своем кластере.

    Вы можете запускать тесты на своем кластере с помощью нашего инструмента.

    Сетевой тест Kubernetes : кнб

  • Появились новые участники
  • Новые сценарии: текущие проверки запускают тесты производительности сети «Pod-to-Pod», а также добавлен новый сценарий «Pod-to-Service», который запускает тесты, более приближенные к реальным условиям.

    На практике ваш Pod с API работает с базой как с сервисом, а не через ip-адрес Pod (разумеется, мы проверяем и TCP, и UDP для обоих сценариев).

  • Потребление ресурсов: каждый тест теперь имеет собственное сравнение ресурсов.

  • Удаление тестов приложений: мы больше не проводим тесты HTTP, FTP и SCP, поскольку в результате нашего плодотворного сотрудничества с сообществом и сопровождающими CNI был обнаружен разрыв между результатами iperf по TCP и результатами завивки из-за задержки запуска CNI (первые несколько секунд работы Pod запуск, что нетипично в реальных условиях).

  • Открытый исходный код: доступны все тестовые источники (скрипты, настройки yml и исходные «необработанные» данные).

    Здесь



Эсертификат испытаний

Протокол подробно описан Здесь Обратите внимание, что эта статья посвящена Ubuntu 18.04 с ядром по умолчанию.



Выбор CNI для оценки

Данное тестирование направлено на сравнение CNI, настроенных с одним yaml-файлом (поэтому исключаются все установленные скриптами, такими как VPP и другие).

Наши выбранные CNI для сравнения:

  • Антреа v.0.9.1
  • Калико v3.16
  • Canal v3.16 (сеть Flannel + сетевые политики Calico)
  • Ресничка 1.8.2
  • Фланель 0.12.0
  • Последняя версия Kube-маршрутизатора (25.08.2020)
  • ВеавеНет 2.7.0


Настройка MTU для CNI

Прежде всего, мы проверяем влияние автоматического определения MTU на производительность TCP:

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

Влияние MTU на производительность TCP Еще больший разрыв обнаруживается при использовании UDP:

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

Влияние MTU на производительность UDP Учитывая ОГРОМНОЕ влияние на производительность, выявленное в ходе тестов, мы хотели бы послать письмо надежды всем сопровождающим CNI: пожалуйста, добавьте в CNI автоматическое определение MTU. Вы спасете котят, единорогов и даже самого милого: маленького Девопа.

Однако если вам нужно использовать CNI без поддержки автоматического определения MTU, вы можете настроить его вручную для повышения производительности.

Обратите внимание, что это относится к Calico, Canal и WeaveNet.

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

Моя маленькая просьба к сопровождающему CNI.

CNI-тестирование: необработанные данные

В этом разделе мы сравним CNI с правильным MTU (определяемым автоматически или устанавливаемым вручную).

Основная цель здесь — показать необработанные данные в виде графиков.

Легенда цвета:

  • серый — образец (т.е.

    голое железо)

  • зеленый — пропускная способность выше 9500 Мбит/с
  • желтый — пропускная способность выше 9000 Мбит/с
  • оранжевый — пропускная способность выше 8000 Мбит/с
  • красный — пропускная способность ниже 8000 Мбит/с
  • синий — нейтральный (не связан с полосой пропускания)


Потребление ресурсов без нагрузки

Прежде всего проверьте потребление ресурсов, когда кластер «спит».



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

Потребление ресурсов без нагрузки

Pod-to-Pod

В этом сценарии предполагается, что клиентский модуль подключается напрямую к серверному модулю, используя его IP-адрес.



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

Сценарий «Pod-to-Pod» TCP Результаты TCP между Pod и соответствующее потребление ресурсов:

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

UDP Результаты UDP между Pod и соответствующее потребление ресурсов:

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Pod-to-Service

Этот раздел актуален для реальных случаев использования: клиентский под подключается к серверному через службу ClusterIP.

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

Скрипт подключения пода к сервису TCP Результаты TCP для Pod-to-Service и соответствующее потребление ресурсов:

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)

UDP Результаты UDP от Pod-to-Service и соответствующее потребление ресурсов:

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Поддержка сетевой политики

Среди всех вышеперечисленных единственный, кто не поддерживает политику, — это Фланель.

Все остальные правильно реализуют сетевые политики, включая входящие и исходящие.

Отличная работа!

CNI-шифрование

Среди проверенных CNI есть те, которые умеют шифровать сетевой обмен между подами:
  • Антреа использует IPsec
  • Калико использует проволочную защиту
  • Ресничка с использованием IPsec
  • WeaveNet с использованием IPsec


Пропускная способность

Поскольку CNI осталось меньше, соберем все сценарии в один график:

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Потребление ресурсов

В этом разделе мы оценим ресурсы, используемые при обработке связи между Pod в TCP и UDP. Нет смысла рисовать график Pod-to-Service, поскольку он не дает дополнительной информации.



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Собираем все это вместе

Попробуем повторить все графики, мы внесли сюда немного субъективизма, заменив реальные значения словами «vwry fast», «low» и т.д.

Оценка производительности CNI для сети Kubernetes в сети 10G (август 2020 г.
</p><p>
)



Заключение и мои выводы

Это немного субъективно, поскольку я передаю собственную интерпретацию результатов.

Рад, что появились новые CNI, Antrea показала себя хорошо, многие функции были реализованы ещё в ранних версиях: автоматическое определение MTU, шифрование и простая установка.

Если сравнивать производительность, то все CNI работают хорошо, кроме Kube-OVN и Kube-Router. Kube-Router также не смог определить MTU, нигде в документации я не нашел способа его настройки ( здесь запрос по этой теме открыт).

С точки зрения потребления ресурсов Cilium по-прежнему использует больше оперативной памяти, чем другие, но производитель явно нацелен на большие кластеры, что явно не то же самое, что тест на трехузловом кластере.

Kube-OVN тоже потребляет много ресурсов CPU и RAM, но это молодой CNI на базе Open vSwitch (как и Antrea, он работает лучше и потребляет меньше).

У всех, кроме Фланнеля, есть сетевые политики.

Очень вероятно, что он никогда их не поддержит, поскольку цель проще пареной репы: чем легче, тем лучше.

Кроме всего прочего, производительность шифрования просто потрясающая.

Calico — один из старейших CNI, но шифрование было добавлено всего пару недель назад. Они выбрали Wireguard вместо IPsec, и, проще говоря, он работает великолепно и потрясающе, полностью затмевая другие CNI в этой части тестирования.

Конечно, из-за шифрования увеличивается потребление ресурсов, но достигнутая пропускная способность того стоит (Calico показала шестикратное улучшение в тесте шифрования по сравнению с Cilium, занимающим второе место).

Более того, вы можете включить Wireguard в любой момент после развертывания Calico в кластере, а также при желании отключить его на короткое время или навсегда.

Однако это невероятно удобно! Напоминаем, что Calico в настоящее время не определяет MTU автоматически (эта функция запланирована в будущих версиях), поэтому обязательно настройте MTU, если ваша сеть поддерживает Jumbo Frames (MTU 9000).

Помимо прочего отметим, что Cilium умеет шифровать трафик между узлами кластера (а не только между Pods), что может быть очень важно для публичных узлов кластера.

В заключение предлагаю следующие варианты использования:

  • Нужен CNI для очень маленького кластера ИЛИ мне не нужна безопасность : работать с Фланель , самый легкий и стабильный CNI ( он также является одним из старейших, по легенде его изобрел Homo Kubernautus или Homo Contaitorus ).

    Вас также может заинтересовать самый гениальный проект к3с , проверять!

  • Нужен CNI для обычного кластера : Калико — на ваш выбор, но не забудьте при необходимости настроить MTU. Вы можете легко и непринужденно играть с сетевыми политиками, включать и выключать шифрование и т. д.
  • Нужен CNI для (очень) крупномасштабного кластера : Ну тест не показывает поведение больших кластеров, я бы рад провести тесты, но у нас нет сотен серверов с подключением 10Гбит/с.

    Поэтому лучший вариант — запустить модифицированный тест на ваших узлах, хотя бы с помощью Calico и Cilium.

Теги: #Системное администрирование #Администрирование серверов #Kubernetes #DevOps #тестирование #производительность #производительность #тест #cni
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.