Определение модели
Облачная нативная сеть 2.0 является проприетарной моделью сети контейнеров следующего поколения, которая комбинирует elastic network interfaces (ENIs) и supplementary network interfaces (sub-ENIs) Virtual Private Cloud (VPC). Это позволяет ENIs или sub-ENIs напрямую привязывать к pod‑ам, предоставляя каждому pod‑у уникальный IP‑адрес внутри VPC. Кроме того, она поддерживает дополнительные функции, такие как контейнер сквозного прохождения ELB, привязка pod к группе безопасности и привязка pod к EIP. Поскольку контейнерная туннельная инкапсуляция и NAT не требуются, Облачная нативная сеть 2.0 обеспечивает более высокую производительность сети, чем модель туннельной сети контейнеров и модель сети VPC.
Рисунок 1 Облачная нативная сеть 2.0

В кластере, использующем Облачную нативную сеть 2.0, pod‑ы опираются на ENIs или sub-ENIs для подключения к внешним сетям.
- Pod‑ы, работающие на узлах ECS, используют sub-ENIs, которые привязаны к ENIs ECS через подинтерфейсы VLAN.
- Для запуска pod‑а необходимо привязать к нему ENIs. Количество pod‑ов, которые могут работать на узле, зависит от количества ENIs, которые можно привязать к узлу, и количества доступных портов ENI на узле.
- Трафик для взаимодействия между pod‑ами на одном узле, между pod‑ами на разных узлах и доступа к сетям за пределами кластера перенаправляется через ENI или sub-ENI VPC.
Примечания и ограничения
Эта модель сети доступна только для кластеров CCE Turbo.
Преимущества и недостатки
Преимущества
- VPC служат основой для построения сетей контейнеров. Каждый pod имеет собственный сетевой интерфейс и IP‑адрес, что упрощает решение сетевых проблем и повышает производительность.
- В той же VPC ENIs напрямую привязываются к pod‑ам в кластере, позволяя ресурсам за пределами кластера напрямую взаимодействовать с контейнерами внутри кластера.Note
Аналогично, если VPC доступна другим VPC или дата‑центрам, ресурсы в других VPC или дата‑центрах могут напрямую взаимодействовать с контейнерами в кластере, при условии отсутствия конфликтов между CIDR‑блоками сети.
- Функции балансировки нагрузки, группы безопасности и EIP, предоставляемые VPC, могут напрямую использоваться pod‑ами.
Недостатки
Сети контейнеров построены на VPC, при этом каждый pod получает IP‑адрес из CIDR‑блока VPC. Поэтому крайне важно тщательно планировать CIDR‑блок контейнеров перед созданием кластера.
Сценарии применения
- Требования к высокой производительности: Облачная нативная сеть 2.0 использует сети VPC для построения сетей контейнеров, исключая необходимость туннельной инкапсуляции или NAT при взаимодействии контейнеров. Это делает Облачную нативную сеть 2.0 идеальной для сценариев, требующих высокой пропускной способности и низкой задержки.
- Крупномасштабные сети: Облачная нативная сеть 2.0 поддерживает до 2 000 узлов ECS и 100 000 pod‑ов.
Управление IP‑адресами контейнеров
В Облачной нативной сети 2.0 узлы ECS используют sub-ENIs.
- IP‑адрес pod выделяется напрямую из подсети VPC, настроенной для сети контейнеров. Не требуется выделять отдельный небольшой сетевой сегмент для узла.
- Чтобы добавить узел ECS в кластер, сначала привяжите ENI, несущий sub-ENI. После привязки ENI можно привязать sub-ENI.
- Количество ENI, привязанных к узлу ECS: Для кластеров v1.19.16-r40, v1.21.11-r0, v1.23.9-r0, v1.25.4-r0, v1.27.1-r0 и более новых версий значение равно 1. Для кластеров более ранних версий значение равно максимальному количеству sub-ENIs, которые можно привязать к узлу, делённому на 64 (округлённому вверх).
- ENI, привязанные к узлу ECS = Количество ENI, используемых для sub-ENIs + количество sub-ENIs, используемых pod‑ами в текущий момент + количество предварительно привязанных sub-ENIs
- При создании pod доступный ENI случайным образом выделяется из пула предварительно привязанных ENI узла.
- При удалении pod ENI возвращается в пул ENI узла.
- При удалении узла ENI возвращаются в пул, а sub-ENIs удаляются.
Облачная нативная сеть 2.0 поддерживает динамический Политики предварительной привязки ENI. В следующей таблице перечислены сценарии.
Политика | Политика динамической предварительной привязки ENI (по умолчанию) |
|---|---|
Политика управления | nic-minimum-target: минимальное количество ENI (предварительно привязанных и неиспользуемых + использованных), привязанное к узлу. nic-maximum-target: Если количество ENI, привязанное к узлу, превышает значение этого параметра, система не будет активно предварительно привязывать ENI. nic-warm-target: минимальное количество предварительно привязанных ENI на узле. nic-max-above-warm-target: ENI отвязываются и освобождаются только когда количество неактивных ENI минус количество nic-warm-target больше порогового значения. |
Сценарий применения | Ускоряет запуск pod, одновременно повышая эффективность использования IP‑ресурсов. Этот режим применяется в сценариях, когда количество IP‑адресов в сегменте сети контейнеров недостаточно. |
CCE предоставляет четыре параметра для политики динамической предварительной привязки ENI. Правильно задайте эти параметры.
Параметр | Значение по умолчанию | Описание | Рекомендация |
|---|---|---|---|
nic-minimum-target | 10 | Минимальное количество ENI, привязанных к узлу. Значение может быть числом или процентом.
Установите оба nic-minimum-target и nic-maximum-target в одно и то же значение или процент. | Установите эти параметры в зависимости от количества подов. |
nic-maximum-target | 0 | Если количество ENI, привязанных к узлу, превышает значение nic-maximum-target, система не привязывает ENI заранее. Если значение этого параметра больше или равно значению nic-minimum-target, проверка максимального количества предварительно привязанных ENI включена. В противном случае проверка отключена. Значение может быть числом или процентом.
Установите оба nic-minimum-target и nic-maximum-target на одинаковое значение или процент. | Установите эти параметры в зависимости от количества подов. |
nic-warm-target | 2 | Минимальное количество предварительно привязанных ENI на узле. Значение должно быть числом. Когда значение nic-warm-target + количество привязанных ENI больше, чем значение nic-maximum-target, система предварительно привяжет ENI на основе разницы между значением nic-maximum-target и количеством привязанных ENI. | Установите этот параметр в число подов, которые могут быть масштабированы мгновенно в течение 10 секунд. |
nic-max-above-warm-target | 2 | Только когда количество свободных ENI на узле минус значение nic-warm-target превышает порог, предварительно привязанные ENI будут отвязаны и возвращены. Значение может быть только числом.
| Установите этот параметр, исходя из разницы между количеством подов, часто масштабируемых на большинстве узлов в течение нескольких минут, и количеством подов, мгновенно масштабируемых на большинстве узлов в течение 10 секунд. |
Предшествующие параметры поддерживают глобальную конфигурацию на уровне кластера и пользовательские настройки на уровне пула узлов. Последние имеют приоритет над первыми.
Компонент сетевого взаимодействия контейнеров поддерживает масштабируемый пул предварительно привязанных ENI для каждого узла. Компонент проверяет и рассчитывает количество предварительно привязанных ENI или свободных ENI каждые 10 секунд.
- Количество предварительно привязанных ENI = min(nic-maximum-target – Количество привязанных ENI, max(nic-minimum-target – Количество привязанных ENI, nic-warm-target – Количество свободных ENI)
- Количество ENI, которые необходимо отвязать = min(Количество свободных ENI – nic-warm-target – nic-max-above-warm-target, Количество привязанных ENI – nic-minimum-target)
Количество предварительно привязанных ENI на узле находится в следующем диапазоне:
- Минимальное количество ENI, которые нужно предварительно привязать = min(max(nic-minimum-target – Количество привязанных ENI, nic-warm-target), nic-maximum-target – Количество привязанных ENI)
- Максимальное количество ENI, которые нужно предварительно привязать = max(nic-warm-target + nic-max-above-warm-target, Количество привязанных ENI – nic-minimum-target)
Когда создаётся под, свободный предварительно привязанный ENI (самый ранний неиспользуемый) будет выделен из пула в первую очередь. Если свободный ENI недоступен, будет создан новый ENI или новый sub-ENI будет привязан к поду.
Когда под удаляется, соответствующий ENI возвращается в пул предварительно привязанных ENI узла, вступает в 2‑минутный период охлаждения и может быть привязан к другому поду. Если ENI не привязан ни к какому podу в течение 2 минут, он будет освобождён.
Рекомендации по планированию CIDR‑блоков
Как объясняется в Структура сети кластера, сетевые адреса в кластере делятся на сеть кластера, сеть контейнеров и сеть сервисов. При планировании сетевых адресов учитывайте следующие факторы:
- Все подсети (включая расширенные подсети) в VPC, где расположен кластер, не могут конфликтовать с блоками Service CIDR.
- Убедитесь, что каждый CIDR‑блок имеет достаточное количество IP‑адресов.
- IP‑адреса в CIDR‑блоке кластера должны соответствовать масштабу кластера. Иначе узлы не могут быть созданы из‑за недостаточного количества IP‑адресов.
- IP‑адреса в CIDR‑блоке контейнеров должны соответствовать масштабу сервисов. В противном случае поды не могут быть созданы из‑за недостаточного количества IP‑адресов.
В Cloud Native Network 2.0 блок CIDR контейнеров и блок CIDR узлов используют общие сетевые IP‑адреса в VPC. Рекомендуется, чтобы подсети контейнеров и узлов не использовали одну и ту же подсеть. Иначе контейнеры или узлы могут не создаться из‑за недостаточного количества IP‑адресов.
Кроме того, после создания кластера в CIDR‑блок контейнеров можно добавить подсеть, чтобы увеличить количество доступных IP‑адресов. В этом случае убедитесь, что добавленная подсеть не конфликтует с другими подсетями в CIDR‑блоке контейнеров.
Пример доступа к Cloud Native Network 2.0
В этом примере создаётся кластер CCE Turbo, и кластер содержит три узла ECS.
Вы можете проверить базовую информацию о узле в консоли ECS. Вы увидите, что к узлу привязаны основной сетевой интерфейс и расширенный сетевой интерфейс. Оба являются ENI. IP‑адрес расширенного сетевого интерфейса принадлежит CIDR‑блоку контейнеров и используется для привязки sub‑ENI к подам на узле.
Ниже приведён пример создания рабочей нагрузки в кластере с использованием Cloud Native Network 2.0:
- Используйте kubectl для доступа к кластеру. Подробнее см. Доступ к кластеру с помощью kubectl.
- Создайте Deployment в кластере.
Создайте deployment.yaml файл. Ниже приведён пример:
kind: DeploymentapiVersion: apps/v1metadata:name: examplenamespace: defaultspec:replicas: 6selector:matchLabels:app: exampletemplate:metadata:labels:app: examplespec:containers:- name: container-0image: 'nginx:perl'resources:limits:cpu: 250mmemory: 512Mirequests:cpu: 250mmemory: 512MiimagePullSecrets:- name: default-secretСоздайте нагрузку.
kubectl apply -f deployment.yaml - Проверьте запущенные Под.kubectl get pod -owide
Вывод команды:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESexample-5bdc5699b7-54v7g 1/1 Running 0 7s 10.1.18.2 10.1.0.167 <none> <none>example-5bdc5699b7-6dzx5 1/1 Running 0 7s 10.1.18.216 10.1.0.186 <none> <none>example-5bdc5699b7-gq7xs 1/1 Running 0 7s 10.1.16.63 10.1.0.144 <none> <none>example-5bdc5699b7-h9rvb 1/1 Running 0 7s 10.1.16.125 10.1.0.167 <none> <none>example-5bdc5699b7-s9fts 1/1 Running 0 7s 10.1.16.89 10.1.0.144 <none> <none>example-5bdc5699b7-swq6q 1/1 Running 0 7s 10.1.17.111 10.1.0.167 <none> <none>IP-адреса всех Под являются sub-ENI, которые привязаны к ENI (расширенному сетевому интерфейсу) узла.
Например, IP-адрес расширенного сетевого интерфейса node 10.1.0.167 равен 10.1.17.172. В консоли сетевых интерфейсов вы можете увидеть, что к расширенному сетевому интерфейсу привязаны три sub-ENI, чей IP-адрес 10.1.17.172. Эти sub-ENI являются IP-адресами Под, запущенных на узле.
- Войдите в ECS в том же VPC и получите доступ к IP-адресу Под из внешней среды кластера.
В этом примере IP-адрес Под равен 10.1.18.2.
curl 10.1.18.2Если отображается следующая информация, нагрузка может быть корректно доступна:
<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style></head><body><h1>Welcome to nginx!</h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>