в настоящее время я изучил 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"