Vollständige Kubernetes-Bereitstellungen in AKS Edge Essentials
Achtung
Die vollständige Bereitstellung auf mehreren Computern ist derzeit ein experimentelles Feature. Wir arbeiten aktiv an diesem Feature.
Sie können einen AKS Edge Essentials-Cluster so konfigurieren, dass er auf mehreren Computern ausgeführt wird, um eine verteilte Microservices-Architektur zu unterstützen. AKS Edge Essentials ist für statische Konfigurationen gedacht und ermöglicht im Gegensatz zu AKS in der Cloud oder AKS HCI keine dynamische VM-Erstellung/Löschung oder Clusterlebenszyklusverwaltung. AKS Edge Essentials verfügt bei Bedarf nur über eine Linux-VM pro Computer, zusammen mit einer Windows-VM, falls erforderlich. Jeder virtuelle Computer verfügt über eine statische Zuweisung von RAM, Speicher und physischen CPU-Kernen, die zur Installationszeit zugewiesen sind. Bei einer Bereitstellung mit mehreren Knoten ist einer der Computer der primäre Computer mit Kubernetes-Steuerknoten, und die anderen Computer sind sekundäre Computer mit den Arbeitsknoten. In diesem Bereitstellungsszenario konfigurieren wir den K8S-Cluster mithilfe eines externen Switches. Mit dieser Konfiguration können Sie von einem anderen Computer in Ihrem Netzwerk aus ausgeführt kubectl
werden, die Arbeitsauslastungsleistung auf einem externen Switch auswerten usw.
Voraussetzungen
Richten Sie Ihren Computer wie im Artikel "Computer einrichten" beschrieben ein.
Schritt 1: vollständige Kubernetes-Bereitstellungskonfigurationsparameter
Sie können die parameter generieren, die zum Erstellen eines skalierbaren Clusters erforderlich sind, indem Sie den folgenden Befehl verwenden:
New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null
Mit diesem Befehl wird eine Konfigurationsdatei namens aksedge-config.json erstellt, die die konfiguration enthält, die zum Erstellen eines skalierbaren Clusters mit einem Linux-Knoten erforderlich ist. Die Datei wird in Ihrem aktuellen Arbeitsverzeichnis erstellt. Ausführliche Beschreibungen der Konfigurationsparameter (z. B. Proxyeinstellungen) finden Sie in der JSON-Konfiguration der Bereitstellung.
Weitere Optionen zum Erstellen der Konfigurationsdatei finden Sie in den folgenden Beispielen.
Die wichtigsten Parameter für eine skalierbare Kubernetes-Bereitstellung sind:
Informationen zu externen Switchen: Eine vollständige Bereitstellung verwendet einen externen Switch, um die Kommunikation über die Knoten hinweg zu ermöglichen. Sie müssen den
MachineConfigType.NetworkConnection.AdapterName
Parameter entweder oderWi-Fi
:Ethernet
# get the list of available adapters in the machine Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
Wenn Sie einen externen Switch auf Ihrem Hyper-V erstellt haben, können Sie die vswitch-Details in Ihrer Konfigurationsdatei angeben. Wenn Sie keinen externen Switch im Hyper-V-Manager erstellen und den
New-AksEdgeDeployment
Befehl ausführen, erstellt AKS Edge Essentials automatisch einen externen Switch namensaksedgesw-ext
und verwendet ihn für Ihre Bereitstellung.Hinweis
In dieser Version gibt es ein bekanntes Problem bei der automatischen Erstellung eines externen Switches mit dem
New-AksEdgeDeployment
Befehl, wenn Sie einen WLAN-Adapter für den Switch verwenden. Erstellen Sie in diesem Fall zuerst den externen Switch mit dem Hyper-V-Manager – Virtual Switch Manager, ordnen Sie den Switch dem WLAN-Adapter zu, und geben Sie dann die Switchdetails in Ihrem Konfigurations-JSON an, wie unten beschrieben.IP-Adressen: Sie müssen ihrem Netzwerk kostenlose IP-Adressen für die Steuerungsebene, Kubernetes-Dienste und Knoten (VMs) zuweisen. Weitere Details finden Sie in der AKS Edge Essentials-Netzwerkübersicht . Beispielsweise haben Sie in einem lokalen Netzwerk mit dem IP-Adressbereich 192.168.1.0/24 möglicherweise 1.151 und höher außerhalb des DHCP-Bereichs und sind daher wahrscheinlich kostenlos. AKS Edge Essentials unterstützt derzeit nur IPv4-Adressen. Im Idealfall wissen Sie, welche kostenlosen IP-Adressen Sie verwenden können; Sie können jedoch das Skript "AksEdge-ListUsedIPv4s" aus dem GitHub-Repository verwenden, um derzeit verwendete IPs anzuzeigen, um die Verwendung dieser IP-Adressen in Ihrer Konfiguration zu vermeiden. Die folgenden Parameter müssen im
Network
Abschnitt der Konfigurationsdatei angegeben werden:ControlPlaneEndpointIp
, ,Ip4GatewayAddress
, ,Ip4PrefixLength
,ServiceIPRangeSize
, ,ServiceIPRangeStart
undDnsServers
.
Wichtig
Die Kubernetes pod cidr
ist 10.42.0.0/16
für K3s und 10.244.0.0/24
für K8s vorgesehen. Die Kubernetes service cidr
ist 10.43.0.0/16
für K3s und 10.96.0.0/12
für K8s vorgesehen.
- Der
Network.NetworkPlugin
Wert istflannel
standardmäßig . Flannel ist der Standard-CNI für einen K3S-Cluster. Ändern Sie in einem K8S-Cluster dieNetworkPlugin
Incalico
. - Zusätzlich zu den vorherigen Parametern können Sie die folgenden Parameter gemäß Ihrer Bereitstellungskonfiguration festlegen, wie hier beschrieben:
LinuxNode.CpuCount
, , ,LinuxNode.DataSizeInGB
WindowsNode.MemoryInMB
LinuxNode.Ip4Address
LinuxNode.MemoryInMB
WindowsNode.CpuCount
,WindowsNode.Ip4Address
, und .Init.ServiceIPRangeSize
Network.InternetDisabled
Schritt 2: Überprüfen der Konfigurationsdatei
Nachdem Sie die aksedge-config.json Datei aktualisiert haben, führen Sie das Tool "AksEdgePrompt" aus. Dieses Tool öffnet ein PowerShell-Fenster mit erhöhten Rechten mit geladenen Modulen. Führen Sie dann den folgenden Befehl aus, um Ihre Netzwerkparameter mithilfe des Test-AksEdgeNetworkParameters
Cmdlets zu überprüfen:
Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json
Schritt 3: Erstellen eines vollständigen Bereitstellungsclusters
Wenn Test-AksEdgeNetworkParameters
dieser Wert zurückgegeben wird true
, können Sie Ihre Bereitstellung erstellen. Sie können die Bereitstellung mit dem New-AksEdgeDeployment
Cmdlet erstellen:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
Das New-AksEdgeDeployment
Cmdlet ruft automatisch die Kubeconfig-Datei ab.
Schritt 4: Überprüfen der Bereitstellung
kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide
Unten sehen Sie einen Screenshot eines Kubernetes-Clusters:
Schritt 5: Hinzufügen eines Windows-Workerknotens (optional)
Achtung
Windows-Workerknoten sind ein experimentelles Feature in dieser Version. Wir arbeiten aktiv an diesem Feature.
Wenn Sie einem vorhandenen Linux-Computer einen Windows-Knoten hinzufügen möchten, können Sie Folgendes ausführen:
New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null
Sie können auch Parameter wie CpuCount
und/oder MemoryInMB
für Ihre Windows-VM hier angeben.
Sie können die generierte Konfigurationsdatei verwenden und den folgenden Befehl ausführen, um den Windows-Knoten hinzuzufügen.
Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json
Beispielkonfiguration für verschiedene Bereitstellungsoptionen
Zuordnen von Ressourcen zu Ihren Knoten
Um eine Verbindung mit Arc herzustellen und Ihre Apps mit GitOps bereitzustellen, weisen Sie vier CPUs oder mehr für die LinuxNode.CpuCount
(Verarbeitungsleistung), 4 GB oder mehr für LinuxNode.MemoryinMB
(RAM) zu, und weisen Sie eine Zahl zu, die größer als 0 ist ServiceIpRangeSize
. Hier weisen wir 10 IP-Adressen für Ihre Kubernetes-Dienste zu:
{
"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"
}
}
]
}
Erstellen von Linux- und Windows-Knoten
Um sowohl die Linux-Steuerebene als auch den Windows-Workerknoten auf einem Computer auszuführen, erstellen Sie die Konfigurationsdatei mit dem folgenden Befehl:
New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null
Erstellen Sie die Bereitstellung mit dem Befehl :
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"
}
}
]
}