Развертывание подключаемого модуля сетевого интерфейса контейнера виртуальной сети Azure
Подключаемый модуль сетевого интерфейса контейнера (CNI) виртуальной сети Azure устанавливается на виртуальной машине Azure и предоставляет возможности виртуальной сети для модулей pod Kubernetes и контейнеров Docker. Дополнительные сведения о подключаемом модуле см. в разделе Включение контейнеров для использования возможностей виртуальной сети Azure. Кроме того, подключаемый модуль можно использовать со службой Azure Kubernetes (AKS), выбрав параметр Расширенное сетевое подключение, который автоматически размещает контейнеры AKS в виртуальной сети.
Развертывание подключаемого модуля для кластера Kubernetes службы контейнеров Azure
Модуль службы контейнеров Azure развертывает кластер Kubernetes с помощью шаблона Azure Resource Manager. Конфигурация кластера указана в файле JSON, который передается в средство при создании шаблона. Полный список поддерживаемых параметров кластера и их описание см. в разделе Обработчик службы контейнеров Azure Microsoft — определения кластера. Подключаемый модуль — это подключаемый модуль сети по умолчанию для кластеров, созданных с помощью подсистемы службы контейнеров Azure. Следующие параметры конфигурации сети важны при настройке подключаемого модуля:
Параметр | Description |
---|---|
firstConsecutiveStaticIP | IP-адрес, выделенный главному узлу. Этот параметр является обязательным. |
clusterSubnet в kubernetesConfig | CIDR подсети виртуальной сети, где развернут кластер, из которого IP-адреса выделяются для pod |
vnetSubnetId в masterProfile | Указывает идентификатор ресурса Azure Resource Manager для подсети, где будет развертываться кластер |
vnetCidr | CIDR виртуальной сети, где развернут кластер |
max-Pods в kubeletConfig | Максимальное количество pod на каждой виртуальной машине агента. Для подключаемого модуля значение по умолчанию — 30. Можно указать количество до 250 |
Пример конфигурации
Следующий пример json приведен для кластера со следующими свойствами:
Один основной узел и два узла агента
Развернутая в подсети с именем KubeClusterSubnet (10.0.0.0/20) с основными узлами и узлами агента, находящимися в нем.
{
"apiVersion": "vlabs",
"properties": {
"orchestratorProfile": {
"orchestratorType": "Kubernetes",
"kubernetesConfig": {
"clusterSubnet": "10.0.0.0/20" --> Subnet allocated for the cluster
}
},
"masterProfile": {
"count": 1,
"dnsPrefix": "ACSKubeMaster",
"vmSize": "Standard_A2",
"vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<Vnet Name>/subnets/KubeClusterSubnet",
"firstConsecutiveStaticIP": "10.0.1.50", --> IP address allocated to the Master node
"vnetCidr": "10.0.0.0/16" --> Virtual network address space
},
"agentPoolProfiles": [
{
"name": "k8sagentpoo1",
"count": 2,
"vmSize": "Standard_A2_v2",
"vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<VNet Name>/subnets/KubeClusterSubnet",
"availabilityProfile": "AvailabilitySet"
}
],
"linuxProfile": {
"adminUsername": "KubeServerAdmin",
"ssh": {
"publicKeys": [
{…}
]
}
},
"servicePrincipalProfile": {
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"secret": "azure123"
}
}
}
Развертывание подключаемого модуля для кластера Kubernetes
Выполните следующие действия, чтобы установить подключаемый модуль на каждой виртуальной машине Azure в кластере Kubernetes:
Предварительное размещение пула IP-адресов виртуальной сети на каждой виртуальной машине, из которой IP-адреса назначаются pod. Каждая виртуальная машина Azure имеет основной частный IP-адрес виртуальной сети для каждого сетевого интерфейса. Пул IP-адресов для модулей pod добавляется в качестве дополнительных адресов (ipconfigs) в сетевом интерфейсе виртуальной машины с помощью одного из следующих вариантов:
PowerShell. Назначение нескольких IP-адресов с помощью PowerShell
Портал. Назначение нескольких IP-адресов с помощью портала Azure
Шаблон Resource Manager. Назначение нескольких IP-адресов с помощью шаблонов
Убедитесь, что добавили достаточно IP-адресов для всех модулей pod, которые планируется использовать на виртуальной машине.
Выберите подключаемый модуль для предоставления сетей для кластера, передав Kubelet параметр командной строки
–network-plugin=cni
во время создания кластера. Kubernetes по умолчанию ищет подключаемый модуль и файл конфигурации в каталогах, где они уже установлены.Если вы хотите, чтобы у модулей pod был доступ к Интернету, добавьте следующее правило iptables на виртуальных машинах Linux для предоставления Интернет-трафика через source NAT. В следующем примере указанный диапазон IP-адресов — 10.0.0.0/8.
iptables -t nat -A POSTROUTING -m iprange ! --dst-range 168.63.129.16 -m addrtype ! --dst-type local ! -d 10.0.0.0/8 -j MASQUERADE
Трафик NAT правил, который не предназначен для указанных диапазонов IP-адресов. Предполагается, что весь трафик за пределами предыдущих диапазонов является интернет-трафиком. Вы можете указать диапазон IP-адресов виртуальной сети виртуальной машины, выбрав диапазон одноранговых виртуальных сетей и локальных сетей.
Виртуальные машины Windows автоматически используют source NAT для трафика, направленного за пределы подсети, к которой принадлежит виртуальная машина. Невозможно указать настраиваемые диапазоны IP-адресов.
После выполнения предыдущих шагов модули Pod, которые создаются на виртуальных машинах агента Kubernetes, автоматически назначаются частные IP-адреса из виртуальной сети.
Развертывание подключаемого модуля для контейнеров Docker
Чтобы создать контейнеры Docker, выполните следующую команду:
./docker-run.sh \<container-name\> \<container-namespace\> \<image\>
Контейнеры автоматически начнут получать IP-адреса из выделенного пула. Если вы хотите сбалансировать трафик к контейнерам Docker, они должны находиться за программной подсистемой балансировки нагрузки с пробой подсистемы балансировки нагрузки.
Файл конфигурации сети CNI
Файл конфигурации сети CNI описан в формате JSON. По умолчанию он находится в /etc/cni/net.d
для Linux и c:\cni\netconf
для Windows. Файл указывает конфигурацию подключаемого модуля и отличается для Windows и Linux. Ниже приведен пример файла конфигурации JSON для Linux и объяснения для некоторых ключевых параметров. В файл не требуется вносить изменения:
{
"cniVersion":"0.3.0",
"name":"azure",
"plugins":[
{
"type":"azure-vnet",
"mode":"bridge",
"bridge":"azure0",
"ipam":{
"type":"azure-vnet-ipam"
}
},
{
"type":"portmap",
"capabilities":{
"portMappings":true
},
"snat":true
}
]
}
Объяснение параметров
"cniVersion": подключаемые модули CNI azure виртуальная сеть поддерживают версии 0.3.0 и 0.3.1 спецификации CNI.
"name": имя сети. Это свойство может иметь любое уникальное значение.
"type": имя подключаемого модуля сети. Установлено azure-vnet.
"mode": рабочий режим. Это поле необязательно. Поддерживается только режим bridge. Для получения дополнительных сведений см. раздел о режимах работы.
"bridge": имя моста, который используется для подключения контейнеров к виртуальной сети. Это поле необязательно. Если не указано, подключаемый модуль автоматически выбирает уникальное имя на основе основного индекса интерфейса.
"ipam" - type": имя подключаемого модуля IPAM. Всегда установлено azure-vnet-ipam.
Загрузка и установка подключаемого модуля
Загрузите подключаемый модуль с GitHub. Скачайте последнюю версию для платформы, которую вы используете:
Скопируйте скрипт установки для Linux или Windows на компьютер. Сохраните скрипт в каталог scripts
на компьютере и назовите файл install-cni-plugin.sh
для Linux или install-cni-plugin.ps1
для Windows.
Чтобы установить подключаемый модуль, запустите соответствующий сценарий для своей платформы, указав версию подключаемого модуля, который вы используете. Например, укажите v1.4.20. Для установки Linux укажите соответствующую версию подключаемого модуля CNI, например версии 1.0.1:
scripts/install-cni-plugin.sh [azure-cni-plugin-version] [cni-plugin-version]
scripts\\ install-cni-plugin.ps1 [azure-cni-plugin-version]
Скрипт автоматически установит подключаемый модуль в /opt/cni/bin
для Linux и c:\cni\bin
для Windows. Установленный подключаемый модуль поставляется с простым файлом конфигурации сети, который работает после установки. Его не нужно обновлять. Дополнительные сведения о параметрах в файле см. в разделе Файл конфигурации сети CNI.