AKS Edge Essentials 中的完整 Kubernetes 部署

警告

多部電腦上的完整部署目前是實驗性功能。 我們正積極處理這項功能。

您可以將 AKS Edge Essentials 叢集設定為在多部計算機上執行,以支援分散式微服務架構。 與雲端中的 AKS 或 AKS HCI 不同,AKS 邊緣程式集適合靜態的設定,且不會啟用動態 VM 建立/刪除或叢集生命週期管理。 AKS 邊緣程式集每部機器只有一個 Linux VM,以及視需要使用 Windows VM。 每個 VM 都有在安裝時間指派的 RAM、記憶體和實體 CPU 核心的靜態配置。 在多節點部署中,其中一部機器是具有 Kubernetes 控制節點的主要機器,另一部計算機將會是具有背景工作節點的次要機器。 在此部署案例中,我們將使用外部交換器來設定 K8S 叢集。 透過此設定,您可以從網路上的另一部電腦執行 kubectl 、評估外部交換器上的工作負載效能等等。

必要條件

如設定電腦一文所述 ,設定您的電腦

步驟 1:完整的 Kubernetes 部署組態參數

您可以使用下列命令來產生建立可調整叢集所需的參數:

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

此命令會建立名為 aksedge-config.json 的組態檔,其中包含使用 Linux 節點建立可調整叢集所需的組態。 檔案會建立在您目前的工作目錄中。 如需組態參數的詳細描述,請參閱 部署 JSON 組態 (例如 Proxy 設定)。

如需建立組態檔的詳細資訊,請參閱下列範例。

可調整 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 的外部交換器,並將它用於部署。

    注意

    在此版本中,如果您使用Wi-Fi配接器進行交換器,則使用 命令自動建立外部交換New-AksEdgeDeployment器時,有一個已知問題。 在此情況下,請先使用 Hyper-V 管理員 - 虛擬交換器管理員建立外部交換器、將交換器對應至 Wi-fi 配接器,然後在您的設定 JSON 中提供交換器詳細數據,如下所示。

    Hyper-V 交換器管理員的螢幕快照。

  • IP 位址:您必須為控制平面Kubernetes 服務和節點 (VM) 配置來自網路的免費 IP 位址。 如需詳細資訊,請參閱 AKS Edge Essentials 網路概觀。 例如,在具有 192.168.1.0/24 IP 位址範圍的局域網路中,您可能在 DHCP 範圍之外有 1.151 和更新版本,因此可能是免費的。 AKS Edge Essentials 目前僅支援 IPv4 位址。 在理想情況下,您將知道可以使用的免費IP位址;不過,您可以使用 GitHub 存放庫中AksEdge-ListUsedIPv4s 腳本來檢視目前使用的 IP,以避免在設定中使用這些 IP 位址。 組態檔的 區段中必須提供Network下列參數:ControlPlaneEndpointIpIp4GatewayAddress、、ServiceIPRangeSizeIp4PrefixLength、、 ServiceIPRangeStartDnsServers

重要

Kubernetes pod cidr 適用於 10.42.0.0/16 K3 和 10.244.0.0/24 K8。 Kubernetes service cidr 適用於 10.43.0.0/16 K3 和 10.96.0.0/12 K8。

  • 根據預設,此值 Network.NetworkPluginflannel。 Flannel 是 K3S 叢集的預設 CNI。 在 K8S 叢集中,將變更 NetworkPlugincalico
  • 除了先前的參數之外,您還可以根據部署組態來設定下列參數,如下所述LinuxNode.CpuCountLinuxNode.MemoryInMBWindowsNode.MemoryInMBWindowsNode.CpuCountLinuxNode.Ip4AddressLinuxNode.DataSizeInGBWindowsNode.Ip4AddressInit.ServiceIPRangeSize、 和 。Network.InternetDisabled

步驟 2:驗證組態檔

更新 aksedge-config.json 檔案之後,請執行 AksEdgePrompt 工具。 此工具會開啟已提升許可權的 PowerShell 視窗,並載入模組。 然後執行下列命令,以使用 Test-AksEdgeNetworkParameters Cmdlet 驗證您的網路參數:

Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json

步驟 3:建立完整的部署叢集

如果 Test-AksEdgeNetworkParameterstrue回 ,您就可以開始建立部署。 您可以使用 Cmdlet 來建立部署 New-AksEdgeDeployment

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

Cmdlet 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

您也可以在這裡指定 Windows VM 的參數,例如 CpuCount 和/或 MemoryInMB

您可以使用產生的組態檔,並執行下列命令來新增 Windows 節點

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

不同部署選項的範例組態

將資源配置給您的節點

若要使用 GitOps 連線至 Arc 並部署您的應用程式,請配置四個 CPU 或更多 CPU 以用於 LinuxNode.CpuCount (處理能力)、4 GB 以上用於 LinuxNode.MemoryinMB (RAM),並將大於 0 的數位指派給 ServiceIpRangeSize。 在這裡,我們會為您的 Kubernetes 服務配置 10 個 IP 位址:

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

下一步