Облачная платформаAdvanced

Модель сети VPC

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Определение модели

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

Рисунок 1 Модель сети VPC


В кластере, использующем модель сети VPC, пути сетевого общения следующие:

  • Взаимодействие между подами на одном узле: пакеты напрямую пересылаются через IPVLAN.
  • Взаимодействие между Подами на разных узлах: Трафик обращается к шлюзу по умолчанию, следуя маршруту, указанному в таблице маршрутизации VPC, а затем пересылается к целевому Поду на другом узле с помощью маршрутизации VPC
  • Взаимодействие Под с Интернетом: Когда контейнер в кластере нужно получить доступ к Интернету, CCE использует NAT для преобразования IP‑адреса Пода в IP‑адрес узла, чтобы Под внешне общался, используя IP‑адрес узла

Преимущества и Недостатки

Преимущества

  • Высокая производительность и упрощённое обнаружение сетевых неисправностей достигаются за счёт устранения необходимости туннельной инкапсуляции
  • Таблица маршрутизации VPC автоматически настраивает маршруты между блоками CIDR контейнеров и блоками CIDR VPC. Это позволяет ресурсам VPC напрямую взаимодействовать с контейнерами в кластере
    Note

    Аналогично, если VPC доступна другим VPC или дата‑центрам, и таблица маршрутизации VPC включает маршруты к блокам CIDR контейнеров, ресурсы в других VPC или дата‑центрах могут напрямую взаимодействовать с контейнерами в кластере, при условии отсутствия конфликтов между сетевыми блоками CIDR

Недостатки

  • Количество узлов ограничено квотой маршрутов VPC.
  • Каждому узлу назначается блок CIDR фиксированного размера, что приводит к потере IP‑адресов в блоке CIDR контейнера.
  • Поды не могут напрямую использовать такие функции, как EIPs и группы безопасности.

Сценарии применения

  • Требования к высокой производительности: так как туннельная инкапсуляция не требуется, модель сети VPC обеспечивает производительность, близкую к производительности сети VPC, по сравнению с моделью сети контейнерных туннелей. Поэтому модель сети VPC применяется в сценариях с высокими требованиями к производительности, таких как AI computing и big data computing.
  • Небольшие и средние сети: из‑за ограничений таблиц маршрутов VPC рекомендуется, чтобы количество узлов в кластере было меньше или равно 1000.

Управление IP‑адресами Pod

Сеть VPC выделяет IP‑адреса pod в соответствии с приведёнными ниже правилами. Основное правило — предварительно выделять блоки CIDR pod из блока CIDR контейнера узлам, а затем выделять IP‑адреса из блоков CIDR pod подам.

  • Отдельные блоки CIDR: CIDR-блок контейнера полностью отделён от CIDR-блоков узлов. Они не перекрываются. Это предотвращает конфликты IP-адресов между узлами и pod‑ами. Кроме того, эти CIDR-блоки можно настраивать отдельно.
  • Каждый узел заранее выделил фиксированного размера pod CIDR‑блок: Фиксированного размера pod CIDR‑блок заранее выделяется каждому узлу из CIDR‑блока контейнера. Например, каждому узлу может быть выделено 128 IP‑адресов (/25 маска). Размер CIDR‑блока можно настроить при создании кластера, чтобы каждый узел имел достаточно IP‑адресов для своих pod‑ов.
  • Каждому узлу последовательно назначается pod CIDR‑блок: При добавлении узла заранее определённый по размеру pod CIDR‑блок последовательно назначается ему из CIDR‑блока контейнера. Например, если CIDR‑блок контейнера 172.16.0.0/16, то 172.16.0.0/25 назначается первому узлу, 172.16.0.128/25 — второму узлу и так далее, пока CIDR‑блок контейнера не будет исчерпан, как показано в Рисунок 2.
  • Каждому pod назначается IP‑адрес из pod CIDR‑блока узла: После того как Под запланирован на узел, он получает IP‑адрес из CIDR‑блока Под, предварительно выделенного этому узлу последовательно. IP‑адреса Под не могут превышать диапазон CIDR‑блока Под на узле.

Рисунок 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‑блока.

Рекомендация по планированию CIDR‑блока

Как объясняется в Структура сети Кластера, в кластере есть три сети: сеть кластера, сеть контейнеров и сервисная сеть. При планировании сетевых адресов учитывайте следующее:

  • Три блока CIDR не могут перекрываться. В противном случае возникает конфликт.
  • Убедитесь, что каждый блок CIDR имеет достаточное количество IP-адресов.
    • IP-адреса в блоках CIDR кластера должны соответствовать масштабу кластера. В противном случае узлы не могут быть созданы из‑за недостаточного количества IP-адресов.
    • IP-адреса в блоках CIDR контейнеров должны соответствовать масштабу службы. В противном случае pod‑ы не могут быть созданы из‑за недостаточного количества IP-адресов. Количество pod‑ов, которые могут быть созданы на каждом узле, также зависит от других параметров.

Предположим, что кластер содержит 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, к которой относится кластер, и проверьте таблицу маршрутизации VPC.

Вы можете увидеть, что CCE создал настраиваемый маршрут в таблице маршрутизации. Этот маршрут имеет адрес назначения, соответствующий CIDR-блоку контейнера, назначенному узлу, а следующий переход направлен к целевому узлу. В примере CIDR-блок контейнера для кластера — 172.16.0.0/16, с 128 IP-адресами Под, назначенными каждому узлу. Поэтому CIDR-блок контейнера узла — 172.16.0.0/25, предоставляя в общей сложности 128 IP-адресов Под.

Когда обращаются к IP-адресу Под, маршрут VPC пересылает трафик к узлу‑следующего перехода, соответствующему адресу назначения. Ниже приведён пример:

  1. Используйте kubectl для доступа к кластеру. Подробнее см. Доступ к Кластеру с помощью kubectl.
  2. Создать развертывание в кластере.

    Создать deployment.yaml файл. Ниже показан пример:

    kind: Deployment
    apiVersion: apps/v1
    metadata:
    name: example
    namespace: default
    spec:
    replicas: 4
    selector:
    matchLabels:
    app: example
    template:
    metadata:
    labels:
    app: example
    spec:
    containers:
    - name: container-0
    image: 'nginx:perl'
    imagePullSecrets:
    - name: default-secret

    Создать рабочую нагрузку.

    kubectl apply -f deployment.yaml

  3. Проверьте запущенные поды.

    kubectl get pod -owide

    Вывод команды:

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    example-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>

  4. Используйте облачный сервер в том же VPC, чтобы напрямую получить доступ к IP-адресу pod из‑за пределов кластера. Вы также можете получить доступ к pod, используя его IP-адрес внутри pod или с узла в кластере. В следующем примере доступ к IP-адресу pod осуществляется внутри pod. example-86b9779494-l8qrw это имя pod, и 172.16.0.7 это IP-адрес pod.

    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 and
    working. 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>

Helpful Links