• Русский
  • Настройка подсетей

    Содержание

    Правила выделения IPСеть CalicoОграничения и лимитыПример custom resource (CR) подсети с сетью CalicoСоздание подсети в сети Calico через веб-консольСоздание подсети в сети Calico через CLIReference ContentСеть Kube-OVNПример custom resource (CR) подсети с оверлейной сетью Kube-OVNСоздание подсети в оверлейной сети Kube-OVN через веб-консольСоздание подсети в оверлейной сети Kube-OVN через CLIUnderlay сетьИнструкция по использованиюДобавление мостовой сети через веб-консоль (опционально)Добавление мостовой сети через CLIДобавление VLAN через веб-консоль (опционально)Добавление VLAN через CLIПример custom resource (CR) подсети с сетью Kube-OVN UnderlayСоздание подсети в сети Kube-OVN Underlay через веб-консольСоздание подсети в сети Kube-OVN Underlay через CLIСвязанные операцииУправление подсетямиОбновление шлюза через веб-консольОбновление шлюза через CLIОбновление зарезервированных IP через веб-консольОбновление зарезервированных IP через CLIНазначение проектов через веб-консольНазначение проектов через CLIНазначение пространств имён через веб-консольНазначение пространств имён через CLIРасширение подсетей через веб-консольРасширение подсетей через CLIУправление сетями CalicoУдаление подсети через веб-консольУдаление подсети через CLI

    Правила выделения IP

    NOTE

    Если проекту или пространству имён назначено несколько подсетей, IP-адрес будет случайным образом выбран из одной из подсетей.

    • Выделение для проекта:

      • Если проект не привязан к подсети, Pods во всех пространствах имён этого проекта могут использовать IP-адреса только из подсети по умолчанию. Если в подсети по умолчанию недостаточно IP-адресов, Pods не смогут запуститься.
      • Если проект привязан к подсети, Pods во всех пространствах имён этого проекта могут использовать IP-адреса только из этой конкретной подсети.
    • Выделение для пространства имён:

      • Если пространство имён не привязано к подсети, Pods в этом пространстве имён могут использовать IP-адреса только из подсети по умолчанию. Если в подсети по умолчанию недостаточно IP-адресов, Pods не смогут запуститься.
      • Если пространство имён привязано к подсети, Pods в этом пространстве имён могут использовать IP-адреса только из этой конкретной подсети.

    Сеть Calico

    Создание подсетей в сети Calico для достижения более тонкой изоляции ресурсов внутри кластера.

    Ограничения и лимиты

    В среде кластера с IPv6 подсети, создаваемые в сети Calico, по умолчанию используют инкапсуляцию VXLAN. Порты, необходимые для инкапсуляции VXLAN, отличаются от портов для инкапсуляции IPIP. Необходимо обеспечить открытие UDP порта 4789.

    Пример custom resource (CR) подсети с сетью Calico

    # test-calico-subnet.yaml
    apiVersion: kubeovn.io/v1
    kind: Subnet
    metadata:
      name: test-calico
    spec:
      cidrBlock: 10.1.1.1/24
      default: false
      ipipMode: Always
      natOutgoing: true
      private: false
      protocol: Dual
      v4blockSize: 30
    1. Если default true, используется инкапсуляция VXLAN.
    2. См. параметры Encapsulation Mode и Encapsulation Protocol.
    3. См. параметры Outbound Traffic NAT.

    Создание подсети в сети Calico через веб-консоль

    1. Перейдите в Administrator.

    2. В левой навигационной панели выберите Network Management > Subnets.

    3. Нажмите Create Subnet.

    4. Настройте параметры согласно следующим инструкциям.

      ПараметрОписание
      CIDRПосле назначения подсети проекту или пространству имён, контейнерные группы в пространстве имён будут случайным образом использовать IP-адреса из этого CIDR для связи.
      Примечание: Соответствие между CIDR и BlockSize смотрите в Reference Content.
      Encapsulation ProtocolВыберите протокол инкапсуляции. IPIP не поддерживается в режиме dual-stack.
      • IPIP: реализует межсегментную связь с помощью протокола IPIP.
      • VXLAN (Alpha): реализует межсегментную связь с помощью протокола VXLAN.
      • No Encapsulation: прямое соединение через маршрутизацию.
      Encapsulation ModeПри выборе протокола инкапсуляции IPIP или VXLAN необходимо указать режим инкапсуляции, по умолчанию — Always.
      • Always: всегда включать туннели IPIP / VXLAN.
      • Cross Subnet: включать туннели IPIP / VXLAN только при нахождении хостов в разных подсетях; при нахождении в одной подсети — прямое соединение через маршрутизацию.
      Outbound Traffic NATВыберите, включать ли NAT для исходящего трафика (Network Address Translation), по умолчанию включено.
      Используется для установки адресов доступа, видимых во внешней сети, при выходе подсети в интернет.
      Если NAT включён, в качестве адреса доступа используется IP хоста; если выключен — IP контейнерных групп подсети напрямую видны во внешней сети.
    5. Нажмите Confirm.

    6. На странице с деталями подсети выберите Actions > Allocate Project / Allocate Namespace.

    7. Завершите настройку и нажмите Allocate.

    Создание подсети в сети Calico через CLI

    kubectl apply -f test-calico-subnet.yaml

    Reference Content

    Динамическое соответствие между CIDR и blockSize приведено в таблице ниже.

    CIDRblockSize SizeКоличество хостовРазмер одного IP пула
    prefix<=16261024+64
    16<prefix<=1927256~102432
    prefix=202825616
    prefix=21292568
    prefix=22302564
    prefix=23301284
    prefix=2430644
    prefix=2530324
    prefix=2631322
    prefix=2731162
    prefix=283182
    prefix=293142
    prefix=303122
    prefix=313112
    NOTE

    Подсети с префиксом больше 31 не поддерживаются.

    Сеть Kube-OVN

    Создание подсети в оверлейной сети Kube-OVN для более тонкой изоляции сетевых ресурсов в кластере.

    NOTE

    Платформа имеет встроенную подсеть join для связи между узлами и Pods; избегайте конфликтов сетевых сегментов между join и новыми подсетями.

    Пример custom resource (CR) подсети с оверлейной сетью Kube-OVN

    # test-overlay-subnet.yaml
    apiVersion: kubeovn.io/v1
    kind: Subnet
    metadata:
      name: test-overlay-subnet
    spec:
      default: false
      protocol: Dual
      cidrBlock: 10.1.0.0/23
      natOutgoing: true
      excludeIps:
        - 10.1.1.2
      gatewayType: distributed
      gatewayNode: ''
      private: false
      enableEcmp: false
    1. См. параметры Outbound Traffic NAT.
    2. См. параметры Reserved IP.
    3. См. параметры Gateway Type. Допустимые значения: distributed или centralized.
    4. См. параметры Gateway Nodes.
    5. См. параметры ECMP. Требуется предварительное включение feature gate администратором.

    Создание подсети в оверлейной сети Kube-OVN через веб-консоль

    1. Перейдите в Administrator.

    2. В левой навигационной панели выберите Network Management > Subnet.

    3. Нажмите Create Subnet.

    4. Настройте параметры согласно следующим инструкциям.

      ПараметрОписание
      Network SegmentПосле назначения подсети проекту или пространству имён IP из этого сегмента будут случайным образом выделяться для использования Pods.
      Reserved IPУказанные зарезервированные IP не будут автоматически выделяться. Например, могут использоваться как фиксированные IP вычислительных компонентов.
      Gateway TypeВыберите тип шлюза подсети для управления исходящим трафиком.
      - Distributed: каждый хост кластера может выступать в роли исходящего узла для Pods на текущем хосте, обеспечивая распределённый выход.
      - Centralized: все Pods кластера используют один или несколько конкретных хостов как исходящие узлы, что облегчает аудит и контроль межсетевого экрана. Настройка нескольких централизованных gateway nodes обеспечивает высокую доступность.
      ECMP (Alpha)При выборе Centralized gateway можно использовать функцию ECMP. По умолчанию шлюз работает в режиме мастер-слейв, только мастер обрабатывает трафик. Включение ECMP (Equal-Cost Multipath Routing) позволяет направлять исходящий трафик по нескольким равнозначным путям ко всем доступным узлам шлюза, увеличивая общую пропускную способность.

      Примечание: необходимо предварительно включить соответствующие функции.
      Gateway NodesПри использовании Centralized gateway выберите один или несколько конкретных хостов в качестве узлов шлюза.
      Outbound Traffic NATВыберите, включать ли NAT для исходящего трафика. По умолчанию включено.
      Используется для установки адреса доступа, видимого во внешней сети при выходе Pods подсети в интернет.
      Если NAT включён, в качестве адреса доступа используется IP хоста; если выключен — IP Pods подсети напрямую видны во внешней сети. В этом случае рекомендуется использовать централизованный шлюз.
    5. Нажмите Confirm.

    6. На странице с деталями подсети выберите Actions > Allocate Project / Namespace.

    7. Завершите настройку и нажмите Allocate.

    Создание подсети в оверлейной сети Kube-OVN через CLI

    kubectl apply -f test-overlay-subnet.yaml

    Underlay сеть

    Создание подсетей в Underlay сети Kube-OVN позволяет не только добиться более тонкой сетевой изоляции ресурсов, но и обеспечивает лучшее качество производительности.

    INFO

    Контейнерная сеть в Kube-OVN Underlay требует поддержки со стороны физической сети. Пожалуйста, ознакомьтесь с лучшими практиками Preparing the Kube-OVN Underlay Physical Network для обеспечения сетевой связности.

    Инструкция по использованию

    Общий процесс создания подсетей в сети Kube-OVN Underlay: Добавить мостовую сеть > Добавить VLAN > Создать подсеть.

    1. Имя сетевой карты по умолчанию.
    2. Настройка сетевой карты по узлам.

    Добавление мостовой сети через веб-консоль (опционально)

    # test-provider-network.yaml
    kind: ProviderNetwork
    apiVersion: kubeovn.io/v1
    metadata:
      name: test-provider-network
    spec:
      defaultInterface: eth1
      customInterfaces:
        - interface: eth2
          nodes:
            - node1
      excludeNodes:
        - node2
    1. Имя сетевой карты по умолчанию.
    2. Настройка сетевой карты по узлам.

    Мостовая сеть — это мост, после привязки сетевой карты к мосту она может перенаправлять трафик контейнерной сети, обеспечивая связь с физической сетью.

    Процедура:

    1. Перейдите в Administrator.

    2. В левой навигационной панели выберите Network Management > Bridge Network.

    3. Нажмите Add Bridge Network.

    4. Настройте параметры согласно следующим инструкциям.

      Примечание:

      • Target Pod — все Pods, запланированные на текущем узле, или Pods в пространствах имён, привязанных к конкретным подсетям, запланированные на текущем узле. Это зависит от области действия подсети в мостовой сети.

      • Узлы в подсети Underlay должны иметь несколько сетевых карт, и сетевая карта, используемая мостовой сетью, должна быть выделена исключительно для Underlay и не должна нести другой трафик, например SSH. Например, если в мостовой сети три узла, планируется выделение eth0, eth0, eth1 для Underlay, то сетевая карта по умолчанию может быть eth0, а для третьего узла — eth1.

      ПараметрОписание
      Default Network Card NameПо умолчанию целевой Pod будет использовать эту сетевую карту моста для связи с физической сетью.
      Configure Network Card by NodeЦелевые Pods на указанных узлах будут подключаться к указанной сетевой карте вместо сетевой карты по умолчанию.
      Exclude NodesПри исключении узлов все Pods, запланированные на этих узлах, не будут подключаться ни к одной сетевой карте на этих узлах.

      Примечание: Pods на исключённых узлах не смогут взаимодействовать с физической сетью или контейнерными сетями других узлов, поэтому следует избегать планирования соответствующих Pods на эти узлы.
    5. Нажмите Add.

    Добавление мостовой сети через CLI

    kubectl apply -f test-provider-network.yaml

    Добавление VLAN через веб-консоль (опционально)

    # test-vlan.yaml
    kind: Vlan
    apiVersion: kubeovn.io/v1
    metadata:
      name: test-vlan
    spec:
      id: 0
      provider: test-provider-network
    1. VLAN ID.
    2. Ссылка на мостовую сеть.

    Платформа имеет преднастроенный виртуальный LAN ovn-vlan, который подключается к мостовой сети provider. Также можно настроить новый VLAN для подключения к другим мостовым сетям, обеспечивая изоляцию между VLAN.

    Процедура:

    1. Перейдите в Administrator.

    2. В левой навигационной панели выберите Network Management > VLAN.

    3. Нажмите Add VLAN.

    4. Настройте параметры согласно следующим инструкциям.

      ПараметрОписание
      VLAN IDУникальный идентификатор VLAN, используемый для различения виртуальных LAN.
      Bridge NetworkVLAN будет подключен к этой мостовой сети для связи с физической сетью.
    5. Нажмите Add.

    Добавление VLAN через CLI

    kubectl apply -f test-vlan.yaml

    Пример custom resource (CR) подсети с сетью Kube-OVN Underlay

    # test-underlay-network.yaml
    apiVersion: kubeovn.io/v1
    kind: Subnet
    metadata:
      name: test-underlay-network
    spec:
      default: false
      protocol: Dual
      cidrBlock: 11.1.0.0/23
      gateway: 11.1.0.1
      excludeIps:
        - 11.1.0.3
      private: false
      allowSubnets: []
      vlan: test-vlan
      enableEcmp: false
    1. Ссылка на VLAN.

    Создание подсети в сети Kube-OVN Underlay через веб-консоль

    NOTE

    Платформа также преднастроила подсеть join для связи между узлами и Pods в режиме Overlay. Эта подсеть не используется в режиме Underlay, поэтому важно избегать конфликтов IP-сегментов между join и другими подсетями.

    Процедура:

    1. Перейдите в Administrator.

    2. В левой навигационной панели выберите Network Management > Subnet.

    3. Нажмите Create Subnet.

    4. Настройте параметры согласно следующим инструкциям.

      ПараметрОписание
      VLANVLAN, к которой принадлежит подсеть.
      SubnetПосле назначения подсети проекту или пространству имён IP из физической подсети будут случайным образом выделяться для использования Pods.
      GatewayФизический шлюз в указанной подсети.
      Reserved IPУказанные зарезервированные IP не будут автоматически выделяться. Например, могут использоваться как фиксированные IP вычислительных компонентов.
    5. Нажмите Confirm.

    6. На странице с деталями подсети выберите Action > Assign Project / Namespace.

    7. Завершите настройку и нажмите Assign.

    Создание подсети в сети Kube-OVN Underlay через CLI

    kubectl apply -f test-underlay-network.yaml

    Связанные операции

    Если в кластере существуют подсети как Underlay, так и Overlay, можно при необходимости настроить Автоматическую взаимосвязь между подсетями Underlay и Overlay.

    Управление подсетями

    Обновление шлюза через веб-консоль

    Включает изменение метода исходящего трафика, узлов шлюза и конфигурации NAT.

    1. Перейдите в Administrator.

    2. В левой панели выберите Network Management > Subnets.

    3. Нажмите на имя подсети.

    4. Выберите Action > Update Gateway.

    5. Обновите параметры; подробности смотрите в Описание параметров.

    6. Нажмите OK.

    Обновление шлюза через CLI

    kubectl patch subnet test-overlay-subnet --type=json -p='[
      {"op": "replace", "path": "/spec/gatewayType", "value": "centralized"},
      {"op": "replace", "path": "/spec/gatewayNode", "value": "192.168.66.210"},
      {"op": "replace", "path": "/spec/natOutgoing", "value": true},
      {"op": "replace", "path": "/spec/enableEcmp", "value": true}
    ]'

    Обновление зарезервированных IP через веб-консоль

    IP шлюза нельзя удалить из зарезервированных, остальные зарезервированные IP можно редактировать, удалять или добавлять.

    1. Перейдите в Administrator.

    2. В левой панели выберите Network Management > Subnets.

    3. Нажмите на имя подсети.

    4. Выберите Action > Update Reserved IP.

    5. После внесения изменений нажмите Update.

    Обновление зарезервированных IP через CLI

    kubectl patch subnet test-overlay-subnet --type=json -p='[
      {
        "op": "replace",
        "path": "/spec/excludeIps",
        "value": ["10.1.0.1", "10.1.1.2", "10.1.1.4"]
      }
    ]'

    Назначение проектов через веб-консоль

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

    1. Перейдите в Administrator.

    2. В левой панели выберите Network Management > Subnets.

    3. Нажмите на имя подсети.

    4. Выберите Action > Assign Project.

    5. После добавления или удаления проектов нажмите Assign.

    Назначение проектов через CLI

    kubectl patch subnet test-overlay-subnet --type=json -p='[
      {
        "op": "replace",
        "path": "/spec/namespaceSelectors",
        "value": [
          {
            "matchLabels": {
              "cpaas.io/project": "cong"
            }
          }
        ]
      }
    ]'

    Назначение пространств имён через веб-консоль

    Назначение подсетей конкретным пространствам имён позволяет добиться более тонкой сетевой изоляции.

    Примечание: процесс назначения приведёт к перестройке шлюза, и исходящие пакеты будут отброшены! Пожалуйста, убедитесь, что в данный момент нет бизнес-приложений, обращающихся к внешним кластерам.

    1. Перейдите в Administrator.

    2. В левой панели выберите Network Management > Subnets.

    3. Нажмите на имя подсети.

    4. Выберите Action > Assign Namespace.

    5. После добавления или удаления пространств имён нажмите Assign.

    Назначение пространств имён через CLI

    kubectl patch subnet test-overlay-subnet --type=json -p='[
      {
        "op": "replace",
        "path": "/spec/namespaces",
        "value": ["cert-manager"]
      }
    ]'

    Расширение подсетей через веб-консоль

    Когда диапазон зарезервированных IP подсети достигает предела использования или близок к исчерпанию, его можно расширить на основе исходного диапазона подсети без влияния на нормальную работу существующих сервисов.

    1. Перейдите в Administrator.

    2. В левой панели выберите Network Management > Subnets.

    3. Нажмите на имя подсети.

    4. Выберите Action > Expand Subnet.

    5. Завершите настройку и нажмите Update.

    Расширение подсетей через CLI

    kubectl patch subnet test-overlay-subnet --type=json -p='[
      {
        "op": "replace",
        "path": "/spec/cidrBlock",
        "value": "10.1.0.0/22"
      }
    ]'

    Управление сетями Calico

    Поддерживается назначение проектов и пространств имён; подробности смотрите в разделах назначение проектов и назначение пространств имён.

    Удаление подсети через веб-консоль

    NOTE
    • При удалении подсети, если контейнерные группы всё ещё используют IP из этой подсети, они смогут продолжать работу с теми же IP, но не смогут обмениваться сетевым трафиком. Контейнерные группы можно пересоздать для использования IP из подсети по умолчанию или назначить новое подсети пространству имён, в котором они находятся.

    • Подсеть по умолчанию удалить нельзя.

    1. Перейдите в Administrator.

    2. В левой навигационной панели выберите Network Management > Subnets.

    3. Нажмите ⋮ > Delete и подтвердите удаление.

    Удаление подсети через CLI

    kubectl delete subnet test-overlay-subnet