Kubernetes (иногда используется сокращенное название — K8s) — это платформа с открытым исходным кодом, которая используется для администрирования и автоматизации развертывания, планирования, мониторинга, обслуживания и эксплуатации контейнеров с приложениями в кластерах компьютеров.
Сеть Kubernetes, разработанная компанией Google, позволяет администраторам перемещать рабочие нагрузки между инфраструктурами частных, публичных и гибридных облаков. Разработчики используют Kubernetes для упаковывания приложений с необходимой инфраструктурой и быстрого развертывания новых версий.
Сеть Kubernetes позволяет компонентам Kubernetes обмениваться данными между собой и с другими приложениями. Платформа Kubernetes отличается от других сетевых платформ, поскольку в ее основе лежит одноуровневая структура сети, устраняющая необходимость в сопоставлении портов узлов с портами контейнеров. Платформа Kubernetes обеспечивает работу распределенных систем, предоставляя приложениям общий доступ к компьютерам без динамического распределения портов.
Сеть подов Kubernetes объединяет несколько взаимосвязанных компонентов:
Разные компоненты платформы Kubernetes (поды, контейнеры, узлы, приложения) используют разные сетевые методы для обмена данными. Существуют такие типы обмена данными: между контейнерами, между подами, между подами и службами, а также между внешними сетями и службами.
Обмен данными между подами — основной процесс в Kubernetes. Поды обмениваются данными друг с другом в соответствии с сетевыми политиками, настроенными сетевым плагином: обмен данными с другими подами происходит без создания явных ссылок и без сопоставления портов контейнеров с портами узлов. Поскольку поды расположены в одном сетевом пространстве имен и имеют собственные IP-адреса, они могут находить все другие поды на всех узлах и обмениваться с ними данными, используя локальный узел без необходимости в преобразовании сетевых адресов (NAT).
Одна из проблем сети Kubernetes заключается в обеспечении взаимодействия между внутренним (горизонтальным) и внешним (вертикальным) трафиком, поскольку внутренняя сеть изолирована от внешней. Однако трафик между узлами может также использоваться для обмена данными между узлами и внешним физическим компьютером или виртуальной машиной. Внешний трафик можно направить в кластер Kubernetes несколькими способами:
Более важный аспект сети Kubernetes — это сетевой интерфейс контейнеров, или CNI. CNI объединяет поды в разных узлах, выступая в качестве интерфейса между сетевым пространством имен и сетевым плагином или между поставщиком сетевых услуг и сетью Kubernetes. Существует много различных поставщиков и плагинов CNI с разными наборами функций и возможностей. Плагины CNI позволяют динамически настраивать сеть и ресурсы по мере инициализации и удаления подов. Они инициализируют и администрируют IP-адреса при создании и удалении контейнеров. Kubernetes — это поставщик сетевых услуг для Kubernetes по умолчанию, но такие плагины CNI, как Flannel, Calico, Canal и Weave Net, предлагают дополнительные возможности.
Администраторы сети могут использовать широкий спектр подходов для внедрения сетевой модели Kubernetes. В отчете Gartner «Магический квадрант в области сетей для ЦОД» за 2019 г. следующие примеры сетей Kubernetes были отнесены к новаторским:
VMware NSX Data Center предоставляет комплексную платформу виртуализации сети уровней 2–7 и системы безопасности, что дает возможность управлять всей сетью из единой консоли.
Начало работы с VMware Enterprise PKS. Высокая производительность и эффективность развертывания, использования и администрирования Kubernetes в производственной среде.
Реализуйте интегрированный стек служб сети и системы безопасности для приложений и микрослужб в контейнерах.
Обеспечьте быстрое создание приложений, согласованную работу Kubernetes с открытым исходным кодом и надежное управление всей средой.