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


Полные развертывания Kubernetes в AKS Edge Essentials

Внимание!

Полное развертывание на нескольких компьютерах в настоящее время является экспериментальной функцией. Мы активно работаем над этой функцией.

Вы можете настроить кластер AKS Edge Essentials для работы на нескольких компьютерах для поддержки архитектуры распределенных микрослужб. AkS Edge Essentials предназначен для статических конфигураций и не включает динамическое создание и удаление виртуальных машин, а также управление жизненным циклом кластера, в отличие от AKS в облаке или AKS HCI. AkS Edge Essentials имеет только одну виртуальную машину Linux на каждом компьютере, а также виртуальную машину Windows при необходимости. Каждая виртуальная машина имеет статическое выделение ОЗУ, хранилища и физических ядер ЦП, назначенных во время установки. В развертывании с несколькими узлами один из компьютеров является основным компьютером с узлом управления Kubernetes, а другие будут вторичными компьютерами с рабочими узлами. В этом сценарии развертывания мы настроим кластер K8S с помощью внешнего коммутатора. С помощью этой конфигурации можно запускать kubectl с другого компьютера в сети, оценивать производительность рабочей нагрузки на внешнем коммутаторе и т. д.

Предварительные требования

Настройте компьютер, как описано в статье Настройка компьютера .

Шаг 1. Полные параметры конфигурации развертывания Kubernetes

Параметры, необходимые для создания масштабируемого кластера, можно создать с помощью следующей команды:

New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null

При этом создается файл конфигурации с именем aksedge-config.json который содержит конфигурацию, необходимую для создания масштабируемого кластера с узлом Linux. Файл создается в текущем рабочем каталоге. Дополнительные варианты создания файла конфигурации см. в следующих примерах. Подробное описание параметров конфигурации доступно здесь.

Ключевые параметры, которые следует отметить для масштабируемого развертывания 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 — диспетчера виртуальных коммутаторов, сопоставьте коммутатор с адаптером Wi-Fi, а затем укажите сведения о коммутаторе в json конфигурации, как описано ниже.

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

  • IP-адреса. Необходимо выделить бесплатные IP-адреса из сети для уровня управления, служб Kubernetes и узлов (виртуальных машин). Дополнительные сведения см. в обзоре сети AKS Edge Essentials. Например, в локальной сети с диапазоном IP-адресов 192.168.1.0/24 можно использовать 1,151 и выше за пределами область DHCP, поэтому они, скорее всего, будут бесплатными. В настоящее время Essentials AKS Edge поддерживает только IPv4-адреса. В идеале вы будете знать, какие бесплатные IP-адреса можно использовать; однако вы можете использовать скрипт AksEdge-ListUsedIPv4s из репозитория GitHub для просмотра IP-адресов, которые используются в настоящее время, чтобы избежать использования этих IP-адресов в конфигурации. В разделе файла конфигурации необходимо указать Network следующие параметры: ControlPlaneEndpointIp, Ip4GatewayAddress, , Ip4PrefixLengthServiceIPRangeSize, , ServiceIPRangeStartи DnsServers.

  • Значение Network.NetworkPlugin по умолчанию — flannel. Flannel — это CNI по умолчанию для кластера K3S. В кластере K8S измените на NetworkPlugincalico.

  • В дополнение к предыдущим параметрам можно задать следующие параметры в соответствии с конфигурацией развертывания, как описано здесь: 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:

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

Шаг 5. Добавление рабочего узла Windows (необязательно)

Внимание!

Рабочие узлы Windows являются экспериментальной функцией в этом выпуске. Мы активно работаем над этой функцией.

Если вы хотите добавить узел Windows на существующий компьютер только linux, можно выполнить следующую команду:

New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null

Здесь также можно указать такие параметры, как и (илиMemoryInMB) CpuCount для виртуальной машины 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"
            }
        }
    ]
}

Create узлах Linux и Windows

Чтобы запустить уровень управления Linux и рабочий узел Windows на компьютере, создайте файл конфигурации с помощью следующей команды:

New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null

Create развертывания с помощью команды :

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"
          }
      }
  ]
}

Дальнейшие действия