Модель сети VPC бесшовно объединяет маршрутизацию VPC с базовой сетью, делая её идеальной для сценариев с высокой производительностью. Однако максимальное количество узлов, допускаемых в кластере, определяется квотой маршрутов VPC. В модели сети VPC CIDR‑блоки контейнеров отделены от CIDR‑блоков узлов. Для назначения IP‑адресов подам, работающим на узле кластера, каждому узлу в кластере выделяется диапазон IP‑адресов подов фиксированного количества. Модель сети VPC превосходит модель сети контейнерного туннеля по производительности, поскольку она не имеет накладных расходов на инкапсуляцию туннеля. Когда модель сети VPC используется в кластере, маршруты между CIDR‑блоками контейнеров и CIDR‑блоками VPC автоматически настраиваются в таблице маршрутов VPC. Это означает, что поды внутри кластера могут быть доступны напрямую с облачных серверов в том же VPC, даже если они находятся вне кластера.
Рисунок 1 Модель сети VPC

В кластере, использующем модель сети VPC, пути сетевого общения следующие:
Преимущества
Аналогично, если VPC доступна другим VPC или дата‑центрам, и таблица маршрутизации VPC включает маршруты к блокам CIDR контейнеров, ресурсы в других VPC или дата‑центрах могут напрямую взаимодействовать с контейнерами в кластере, при условии отсутствия конфликтов между сетевыми блоками CIDR
Недостатки
Сеть VPC выделяет IP‑адреса pod в соответствии с приведёнными ниже правилами. Основное правило — предварительно выделять блоки CIDR pod из блока CIDR контейнера узлам, а затем выделять IP‑адреса из блоков CIDR pod подам.
Рисунок 2 Управление IP‑адресами сети VPC

Максимальное количество узлов, которые можно создать в Кластере, используя сеть VPC = Количество IP‑адресов в CIDR‑блоке контейнера / Количество IP‑адресов в CIDR‑блоке, выделенном узлу из CIDR‑блока контейнера
Например, если CIDR‑блок контейнера 172.16.0.0/16, количество IP‑адресов составляет 65 536. Маска CIDR‑блока контейнера, выделенного узлу, равна 25. Это означает, что количество IP‑адресов Под на каждом узле равно 128. Поэтому можно создать максимум 512 (65536/128) узлов. Количество узлов, которые можно добавить в Кластер, также определяется доступными IP‑адресами в подсети узла и масштабом Кластера. Для подробностей см Рекомендация по планированию CIDR‑блока.
Как объясняется в Структура сети Кластера, в кластере есть три сети: сеть кластера, сеть контейнеров и сервисная сеть. При планировании сетевых адресов учитывайте следующее:
Предположим, что кластер содержит 200 узлов, а модель сети — сеть VPC.
В этом случае количество доступных IP-адресов в выбранной подсети должно быть больше 200. В противном случае узлы не могут быть созданы из‑за недостаточного количества IP-адресов.
Блок CIDR контейнера — 172.16.0.0/16, количество доступных IP-адресов — 65 536. Как описано в Управление IP-адресами Под, сеть VPC выделяется CIDR-блоком фиксированного размера (используется маска для определения максимального количества IP-адресов Под, выделяемых каждому узлу). Например, если верхний предел равен 128, кластер поддерживает максимум 512 (65536/128) узлов.
В этом примере создаётся кластер, использующий модель сети VPC, и в кластере один узел.
В консоли VPC найдите VPC, к которой относится кластер, и проверьте таблицу маршрутизации VPC.
Вы можете увидеть, что CCE создал настраиваемый маршрут в таблице маршрутизации. Этот маршрут имеет адрес назначения, соответствующий CIDR-блоку контейнера, назначенному узлу, а следующий переход направлен к целевому узлу. В примере CIDR-блок контейнера для кластера — 172.16.0.0/16, с 128 IP-адресами Под, назначенными каждому узлу. Поэтому CIDR-блок контейнера узла — 172.16.0.0/25, предоставляя в общей сложности 128 IP-адресов Под.
Когда обращаются к IP-адресу Под, маршрут VPC пересылает трафик к узлу‑следующего перехода, соответствующему адресу назначения. Ниже приведён пример:
Создать deployment.yaml файл. Ниже показан пример:
kind: DeploymentapiVersion: apps/v1metadata:name: examplenamespace: defaultspec:replicas: 4selector:matchLabels:app: exampletemplate:metadata:labels:app: examplespec:containers:- name: container-0image: 'nginx:perl'imagePullSecrets:- name: default-secret
Создать рабочую нагрузку.
kubectl apply -f deployment.yaml
kubectl get pod -owide
Вывод команды:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESexample-86b9779494-l8qrw 1/1 Running 0 14s 172.16.0.6 192.168.0.99 <none> <none>example-86b9779494-svs8t 1/1 Running 0 14s 172.16.0.7 192.168.0.99 <none> <none>example-86b9779494-x8kl5 1/1 Running 0 14s 172.16.0.5 192.168.0.99 <none> <none>example-86b9779494-zt627 1/1 Running 0 14s 172.16.0.8 192.168.0.99 <none> <none>
kubectl exec -it example-86b9779494-l8qrw -- curl 172.16.0.7
Если отображается следующая информация, доступ к рабочей нагрузке возможен:
<!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>