1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/WeBank-Dockin-CNI

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.zh-CN.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 19:17 f790243

Dockin CNI — Dockin Container Network Interface

Dockin — это безопасная система управления операциями, которая оптимизирует выполнение команд, поддерживает управление правами доступа и позволяет планировать операции.

Дополнительные компоненты Dockin доступны по ссылке: https://github.com/WeBankFinTech/Dockin

Dockin cni

dockin cni взаимодействует с модулем управления ресурсами (RM) для управления сетью контейнеров. В настоящее время поддерживается:

  • создание сети с одной сетевой картой;
  • создание сети с несколькими сетевыми картами;
  • поддержка только плагина ipam dockin;
  • режим моста.

Необходимые компоненты для запуска dockin cni:

  • dockin-cni — основной плагин, который вызывает мост для управления сетью и взаимодействует с RM;
  • dockin-ipam — используется для назначения IP-адресов;
  • bridge — мост используется для управления сетью.

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

1. Конфигурация cni

Конфигурационный файл cni должен быть помещён в /etc/cni/net.d (путь конфигурации по умолчанию для kubelet). Если путь перенаправлен, поместите конфигурационный файл в используемый путь kubelet.

Имя файла конфигурации может быть таким, как 00-dockin-cni.json.

Пример содержимого файла конфигурации:

{
    "cniVersion": "0.2.0",
    "name": "dockin-cni",
    "type": "dockin-cni",
    "confDir": "/etc/cni/dockin/net.d",
    "binDir": "/opt/cni/bin",
    "logFile": "/data/kubernetes/dockin-cni.log",
    "logLevel": "debug",
    "backend": "http://localhost:10002/rmController/getPodMultiNetwork"
}

Описание параметров:

  • cniVersion — поддерживаемая версия cni;
  • name — имя сетевого плагина;
  • type — тип, исполняемый двоичный файл, здесь обязательно использовать 'dockin-cni';
  • confDir — каталог, в котором находится сетевой конфигурационный файл;
  • binDir — каталог двоичных файлов моста;
  • logFile — путь к файлу журнала;
  • logLevel — уровень журнала;
  • backend — адрес веб-перехватчика, здесь используется адрес dockin-RM в качестве примера.

2. Настройка сети

Здесь также необходимо создать конфигурационные файлы, связанные с сетью.

Шаг 1: Использование веб-сервера для получения информации о типе сети

Во-первых, вам нужен веб-сервер, предоставляющий веб-хуки для получения сетевой информации о модулях (включая одну или две сетевые карты), этот веб-сервис должен реализовывать API с URL-адресом podName. Например:

<IP>:<port>/<URL>?podName=

В этом случае вы можете использовать Dockin-RM в качестве примера. Вы можете использовать команду curl для доступа к следующему API rm:

curl 127.0.0.1:10002/rmController/getPodMultiNetwork?podName=<your_pod_name>

Если ошибок не возникает, вы получите ответ в следующем формате:

{
    "code": 0,
    "reqId": "1234",
    "message": "success",
    "data": [
        {
            "type": "test",
            "podIp": "192.168.1.2",
            "subnetMask": "255.255.255.0",
            "gateway": "192.168.1.1",
            "ifName": "eth0",
            "master": true
        },
        {
            "type": "dockin",
            "podIp": "192.168.2.2",
            "subnetMask": "255.255.255.0",
            "gateway": "192.168.1.1",
            "ifName": "net0",
            "master": false
        }
    ]
}

Где:

  • code — код возврата, 0 означает успех, остальные означают неудачу;
  • message — информация о возврате, включая успешную информацию и информацию о неудаче;
  • data — данные о сетевой информации.
    • type — сетевой тип;
    • podIp — IP-адрес, назначенный модулю;
    • subnetMask — маска подсети;
    • gateway — шлюз;
    • ifName — имя сетевой карты, которое можно просмотреть с помощью команд ifconfig и ip a;
    • master — используется для обозначения того, является ли это основной сетью, при использовании kubectl для отображения информации будет отображаться эта сетевая информация, и в одном модуле может быть только одна основная сеть.

