Share via


AKS Edge 中的完整 Kubernetes 部署 Essentials

警告

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

您可以將 AKS Edge Essentials 叢集設定為在多部電腦上執行,以支援分散式微服務架構。 AKS Edge Essentials 適用於靜態設定,且不會啟用動態 VM 建立/刪除或叢集生命週期管理,與雲端或 AKS HCI 中的 AKS 不同。 AKS Edge Essentials 每個機器只有一個 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 節點建立可調整叢集所需的設定。 檔案會建立在您目前的工作目錄中。 如需建立組態檔的更多選項,請參閱下列範例。 您可以 在這裡取得組態參數的詳細描述。

可調整 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 服務和節點配置免費的IP位址, (VM) 。 如需詳細資訊,請參閱 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

  • 預設值 Network.NetworkPluginflannel。 Flannel 是 K3S 叢集的預設 CNI。 在 K8S 叢集中,將 NetworkPlugin 變更為 calico

  • 除了先前的參數之外,您還可以根據部署組態來設定下列參數,如下所述LinuxNode.CpuCountLinuxNode.MemoryInMB、、LinuxNode.Ip4AddressLinuxNode.DataSizeInGB、、WindowsNode.CpuCountWindowsNode.Ip4AddressWindowsNode.MemoryInMBInit.ServiceIPRangeSizeNetwork.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 並部署您的應用程式,請為 LinuxNode.CpuCount (處理能力) 設定四個 CPU 或更多 LinuxNode.MemoryinMB CPU、 (RAM) 4 GB 以上,並將大於 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"
            }
        }
    ]
}

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

下一步