Принципы работы нескольких сетей
Принципы работы нескольких сетей
Платформа Боцман позволяет использовать аддон CNI Multus для объединения плагинов CNI в цепочки. Можно определить дополнительную сеть на основе доступных плагинов CNI и подключить к ней один или несколько подов. В зависимости от потребностей, можно определить несколько дополнительных сетей.
Управлять жизненным циклом дополнительной сети в можно с помощью CRD NetworkAttachmentDefinition, который поставляется
с аддоном Multus.
Структура манифеста NetworkAttachmentDefinition представлена ниже:
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: <nad-name>
spec:
# ниже в поле config указан json-конфиг CNI плагина
config: |-
{
...
}
Использование в поде:
Использование в поде
apiVersion: v1
kind: Pod
metadata:
name: app
annotations:
k8s.v1.cni.cncf.io/networks: <nad-name>
spec: <pod-spec>
Примеры конфигураций CNI плагинов
Поддерживаются следующие типы сетей:
Bridge
{
"cniVersion": "0.3.1",
"name": "bridge-net",
"type": "bridge",
"isGateway": true,
"vlan": 2,
"ipam": {
"type": "dhcp"
}
}
Таблица параметров CNI Bridge
| Поле | Тип | Описание |
|---|---|---|
| cniVersion | string | Версия спецификации CNI. Требуется значение 0.3.1. |
| name | string | Значение параметра name, которое вы указали ранее в конфигурации CNO. |
| type | string | Имя настраиваемого CNI-плагина: bridge. |
| ipam | object | Объект конфигурации для IPAM CNI-плагина. Плагин управляет назначением IP-адресов для определения подключения. |
| bridge | string | Необязательно: укажите имя виртуального моста. Если интерфейс моста не существует на хосте, он будет создан. Значение по умолчанию — cni0. |
| ipMasq | boolean | Необязательно: установите true, чтобы включить маскарадинг IP для трафика, покидающего виртуальную сеть. Исходный IP-адрес для всего трафика перезаписывается на IP-адрес моста. Если у моста нет IP-адреса, этот параметр не имеет эффекта. По умолчанию — false. |
| isGateway | boolean | Необязательно: установите true, чтобы назначить IP-адрес мосту. По умолчанию — false. |
| isDefaultGateway | boolean | Необязательно: установите true, чтобы настроить мост как шлюз по умолчанию для виртуальной сети. По умолчанию — false. Если установлено true, параметр isGateway также автоматически принимает значение true. |
| forceAddress | boolean | Необязательно: установите true, чтобы разрешить назначение ранее назначенного IP-адреса виртуальному мосту. Если установлено false, при попытке назначить адрес из перекрывающихся подсетей возникнет ошибка. По умолчанию — false. |
| hairpinMode | boolean | Необязательно: установите true, чтобы разрешить мосту отправлять Ethernet-фрейм обратно через тот же порт, через который он был получен (режим «reflective relay»). По умолчанию — false. |
| promiscMode | boolean | Необязательно: установите true, чтобы включить неразборчивый режим (promiscuous mode) на мосту. По умолчанию — false. |
| vlan | string | Необязательно: укажите тег виртуальной локальной сети (VLAN) в виде целого числа. По умолчанию тег VLAN не назначается. |
| preserveDefaultVlan | string | Необязательно: указывает, должен ли сохраняться VLAN по умолчанию на стороне veth, подключенной к мосту. По умолчанию — true. |
| mtu | integer | Необязательно: установите максимальную единицу передачи (MTU). По умолчанию значение устанавливается ядром автоматически. |
| enabledad | boolean | Необязательно: включает обнаружение дубликатов адресов (DAD) для veth на стороне контейнера. По умолчанию — false. |
| macspoofchk | boolean | Необязательно: включает проверку подмены MAC-адреса, ограничивая исходящий трафик из контейнера MAC-адресом интерфейса. По умолчанию — false. |
Host Device
Заметка
Объявите сетевое устройство указав один и только один из следующих параметров: device, hwaddr, kernelpath,
pciBusID
Таблица параметров CNI host-device
| Поле | Тип | Описание |
|---|---|---|
| cniVersion | string | Версия спецификации CNI. Требуется значение 0.3.1. |
| name | string | Значение параметра name, которое вы указали ранее в конфигурации CNO. |
| type | string | Имя настраиваемого CNI-плагина: host-device. |
| device | string | Необязательно: имя устройства, например bond0. |
| hwaddr | string | Необязательно: аппаратный MAC-адрес устройства. |
| kernelpath | string | Необязательно: путь к устройству в ядре Linux, например /sys/devices/pci0000:00/0000:00:1f.6. |
| pciBusID | string | Необязательно: PCI-адрес сетевого устройства, например 0000:00:1f.6. |
VLAN
{
"name": "vlan-net",
"cniVersion": "0.3.1",
"type": "vlan",
"master": "eth0",
"mtu": 1500,
"vlanId": 5,
"linkInContainer": false,
"ipam": {
"type": "host-local",
"subnet": "10.1.1.0/24"
},
"dns": {
"nameservers": [
"10.1.1.1",
"8.8.8.8"
]
}
}
Таблица параметров CNI VLAN
| Поле | Тип | Описание |
|---|---|---|
| cniVersion | string | Версия спецификации CNI. Требуется значение 0.3.1. |
| name | string | Значение параметра name, которое вы указали ранее в конфигурации CNO. |
| type | string | Имя настраиваемого CNI-плагина: vlan. |
| master | string | Ethernet-интерфейс, который будет связан с сетевым подключением. Если не указан, используется интерфейс сетевого маршрута по умолчанию. |
| vlanId | integer | Идентификатор (ID) виртуальной локальной сети (VLAN). |
| ipam | object | Объект конфигурации для IPAM CNI-плагина. Плагин управляет назначением IP-адресов для определения подключения. |
| mtu | integer | Необязательно: установите максимальную единицу передачи (MTU). По умолчанию значение устанавливается ядром автоматически. |
| dns | integer | Необязательно: информация DNS, например, приоритетный список серверов имен DNS. |
| linkInContainer | boolean | Необязательно: указывает, находится ли основной интерфейс (master) в сетевом пространстве имен контейнера или в основном сетевом пространстве имен. |
IPVLAN
Внимание
Один и тот же основной интерфейс нельзя одновременно настраивать для использования и macvlan, и ipvlan.
{
"cniVersion": "0.3.1",
"name": "ipvlan-net",
"type": "ipvlan",
"master": "eth1",
"mode": "l3",
"ipam": {
"type": "static",
"addresses": [
{
"address": "192.168.10.10/24"
}
]
}
}
Таблица параметров CNI ipvlan
| Поле | Тип | Описание |
|---|---|---|
| cniVersion | string | Версия спецификации CNI. Требуется значение 0.3.1. |
| name | string | Значение параметра name, которое вы указали ранее в конфигурации CNO. |
| type | string | Имя настраиваемого CNI-плагина: ipvlan. |
| ipam | object | Объект конфигурации для IPAM CNI-плагина. Плагин управляет назначением IP-адресов. Обязательно, если плагин не используется в цепочке. |
| mode | string | Необязательно: режим работы виртуальной сети. Допустимые значения: l2, l3 или l3s. По умолчанию — l2. |
| master | string | Необязательно: Ethernet-интерфейс, связанный с сетевым подключением. Если не указан, используется интерфейс сетевого маршрута по умолчанию. |
| mtu | integer | Необязательно: установите максимальную единицу передачи (MTU). По умолчанию значение устанавливается ядром автоматически. |
MACVLAN
{
"cniVersion": "0.3.1",
"name": "macvlan-net",
"type": "macvlan",
"master": "eth1",
"mode": "bridge",
"ipam": {
"type": "dhcp"
}
}
Таблица параметров CNI macvlan
| Поле | Тип | Описание |
|---|---|---|
| cniVersion | string | Версия спецификации CNI. Требуется значение 0.3.1. |
| name | string | Значение параметра name, которое вы указали ранее в конфигурации CNO. |
| type | string | Имя настраиваемого CNI-плагина: macvlan. |
| ipam | object | Объект конфигурации для IPAM CNI-плагина. Плагин управляет назначением IP-адресов для определения подключения. |
| mode | string | Необязательно: настраивает видимость трафика в виртуальной сети. Должен быть bridge, passthru, private или vepa. Если значение не указано, по умолчанию используется bridge. |
| master | string | Необязательно: сетевой интерфейс хоста для связи с вновь созданным интерфейсом macvlan. Если значение не указано, используется интерфейс маршрута по умолчанию. |
| mtu | integer | Необязательно: максимальная единица передачи (MTU). По умолчанию значение устанавливается ядром автоматически. |