Рейтинг:0

Kubernetes CNI подключает любой логический маршрутизатор между разными MACVLAN (разными подсетями), возможно ли это?

флаг in

в настоящее время я изучил Multus CNI для своего экспериментального проекта по переносу виртуальной машины или некоторых приложений, которые нам не нужны (нельзя изменить исходный код) по IP-адресу, поэтому у меня было ограничение, чтобы оспорить это. нужно использовать фиксированный IP в настоящее время мне удалось использовать Multus с Pod, у которого есть вторичный IP-адрес через MacVLAN через Node уже в моем Kubernetes. у меня было две подсети 192.168.15.0/24 (общедоступная зона) и 192.168.16.0/24 (частная зона) для каждого IP-адреса, который находится в их зоне (подсети), он может успешно подключаться между узлами Kubernetes, например Worker A содержит pod 192.168.15.10 может пинговать Рабочий B содержит модуль 192.168.15.11 потому что они в одной подсети (один и тот же MACVLAN)

** Но мне нужно, чтобы модуль с разными MACVLAN (разными подсетями) мог соединяться вместе ** вот так Worker A содержит pod 192.168.15.10 может пинговать Рабочий B содержит модуль 192.168.16.10 (Общедоступная подсеть подключается к зоне защищенной подсети)

В обычной концепции сети нам потребуется Маршрутизатор правильно ? Потому что в настоящее время моя топология будет выглядеть примерно так, как на этом рисунке. кредит: https://www.practicalnetworking.net/stand-alone/routing-between-vlans/

Пример изображения логического коммутатора при использовании VLAN

Как мы видим на картинке, в настоящее время у нас другая подсеть, и у нее нет промежуточного кабельного канала между коммутатором, поэтому он не может маршрутизировать/подключаться. Итак, как я могу создать логический маршрутизатор, чтобы добиться успеха в этой попытке? Является ли это возможным ? Или я ввожу в заблуждение какую-либо концепцию дизайна Networking/Kubernetes?

На этой картинке вы увидите, что мой стручок, который прикрепляется к Интерфейс общедоступной подсети уже могут пинговать/подключаться друг к другу через Kubernetes Node из-за маквлан но если я использую мост, потребуется, чтобы они оба находились на одном хосте.

Изображение моего модуля и сетевого интерфейса

Я хочу попробовать что-то подобное, потому что я хочу смоделировать топологию сети, аналогичную локальной виртуальной машине, чтобы я мог автоматически выполнять миграцию виртуальной машины в Kubernetes без какого-либо изменения кода. (В настоящее время я также изучил KubeVirt) Но в моем контексте у меня нет корпоративного решения, такого как ESXI или что-то подобное, просто снимок виртуальной машины и загрузка в Kubernetes только с помощью KubeVirt, поэтому топология сети является основой этого эксперимента по миграции.

Большое спасибо за ответ на любую идею / помощь заранее :)

Вот мой пример Пример моего NetworkAttachmentDefinition

версия API: k8s.cni.cncf.io/v1
тип: NetworkAttachmentDefinition
метаданные:
  имя: macvlan-public
  пространство имен: устаревшая компания
спецификация:
  конфиг: >-
    { 
      "cniVersion": "0.3.1", 
      "тип": "маквлан", 
      "мост": "macvlan-публичная-зона", 
      "айпам": {
        "тип": "локальный хост", 
        "подсеть": "192.168.15.0/24", 
        "rangeStart": "192.168.15.10", 
        "rangeEnd": "192.168.15.200" 
        } 
    }
---
версия API: k8s.cni.cncf.io/v1
тип: NetworkAttachmentDefinition
метаданные:
  имя: macvlan-secure
  пространство имен: устаревшая компания
спецификация:
  конфиг: >-
    { 
      "cniVersion": "0.3.1", 
      "тип": "маквлан", 
      "мост": "безопасная зона macvlan", 
      "айпам": {
        "тип": "локальный хост", 
        "подсеть": "192.168.16.0/24", 
        "rangeStart": "192.168.16.10", 
        "rangeEnd": "192.168.16.200" 
        } 
    }
---

Пример Pod с вторичным сетевым интерфейсом Multus

вид: развертывание
apiVersion: приложения/v1
метаданные:
  имя: мост-общественность
  этикетки:
    приложение: мост-общественное
спецификация:
  реплики: 1
  селектор:
    метки соответствия:
      приложение: мост-общественное
  шаблон:
    метаданные:
      этикетки:
        приложение: мост-общественное
      аннотации:
        k8s.v1.cni.cncf.io/networks: '[
                { "имя": "macvlan-public"}]'
    спецификация:
      селектор узла:
        kubernetes.io/имя хоста: 10.111.147.164 
      serviceAccountName: по умолчанию
      контейнеры:
        - название: мост-общественность
          изображение: "quay.io/linxianer12/nettool:0.0.4"
          imagePullPolicy: всегда
          безопасностьКонтекст:
            возможности:
              Добавлять:
                - "NET_RAW"
      политика перезапуска: всегда
      прекращениеGracePeriodSeconds: 30
      dnsPolicy: Кластерфирст
---
вид: развертывание
apiVersion: приложения/v1
метаданные:
  имя: безопасный мост
  этикетки:
    приложение: защищенный мост
спецификация:
  реплики: 1
  селектор:
    метки соответствия:
      приложение: защищенный мост
  шаблон:
    метаданные:
      этикетки:
        приложение: защищенный мост
      аннотации:
        k8s.v1.cni.cncf.io/networks: '[
                { "имя": "macvlan-secure"}]'
    спецификация:
      serviceAccountName: по умолчанию
      контейнеры:
        - название: безопасный мост
          изображение: "quay.io/linxianer12/nettool:0.0.4"
          imagePullPolicy: всегда
          безопасностьКонтекст:
            возможности:
              Добавлять:
                - "NET_RAW"

Ответить или комментировать

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