Что такое сеть Kubernetes?

Kubernetes (иногда используется сокращенное название — K8s) — это платформа с открытым исходным кодом, которая используется для администрирования и автоматизации развертывания, планирования, мониторинга, обслуживания и эксплуатации контейнеров с приложениями в кластерах компьютеров.

Сеть Kubernetes, разработанная компанией Google, позволяет администраторам перемещать рабочие нагрузки между инфраструктурами частных, публичных и гибридных облаков. Разработчики используют Kubernetes для упаковывания приложений с необходимой инфраструктурой и быстрого развертывания новых версий.


Сеть Kubernetes позволяет компонентам Kubernetes обмениваться данными между собой и с другими приложениями. Платформа Kubernetes отличается от других сетевых платформ, поскольку в ее основе лежит одноуровневая структура сети, устраняющая необходимость в сопоставлении портов узлов с портами контейнеров. Платформа Kubernetes обеспечивает работу распределенных систем, предоставляя приложениям общий доступ к компьютерам без динамического распределения портов.

Современная балансировка нагрузки с помощью программно-определяемых служб приложений

Подробнее 

Что такое сеть подов Kubernetes?

Сеть подов Kubernetes объединяет несколько взаимосвязанных компонентов:

  • Поды. Поды (англ. pods) Kubernetes были названы так по аналогии с понятиями, относящимися к живой природе: стручками гороха (англ. pea pods) и стадами китов (англ. whale pods). Поды — это группы контейнеров, которые совместно используют ресурсы хранения и сетевые ресурсы одного узла. Они создаются с помощью сервера API и размещаются с помощью контроллера. Каждому поду назначается IP-адрес, а для всех контейнеров в поде используются общие хранилище, IP-адрес и пространство порта (сетевое пространство имен). 
  • Контейнеры. Контейнер Kubernetes аналогичен виртуальной машине, операционная система (ОС) которой совместно используется несколькими приложениями. Он имеет собственную файловую систему, ЦП, память и пространство для процессов. Контейнеры всегда создаются в подах. В одном поде можно создать несколько контейнеров. Контейнеры в поде всегда перемещаются и отсоединяются одновременно, и для них всех применяется один график. Под можно перемещать между облаками. Контейнеры могут подключаться к другим контейнерам, узлу или внешних сетям по сети для контейнеров.
  • Узлы. Поды всегда используются в рабочем узле. Узлы — это компьютеры, на которых работают приложения в контейнерах. Kubernetes объединяет эти узлы в кластеры.
  • Ведущий узел. В каждом кластере узлов есть по крайней мере один ведущий узел, который управляет рабочими узлами. Ведущий узел может обмениваться данными со всеми узлами в кластере или непосредственно с отдельным подом.

Принципы работы сети на платформе Kubernetes

Разные компоненты платформы Kubernetes (поды, контейнеры, узлы, приложения) используют разные сетевые методы для обмена данными. Существуют такие типы обмена данными: между контейнерами, между подами, между подами и службами, а также между внешними сетями и службами.

Обмен данными между подами — основной процесс в Kubernetes. Поды обмениваются данными друг с другом в соответствии с сетевыми политиками, настроенными сетевым плагином: обмен данными с другими подами происходит без создания явных ссылок и без сопоставления портов контейнеров с портами узлов. Поскольку поды расположены в одном сетевом пространстве имен и имеют собственные IP-адреса, они могут находить все другие поды на всех узлах и обмениваться с ними данными, используя локальный узел без необходимости в преобразовании сетевых адресов (NAT). 

Одна из проблем сети Kubernetes заключается в обеспечении взаимодействия между внутренним (горизонтальным) и внешним (вертикальным) трафиком, поскольку внутренняя сеть изолирована от внешней. Однако трафик между узлами может также использоваться для обмена данными между узлами и внешним физическим компьютером или виртуальной машиной. Внешний трафик можно направить в кластер Kubernetes несколькими способами:

  • LoadBalancer. LoadBalancer — это стандартный способ внешнего подключения службы к Интернету. В этом сценарии сетевое средство балансировки нагрузки направляет весь внешний трафик службе. Каждой службе назначается отдельный IP-адрес.
  • ClusterIP. ClusterIP — служба Kubernetes, используемая по умолчанию для внутреннего обмена данными. Однако доступ к службе Kubernetes ClusterIP для внешнего трафика может предоставляться через прокси-сервер. Этот вариант удобно использовать для служб отладки и отображения внутренних панелей мониторинга. 
  • NodePort. NodePort открывает порты на узлах или виртуальных машинах, в результате чего трафик направляется от портов к службе. Чаще всего такой способ используется для служб, которые не должны быть постоянно доступными, например для демонстрационных версий приложений.
  • Ingress. Ingress выполняет роль маршрутизатора или контроллера, направляя трафик к службам через средство балансировки нагрузки. Это удобный вариант, если необходимо использовать один IP-адрес для предоставления доступа к нескольким службам.

Более важный аспект сети Kubernetes — это сетевой интерфейс контейнеров, или CNI. CNI объединяет поды в разных узлах, выступая в качестве интерфейса между сетевым пространством имен и сетевым плагином или между поставщиком сетевых услуг и сетью Kubernetes. Существует много различных поставщиков и плагинов CNI с разными наборами функций и возможностей. Плагины CNI позволяют динамически настраивать сеть и ресурсы по мере инициализации и удаления подов. Они инициализируют и администрируют IP-адреса при создании и удалении контейнеров. Kubernetes — это поставщик сетевых услуг для Kubernetes по умолчанию, но такие плагины CNI, как Flannel, Calico, Canal и Weave Net, предлагают дополнительные возможности.

 

Внедрение сети Kubernetes

Администраторы сети могут использовать широкий спектр подходов для внедрения сетевой модели Kubernetes. В отчете Gartner «Магический квадрант в области сетей для ЦОД» за 2019 г. следующие примеры сетей Kubernetes были отнесены к новаторским:

  • Big Cloud Fabric компании Big Switch Networks: облачная сетевая архитектура, позволяющая использовать Kubernetes в частных облачных средах.
  • Cumulus NetQ: система проверки матрицы на основе телеметрии, обеспечивающая визуализацию развернутых контейнеров.
  • Dell EMC: облачная платформа для работы с традиционными приложениями, а также облачными средами со встроенной поддержкой Kubernetes и контейнеров.
  • VMware NSX-T: платформа виртуализации сети и системы безопасности, которая виртуализирует сети для сред на базе нескольких облаков или гипервизоров, включая встроенные контейнерные сетевые службы.

Сеть с Kubernetes

Video Play Icon

Продукты, решения и ресурсы VMware, связанные с сетью Kubernetes

VMware NSX: ведущая корпоративная платформа виртуализации сети и системы безопасности

VMware NSX Data Center предоставляет комплексную платформу виртуализации сети уровней 2–7 и системы безопасности, что дает возможность управлять всей сетью из единой консоли.

VMware Enterprise PKS

Начало работы с VMware Enterprise PKS. Высокая производительность и эффективность развертывания, использования и администрирования Kubernetes в производственной среде.

Сети для контейнеров на базе VMware NSX

Реализуйте интегрированный стек служб сети и системы безопасности для приложений и микрослужб в контейнерах.

VMware Tanzu

Обеспечьте быстрое создание приложений, согласованную работу Kubernetes с открытым исходным кодом и надежное управление всей средой.