Здесь нас интересует поле type. В этом примере есть два типа: test и dockin.

Шаг 2: Создание файла конфигурации сети

Управление сетью осуществляется через мост, дополнительные сведения см. по следующей ссылке:

https://github.com/containernetworking/plugins/tree/master/plugins/main/bridge

Информация о сети хранится в файле json в каталоге confDir (в конфигурации cni), а затем передаётся kubelet для создания сети.

{
  "cniVersion": "0.2.0",
  "name": "dockin",
  "type": "bridge",
  "bridge": "br1"
}
  • cniVersion — версия cni, поддерживаемая этим cni;
  • name — название сети, например, такое же, как в rm;
  • type — только через мост можно управлять сетью;
  • bridge — имя моста, разные имена мостов могут быть назначены для разных сетей в среде с несколькими сетями.

Выше приведено краткое введение в конфигурацию, теперь давайте создадим файл конфигурации сети.

  • Сначала создайте каталог конфигурации: Путь каталога можно найти из пути файла конфигурации cni confDir.
mkdir -p /etc/cni/dockin/net.d
  • Затем создайте файл конфигурации В приведённом выше примере нам нужно создать два файла конфигурации сети:
  1. Создайте файл конфигурации для типа test:
touch /etc/cni/dockin/net.d/test.json

Содержимое файла конфигурации:

{
  "cniVersion": "0.2.0",
  "name": "test", // type
  "type": "bridge",
  "bridge": "br0"
}
  1. Создайте файл конфигурации для типа dockin:
touch /etc/cni/dockin/net.d/dockin.json

Содержимое файла конфигурации:

{
  "cniVersion": "0.2.0",
  "name": "dockin", // type
  "type": "bridge",
  "bridge": "br0"
}

3. Поместите исполняемые файлы в каталог binDir

Вы можете использовать команду make для компиляции dockin-cni и dockin-ipam, а затем поместить два исполняемых файла в путь, на который указывает каталог bin в конфигурации cni. Обычно путь bin cni — /opt/cni/bin. ### Описание сетевой конфигурации

  • type (string, обязательно): «static».
  • addresses (array, опционально): массив объектов с IP-адресами:
    • address (string, обязательно): IP-адрес в формате CIDR.
    • gateway (string, опционально): шлюз для выполнения операций в подсети.
  • routes (string, опционально): список маршрутов, которые необходимо загрузить в пространство имён контейнера. Каждая запись о маршруте представляет собой словарь с полями dst и gw (опционально). Если поле gw задано, будет использоваться значение, соответствующее тегу gateway.
  • dns (string, опционально): таблица соответствия, состоящая из полей nameservers, domain и search.

Поддерживаемые параметры

Поддерживаются следующие параметры CNI CNI_ARGS:

  • IP: необходимо указать один IP-адрес в формате CIDR, разделяя адреса запятыми.
  • GATEWAY: необходимо задать адрес шлюза.

(Пример: CNI_ARGS="IP=192.168.1.1/24;GATEWAY=192.168.1.254")

Также плагин поддерживает параметры возможностей capability argument.

  • ips: передача нескольких IP-адресов в интерфейс CNI.

Поддерживаются также следующие предопределённые параметры args conventions:

  • ips (массив строк): используется для попытки назначения пользовательского списка IP-адресов (например, '192.168.1.1/24').

Обратите внимание: если используются несколько параметров одновременно, будет выбран только один из них в соответствии со следующим приоритетом:

  1. Параметры возможностей capability argument.
  2. Предопределённые параметры args conventions.
  3. Параметры CNI CNI_ARGS.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/WeBank-Dockin-CNI.git
git@api.gitlife.ru:oschina-mirror/WeBank-Dockin-CNI.git
oschina-mirror
WeBank-Dockin-CNI
WeBank-Dockin-CNI
develop