Поделиться через


Полные развертывания 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 параметр как или EthernetWi-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 конфигурации, как описано в этом разделе.

    Снимок экрана: диспетчер коммутаторов Hyper-V.

  • 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 измените значение NetworkPlugincalico.
  • Помимо предыдущих параметров, можно задать следующие параметры в соответствии с конфигурацией развертывания, как описано здесь: LinuxNode.CpuCount, LinuxNode.MemoryInMBLinuxNode.DataSizeInGBLinuxNode.Ip4AddressWindowsNode.CpuCountWindowsNode.MemoryInMBWindowsNode.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 выглядит следующим образом:

Схема, показывающая все запущенные модули pod.

Шаг 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"
          }
      }
  ]
}

Следующие шаги