準備 AKS Edge Essentials 的巢狀虛擬化環境
本文說明如何設定巢狀虛擬化環境,以部署 Azure Kubernetes Service (AKS) Edge Essentials 叢集。
注意
支援在 VMware ESXi 上的巢狀虛擬化環境之上部署 AKS Edge Essentials。 生產案例不支援其他巢狀虛擬化部署,而且僅限於開發人員用途。 本指南假設您使用 Hyper-V Hypervisor。 我們不支援使用非Microsoft Hypervisor,例如 KVM。
必要條件
- 請參閱系統需求。
- OS 需求:在您的計算機上安裝 Windows 10/11 IoT 企業版/企業版/專業版並啟用 Windows。 我們建議使用最新的用戶端版本 22H2(OS 組建 19045)或 Server 2022(OS 組建 20348)。 您可以在這裡下載 Windows 10 版本或 Windows 11。
在 Windows VM on VMware ESXi 上部署
VMware ESXi 7.0 和 8.0 版本可以在 Windows 虛擬機上裝載 AKS Edge Essentials。
若要在 VMware ESXi Windows 虛擬機上設定 AKS Edge Essentials,請使用下列步驟:
- 在 VMware ESXi 主機上建立 Windows 虛擬機器。 如需 VMware VM 部署的詳細資訊,請參閱 VMware - 部署虛擬機器。
注意
如果您要建立 Windows 11 虛擬機,請確定它符合執行 Windows 11 Microsoft的最低需求。 如需 Windows 11 VM VMware 支援的詳細資訊,請參閱在 VMware 上安裝 Windows 11 作為客體作業系統。
- 關閉在先前步驟中建立的虛擬機器。
- 選取 Windows 虛擬機器,然後選取 [編輯設定]。
- 搜尋硬體虛擬化,然後開啟 [向客體作業系統公開硬體輔助虛擬化]。
- 選取 [儲存] 並啟動虛擬機器。
- 安裝 Hyper-V Hypervisor。 如果您使用 Windows 用戶端,請確定在 Windows 10 上安裝 Hyper-V。 如果您使用 Windows Server,請確定您安裝 Hyper-V 角色。
在 Azure 虛擬機上部署
如果您在 Azure VM 之上執行 AKS Edge Essentials,請確定您使用支援巢狀虛擬化的 Azure 計算單位 (ACU)。 如需詳細資訊,請參閱 Azure 計算單位(ACU)。 此外,Azure VM 不支援使用外部虛擬交換器,因此 VM 主機 OS 上的 AKS Edge Essentials 部署僅限於單一電腦叢集。
部署環境
本節描述巢狀架構,並醒目提示所需的主要元件和組態。 本文稍後所述的虛擬化層級如下:
- L0 主機操作系統:Windows 主機作業系統。 此 OS 可以執行裸機或作為虛擬機,但在本文中, L0 主機 OS 是建立巢狀 Windows L1 VM 的 OS 。
- L1 虛擬機:在 L0 Windows 主機 OS 上執行的 Windows VM。 此 VM 有 AKS Edge Essentials 安裝。
- L2 虛擬機:在 L1 Windows 虛擬機上執行的 AKS Edge Essentials 巢狀 VM(Linux 或 Windows)。
您可以使用內部或外部虛擬交換器來設定巢狀環境。 不過,本文假設您使用的是內部虛擬交換器。 L0 Windows 機器和 L1/L2 虛擬機的 IP 位址可能會根據網路案例而變更。 本文假設您使用的是 172.20.1.0/24 IP 位址系列。
此外,部署 AKS Edge Essentials Windows 節點是選擇性的,而且會影響您指派的記憶體需求。 本文說明僅限 Linux 的部署,但您可以將適當的設定新增至部署 JSON 檔案,以新增 Windows 節點。
提示
如果您使用外部虛擬交換器進行部署,請確定您使用正確的網路適配器和IP位址配置。
上圖顯示這個巢狀架構的不同虛擬機和元件。
裝置/VM | OS | 層級 | 上層 | 記憶體 | IP 位址 |
---|---|---|---|---|---|
Windows 主機 OS | Windows | L0 | - | 32/64 GB | 172.20.1.1 |
Windows-VM-1 | Windows | L1 | Windows 主機 OS | 8/16 GB | 172.20.1.2 |
Windows-VM-2 | Windows | L1 | Windows 主機 OS | 8/16 GB | 172.20.1.3 |
AKS-Edge-Linux-VM-1 | CBL-Mariner | L2 | Windows-VM-1 | 4 GB | 172.20.1.4 |
AKS-Edge-Windows-VM-1 (選用) | Windows | L2 | Windows-VM-1 | 4 GB | 172.20.1.5 |
AKS-Edge-Linux-VM-2 | CBL-Mariner | L2 | Windows-VM-2 | 4 GB | 172.20.1.6 |
AKS-Edge-Windows-VM-2 (選用) | Windows | L2 | Windows-VM-2 | 4 GB | 172.20.1.7 |
設定巢狀虛擬機
下列指南是IP位址配置的範例。 您可以根據您的網路環境和需求使用自己的配置。 也建議虛擬機和虛擬硬體指派的命名慣例,但您可以使用自己的設定。
開啟提升權限的 PowerShell 工作階段。
建立內部虛擬交換器:
New-VMSwitch -Name "AKS-Int" -SwitchType Internal
如果您正確建立交換器,您應該會看到類似下列輸出的內容:
Name SwitchType NetAdapterInterfaceDescription ---- ---------- ------------------------------ AKS-Int Internal
將IP位址指派給 AKS-Int 虛擬交換器。 此範例使用 172.20.1.0/24 網路。 Windows 主機 OS 會使用此虛擬交換器 IP 位址與其他虛擬機和 AKS Edge Essentials 節點通訊:
$ifIndex = (Get-NetAdapter -Name "vEthernet (AKS-Int)").ifIndex New-NetIPAddress –IPAddress "172.20.1.1" -PrefixLength "24" -InterfaceIndex $ifIndex
建立 NAT 數據表,以連接內部虛擬交換器和內部網路連線裝置與外部/因特網網路:
New-NetNat -Name "AKS-EE-Int-Network" -InternalIPInterfaceAddressPrefix "172.20.1.0/24"
使用 Hyper-V 管理員,建立第一部 Windows 虛擬機,並將它命名為 Windows-VM-1。 如需虛擬機建立的詳細資訊,請參閱 Windows Server 虛擬化。 在 VM 設定期間,請確定您已正確設定下列參數:
- 處理器:虛擬處理器數目:4
- 記憶體:RAM:8192 MB
- 網路適配器:虛擬交換器:AKS-Int
Windows 安裝和設定完成時,請關閉您的 Windows-VM-1 虛擬機。
啟用 Windows-VM-1 的巢狀虛擬化。 如需巢狀虛擬化的詳細資訊,請參閱 使用巢狀虛擬化在虛擬機中執行 Hyper-V:
Set-VMProcessor -VMName <windows-vm-name> -ExposeVirtualizationExtensions $true
啟用 Windows-VM-1 的 MAC 詐騙:
Get-VMNetworkAdapter -VMName <windows-vm-name> | Set-VMNetworkAdapter -MacAddressSpoofing On
開啟 Windows-VM-1 虛擬機,並使用 [Hyper-V 連線] 選項進行連線。
在 Windows-VM-1 虛擬機內,開啟提升許可權的 PowerShell 會話。
檢查連線到虛擬機的適配卡。 尋找連接的乙太網路卡<名稱>。 例如, 乙太網路 2:
ipconfig
您應該會看到類似下面的輸出:
PS C:\Windows\system32> ipconfig Windows IP Configuration Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : mshome.net Link-local IPv6 Address . . . . . : fe80::f4b3:63b3:20d0:2e60%12 Autoconfiguration IPv4 Address. . : 169.254.233.233 Subnet Mask . . . . . . . . . . . : 255.255.0.0 Default Gateway . . . . . . . . . : Ethernet adapter vEthernet (Default Switch): Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::545e:7d5:812b:c17b%18 IPv4 Address. . . . . . . . . . . : 172.21.144.1 Subnet Mask . . . . . . . . . . . : 255.255.240.0 Default Gateway . . . . . . . . . :
使用上一個步驟中的名稱,取得乙太網路卡的 ifIndex:
$ifIndex = (Get-NetAdapter -Name "<name>").ifIndex
設定靜態 IP 172.20.1.2 和閘道 IP 172.20.1.1 和 DNS Server 172.20.1.1:
提示
如果您使用 Azure VM,請使用 Windows 主機 OS (L0) DNS 伺服器。
ipconfig /all
使用 命令來取得 DNS 伺服器位址。 檢查您是否能夠使用網頁瀏覽器取得因特網存取權。 如果您沒有存取權,請檢查 DNS 伺服器是否已正確設定:New-NetIPAddress –IPAddress "172.20.1.2" -DefaultGateway "172.20.1.1" -PrefixLength "24" -InterfaceIndex $ifIndex Set-DNSClientServerAddress –InterfaceIndex $ifIndex –ServerAddresses "172.20.1.1"
依照準備您的機器進行 AKS Edge Essentials 程式,設定 Windows-VM-1 虛擬機。
安裝 Windows-VM-1 虛擬機的所有 AKS Edge Essentials 必要條件。 如需必要條件的詳細資訊,請參閱 AKS Edge Essentials 需求和支援矩陣:
Install-AksEdgeHostFeatures
建立 AKS Edge Essentials 完整規模的部署組態檔。 建立 JSON 之後,請新增必要的參數。 請務必變更外部虛擬交換器建立、DNS 伺服器、指派的記憶體,以及正確的靜態 IP 位址網路適配器。 如需詳細資訊,請參閱 AKS Edge Essentials 中的完整 Kubernetes 部署:
New-AksEdgeConfig -NodeType Linux -DeploymentType ScalableCluster
使用上一個步驟中建立的組態 JSON 檔案,部署 AKS Edge Essentials 完整規模部署:
New-AksEdgeDeployment -JsonConfigFilePath .\AksEdgeDeployConfigTemplate.json
在 AKS-Edge-VM-1 虛擬機上啟用 PING ICMP 流量:
Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo iptables -A INPUT -p ICMP -j ACCEPT"
從 Windows-VM-1 虛擬機器 Ping AKS-Edge-VM-1:
ping 172.20.1.4
從 Windows 主機 OS Ping AKS-Edge-VM-1:
ping 172.20.1.4
警告
如果對 AKS-Edge-VM-1 VM 的 Ping 要求失敗,請檢閱 IP 設定,並針對網路連線進行疑難解答。
在 Windows-VM-1 內,取得要用於 Windows-VM-2 的 scaleConfig JSON 檔案:
New-AksEdgeScaleConfig -NodeType Linux -ScaleType AddMachine -LinuxNodeIp <VM2-Linux-Node-IP>
建立 Windows-VM-2 虛擬機。 使用新的 Windows-VM-2 參數重複步驟 4 到 14:
- 虛擬機名稱: Windows-VM-2
- IP 位址: 172.20.1.3
- 處理器:虛擬處理器數目: 4
- 記憶體: 8192 MB
- 網路適配器(虛擬交換器): AKS-Int
- IP 閘道位址: 172.20.1.1
- DNS 伺服器位址: 172.20.1.1
測試從 Windows-VM-2 到 AKS-Edge-VM-1 的 Ping:
ping 172.20.1.4
警告
如果對 AKS-Edge-VM-1 的 Ping 要求失敗,請檢閱 IP 設定,並針對網路連線進行疑難解答。
依照準備您的機器以進行 AKS Edge Essentials 程式,設定 Windows-VM-2 虛擬機。
安裝 Windows-VM-2 虛擬機的所有 AKS Edge Essentials 必要條件。 如需必要條件的詳細資訊,請參閱 AKS Edge Essentials 需求和支援矩陣:
Install-AksEdgeHostFeatures
線上到 Windows-VM-1 虛擬機,並使用提升許可權的 PowerShell 會話取得 AKS Edge 叢集加入設定:
New-AksEdgeScaleConfig -NodeType Linux -ScaleType AddMachine -LinuxNodeIp <AKS-Edge-Linux-VM-2>
從 Windows-VM-1 複製 AKS Edge Essentials 調整配置檔,並使用適當的參數加以修改。 如需詳細資訊,請參閱 在多部計算機上相應放大。
使用上一個步驟中的調整組態 JSON 檔案,在 Window-VM-2 上部署 AKS-Edge-VM-2:
New-AksEdgeDeployment -JsonConfigFilePath <scale-config-json>
驗證節點是否已新增至叢集。 在叢集中的任何節點上,執行下列 Cmdlet:
kubectl get nodes
如果一切都已正確設定,您應該會看到這兩個 Linux 節點在叢集中執行:
PS C:\> kubectl get nodes NAME STATUS ROLES AGE VERSION windows-vm1-ledge Ready control-plane,etcd,master 3m45s v1.24.3+k3s- windows-vm2-ledge Ready control-plane,etcd,master 10m25s v1.24.3+k3s-
注意
如需 K3s 和 K8 上目前支援的 Kubernetes 版本清單,請參閱下載 AKS Edge Essentials 中的表格。
下一步
- 部署應用程式以 新增工作負載
- 針對您的部署進行疑難解答