Основные понятия сети для контейнеров
Контейнеры — это изолированные единицы программного обеспечения, выполняющегося в общем ядре операционной системы (ОС). Контейнер упаковает приложение со своими зависимостями и абстрагирует его от операционной системы узла, в которой она выполняется. Результатом является упрощенная среда выполнения, в которой приложения могут выполняться и легко предоставляться во время разработки.
Контейнер изолирован от операционной системы хоста и от других контейнеров. Виртуальные сетевые адаптеры, подключенные к виртуальным коммутаторам, позволяют контейнерам взаимодействовать друг с другом и с внешними сетями.
Среда выполнения контейнера: Docker
В этом модуле мы рассмотрим параметры сети для контейнеров Docker в Windows. Docker — это набор инструментов, решений и облачных служб с открытым исходным кодом, которые предоставляют общую модель пакетирования или контейнеризациикода приложения в стандартизированную единицу, называемую контейнером Docker. Контейнеры Docker предоставляют функции безопасности для одновременного запуска нескольких контейнеров на одном узле, не затрагивая друг друга.
Изоляция контейнеров с помощью виртуальных коммутаторов
Различные типы виртуальных коммутаторов обеспечивают различные уровни изоляции и производительности контейнеров. Внутренний виртуальный коммутатор не подключен непосредственно к физическому сетевому адаптеру на узле контейнера, напрямую подключен только внешний виртуальный коммутатор.
К трем наиболее распространенным типам виртуальных коммутаторов относятся NAT, Прозрачный и наложение.
- Контейнер с NAT виртуальным коммутатором использует преобразование сетевых адресов (NAT) для доступа к внешним сетям. Виртуальный коммутатор NAT легко настроить, но он ограничивает переносимость и масштабируемость контейнера.
- прозрачный виртуальный коммутатор позволяет контейнеру подключаться непосредственно к физической сети. Этот виртуальный коммутатор обеспечивает высокую производительность и гибкость, но необходимо вручную настроить IP-адреса и правила маршрутизации.
- виртуальный коммутатор создает уровень виртуальной сети над физической сетью. Вы получаете межузловый обмен данными и сегментацию сети для контейнера, но есть увеличение затрат и сложности.
Управление контейнерами
Обычно контейнеры считаются виртуальными машинами, но следует помнить, что они не являются. Контейнер имеет отдельный жизненный цикл. Он развертывается, запускается, останавливается и уничтожается по запросу. Этот жизненный цикл делает контейнеры одноразовыми и влияет на то, как разработчики и специалисты по ИТ планируют управление большими развертываниями контейнеров.
Подключаемые модули сетевого интерфейса контейнера (CNI)
Чтобы управлять выделением и настройкой IP-адресов и виртуальных сетевых адаптеров для ваших контейнеров, необходимо использовать плагин сетевого интерфейса контейнеров (CNI). Подключаемый модуль CNI — это программный компонент, который реализует спецификацию CNI и определяет стандартный способ взаимодействия оркестраторов, таких как Kubernetes, с сетевыми провайдерами, такими как Azure.
Для контейнеров Windows доступны различные модули CNI, например:
- подключаемые модули WinNAT CNI используют виртуальные коммутаторы NAT для контейнерных сетей. WinNAT — это подключаемый модуль CNI по умолчанию для Docker в Windows.
- подключаемые модули WinCNI используют прозрачные виртуальные коммутаторы для сети контейнеров. WinCNI совместим с Kubernetes, но требует ручного управления IP-адресами.
- подключаемые модули Azure CNI используют виртуальные коммутаторы на основе оверлейных сетей для сетей контейнеров. Azure CNI интегрируется с виртуальной сетью Azure и предоставляет дополнительные функции, такие как политики сети, обнаружение служб и балансировка нагрузки.
Контейнеры и микрослужбы
Приложение микрослужб — это облачная архитектура, в которой одно приложение состоит из множества слабо связанных и независимо развертываемых компонентов или служб. Каждый компонент или служба могут быть представлены контейнером.
Контейнеры не обязательно реализуют архитектуру микрослужб. Они могут размещать монолитное приложение, но они не предназначены для этой цели. По умолчанию среда выполнения контейнера (например, Docker) и оркестратор контейнеров предполагает, что контейнер всегда может быть безопасно удален или удален, а другой контейнер может занять свое место по мере необходимости.
Контейнеры, Kubernetes и сеть
Процесс развертывания, обновления, мониторинга и удаления контейнеров вызывает множество проблем. В этом модуле мы рассмотрим решения по управлению сетями контейнеров Windows с использованием Kubernetes и Службы Azure Kubernetes (AKS). Эти параметры поддерживают использование подключаемых модулей CNI для сетевой интеграции контейнеров.