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

VPC Network Model

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

Model Definition

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

Figure 1 модель сети VPC


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

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

Advantages and Disadvantages

Advantages

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

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

Disadvantages

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

Application Scenarios

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

Container IP Address Management

Модель сети VPC назначает IP‑адреса контейнеров в соответствии со следующими рекомендациями:

  • Блоки CIDR контейнеров отделены от блоков CIDR узлов.
  • IP‑адреса выделяются по узлам. Один блок CIDR фиксированного размера (настраиваемый) выделяется каждому узлу в кластере из блока CIDR контейнеров.
  • Блок CIDR контейнеров последовательно назначает блоки CIDR новым узлам в циклическом порядке.
  • IP‑адреса из блоков CIDR, назначенных узлу, распределяются pod‑ам, запланированным на этот узел, циклическим образом.

Figure 2 Управление IP‑адресами сети VPC


Максимальное количество узлов, которые можно создать в кластере с использованием сети VPC = количество IP‑адресов в блоке CIDR контейнеров / количество IP‑адресов в блоке CIDR, выделенном узлу из блока CIDR контейнеров

Например, если блок CIDR контейнеров имеет адрес 172.16.0.0/16, количество IP‑адресов составляет 65536. Маска блока CIDR контейнеров, выделенного узлу, равна 25. То есть количество IP‑адресов контейнеров на каждом узле равно 128. Следовательно, максимум 512 (65536/128) узлов может быть создано. Количество узлов, которые можно добавить в кластер, также определяется доступными IP‑адресами в подсети узла и масштабом кластера. Подробности см. Recommendation for CIDR Block Planning.

Recommendation for CIDR Block Planning

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

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

Предположим, что кластер содержит 200 узлов, а модель сети — сеть VPC.

В этом случае количество доступных IP‑адресов в выбранной подсети должно быть больше 200. В противном случае узлы не могут быть созданы из‑за недостатка IP‑адресов.

Блок CIDR контейнеров — 172.16.0.0/16, количество доступных IP‑адресов — 65536. Как описано в Container IP Address Management, сети VPC выделяется блок CIDR фиксированного размера (маска используется для определения максимального количества IP‑адресов контейнеров, выделяемых каждому узлу). Например, если верхний предел равен 128, кластер поддерживает максимум 512 (65536/128) узлов.

Example of VPC Network Access

В этом примере создаётся кластер, использующий модель сети 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 в кластере.

    Создайте 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‑адресу пода из внешней сети кластера. Вы также можете получить доступ к поду, используя его IP‑адрес внутри самого пода или с узла в кластере. В следующем примере получите доступ к IP‑адресу пода внутри пода. example-86b9779494-l8qrw это имя Под, и 172.16.0.7 это IP‑адрес Пода.

    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>