Полные развертывания Kubernetes в AKS Edge Essentials
Внимание
Полное развертывание на нескольких компьютерах в настоящее время является экспериментальной функцией. Мы активно работаем над этой функцией.
Кластер AKS Edge Essentials можно настроить для запуска на нескольких компьютерах для поддержки архитектуры распределенных микрослужб. AKS Edge Essentials предназначен для статических конфигураций и не включает динамическое управление созданием и удалением виртуальных машин или жизненным циклом кластера, в отличие от AKS в облаке или AKS в локальной среде Azure. AKS Edge Essentials имеет только одну виртуальную машину Linux на каждом компьютере, а также виртуальную машину Windows при необходимости. Каждая виртуальная машина имеет статическое выделение ОЗУ, хранилища и физических ядер ЦП, назначенных во время установки. В развертывании с несколькими узлами один из компьютеров является основным компьютером с узлом управления Kubernetes, а другие — вторичными компьютерами с рабочими узлами. В этом сценарии развертывания мы настраиваем кластер K8S с помощью внешнего коммутатора. С помощью этой конфигурации можно запустить kubectl
с другого компьютера в сети, оценить производительность рабочей нагрузки на внешнем коммутаторе и т. д.
Необходимые компоненты
Настройте компьютер, как описано в статье "Настройка компьютера ".
Шаг 1. Полные параметры конфигурации развертывания Kubernetes
Параметры, необходимые для создания масштабируемого кластера, можно создать с помощью следующей команды:
New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null
Эта команда создает файл конфигурации с именем aksedge-config.json, который включает конфигурацию, необходимую для создания масштабируемого кластера с узлом Linux. Файл создается в текущем рабочем каталоге. Подробные описания параметров конфигурации (например, параметров прокси-сервера) см . в конфигурации JSON развертывания.
Дополнительные варианты создания файла конфигурации см. в следующих примерах.
Основные параметры, которые следует отметить для масштабируемого развертывания Kubernetes:
Сведения о внешнем коммутаторе: полное развертывание использует внешний коммутатор для включения связи между узлами. Необходимо указать
MachineConfigType.NetworkConnection.AdapterName
параметр как илиEthernet
Wi-Fi
:# get the list of available adapters in the machine Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
Если вы создали внешний коммутатор в Hyper-V, вы можете указать сведения о vswitch в файле конфигурации. Если вы не создаете внешний коммутатор в диспетчере Hyper-V и выполняете
New-AksEdgeDeployment
команду, AKS Edge Essentials автоматически создает внешний коммутатор с именемaksedgesw-ext
и использует его для развертывания.Примечание.
В этом выпуске существует известная проблема с автоматическим созданием внешнего коммутатора с
New-AksEdgeDeployment
помощью команды, если вы используете адаптер Wi-Fi для коммутатора. В этом случае сначала создайте внешний коммутатор с помощью диспетчера Hyper-V — Virtual Switch Manager, сопоставите коммутатор с адаптером Wi-Fi, а затем укажите сведения о переключении в ФОРМАТЕ JSON конфигурации, как описано в этом разделе.IP-адреса. Вы должны выделить бесплатные IP-адреса из сети для служб Управления, служб Kubernetes и узлов (виртуальных машин). Дополнительные сведения см. в обзоре сети AKS Edge Essentials. Например, в локальной сети с диапазоном IP-адресов 192.168.1.0/24 может быть 1,151 и выше за пределами области DHCP, поэтому, скорее всего, будет бесплатным. AKS Edge Essentials в настоящее время поддерживает только IPv4-адреса. В идеале вы знаете, какие свободные IP-адреса можно использовать; однако можно использовать скрипт AksEdge-ListUsedIPv4s из репозитория GitHub для просмотра IP-адресов, которые в настоящее время используются, и избежать использования этих IP-адресов в конфигурации. Следующие параметры необходимо указать в разделе
Network
файла конфигурации:ControlPlaneEndpointIp
,Ip4GatewayAddress
,Ip4PrefixLength
,ServiceIPRangeSize
,ServiceIPRangeStart
иDnsServers
.
Внимание
Kubernetes pod cidr
предназначен 10.42.0.0/16
для K3s и 10.244.0.0/24
для K8s. Kubernetes service cidr
предназначен 10.43.0.0/16
для K3s и 10.96.0.0/12
для K8s.
- Значение
Network.NetworkPlugin
по умолчанию —flannel
. Flannel — это CNI по умолчанию для кластера K3S. В кластере K8S измените значениеNetworkPlugin
calico
. - Помимо предыдущих параметров, можно задать следующие параметры в соответствии с конфигурацией развертывания, как описано здесь:
LinuxNode.CpuCount
,LinuxNode.MemoryInMB
LinuxNode.DataSizeInGB
LinuxNode.Ip4Address
WindowsNode.CpuCount
WindowsNode.MemoryInMB
WindowsNode.Ip4Address
,Init.ServiceIPRangeSize
и .Network.InternetDisabled
Шаг 2. Проверка файла конфигурации
После обновления файла aksedge-config.json запустите средство AksEdgePrompt. Это средство открывает окно PowerShell с повышенными привилегиями с загруженными модулями. Затем выполните следующую команду, чтобы проверить параметры сети с помощью командлета Test-AksEdgeNetworkParameters
:
Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json
Шаг 3. Создание полного кластера развертывания
Если Test-AksEdgeNetworkParameters
возвращается true
, вы готовы создать развертывание. Развертывание можно создать с помощью командлета New-AksEdgeDeployment
:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
Командлет New-AksEdgeDeployment
автоматически извлекает файл kubeconfig.
Шаг 4. Проверка развертывания
kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide
Снимок экрана кластера Kubernetes выглядит следующим образом:
Шаг 5. Добавление рабочего узла Windows (необязательно)
Внимание
Рабочие узлы Windows — это экспериментальная функция в этом выпуске. Мы активно работаем над этой функцией.
Если вы хотите добавить узел Windows на существующий компьютер Linux, можно выполнить следующее:
New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null
Вы также можете указать такие параметры, как CpuCount
и (или) MemoryInMB
для виртуальной машины Windows.
Вы можете использовать созданный файл конфигурации и выполнить следующую команду, чтобы добавить узел Windows.
Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json
Пример конфигурации для различных вариантов развертывания
Выделение ресурсов узлам
Чтобы подключиться к Arc и развернуть приложения с помощью GitOps, выделите четыре ЦП или более для LinuxNode.CpuCount
(вычислительной мощности), 4 ГБ или более для LinuxNode.MemoryinMB
(ОЗУ) и назначьте число больше 0 ServiceIpRangeSize
. Здесь мы выделяем 10 IP-адресов для служб Kubernetes:
{
"Init": {
"ServiceIpRangeSize": 10,
"ServiceIPRangeStart": "192.168.1.151"
},
"Network": {
"ControlPlaneEndpointIp": "192.168.1.191",
"NetworkPlugin": "calico",
"Ip4GatewayAddress": "192.168.1.1",
"Ip4PrefixLength": 24,
"DnsServers": ["192.168.1.1"]
},
"Machines": [
{
"NetworkConnection": {
"AdapterName": "Ethernet"
},
"LinuxNode": {
"CpuCount": 4,
"MemoryInMB": 4096,
"DataSizeInGB": 20,
"Ip4Address": "192.168.1.171"
}
}
]
}
Создание узлов Linux и Windows
Чтобы запустить плоскость управления Linux и рабочий узел Windows на компьютере, создайте файл конфигурации с помощью следующей команды:
New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null
Создайте развертывание с помощью команды:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
{
"Machines": [
{
"NetworkConnection": {
"AdapterName": "Ethernet"
},
"LinuxNode": {
"CpuCount": 4,
"MemoryInMB": 4096,
"DataSizeInGB": 20,
"Ip4Address": "192.168.1.171"
},
"WindowsNode": {
"CpuCount": 2,
"MemoryInMB": 4096,
"Ip4Address": "192.168.1.172"
}
}
]
}