Volledige implementaties van Kubernetes in AKS Edge Essentials
Let op
Volledige implementatie op meerdere computers is momenteel een experimentele functie. We werken actief aan deze functie.
U kunt een AKS Edge Essentials-cluster configureren voor uitvoering op meerdere computers ter ondersteuning van een gedistribueerde microservicesarchitectuur. AKS Edge Essentials is bedoeld voor statische configuraties en maakt het maken/verwijderen van dynamische VM's of het verwijderen van clusters niet mogelijk, in tegenstelling tot AKS in de cloud of AKS in Azure Local. AKS Edge Essentials heeft slechts één Linux-VM per elke machine, samen met een Windows-VM, indien nodig. Elke VM heeft een statische toewijzing van RAM-, opslag- en fysieke CPU-kernen die tijdens de installatie zijn toegewezen. In een implementatie met meerdere knooppunten is een van de machines de primaire machine met het Kubernetes-besturingsknooppunt en de andere machines zijn secundaire machines met de werkknooppunten. In dit implementatiescenario configureren we het K8S-cluster met behulp van een externe switch. Met deze configuratie kunt kubectl
u uitvoeren vanaf een andere computer in uw netwerk, de prestaties van uw workload evalueren op een externe switch, enzovoort.
Vereisten
Stel uw computer in zoals beschreven in het artikel Machine instellen .
Stap 1: volledige configuratieparameters voor Kubernetes-implementatie
U kunt de parameters genereren die nodig zijn om een schaalbaar cluster te maken met behulp van de volgende opdracht:
New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null
Met deze opdracht maakt u een configuratiebestand met de naam aksedge-config.json, dat de configuratie bevat die nodig is voor het maken van een schaalbaar cluster met een Linux-knooppunt. Het bestand wordt gemaakt in uw huidige werkmap. Zie JSON-implementatieconfiguratie voor gedetailleerde beschrijvingen van de configuratieparameters (zoals proxy-instellingen).
Zie de volgende voorbeelden voor meer opties voor het maken van het configuratiebestand.
De belangrijkste parameters die u moet noteren voor een schaalbare Kubernetes-implementatie zijn:
Informatie over externe switch: een volledige implementatie maakt gebruik van een externe switch om communicatie tussen de knooppunten mogelijk te maken. U moet de
MachineConfigType.NetworkConnection.AdapterName
parameter opgeven alsEthernet
ofWi-Fi
.# get the list of available adapters in the machine Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
Als u een externe switch op uw Hyper-V hebt gemaakt, kunt u ervoor kiezen om de details van de vswitch op te geven in uw configuratiebestand. Als u geen externe switch maakt in Hyper-V-beheer en de
New-AksEdgeDeployment
opdracht uitvoert, maakt AKS Edge Essentials automatisch een externe switch met de naamaksedgesw-ext
en gebruikt deze voor uw implementatie.Notitie
In deze release is er een bekend probleem met het automatisch maken van een externe switch met de
New-AksEdgeDeployment
opdracht als u een Wi-Fi-adapter voor de switch gebruikt. In dit geval maakt u eerst de externe switch met behulp van de Hyper-V manager - Virtual Switch Manager, wijst u de switch toe aan de Wi-fi-adapter en geeft u vervolgens de switchgegevens op in uw configuratie-JSON, zoals beschreven in deze sectie.IP-adressen: U moet gratis IP-adressen uit uw netwerk toewijzen voor de Besturingsvlak, Kubernetes-services en knooppunten (VM's). Zie het AKS Edge Essentials-netwerkoverzicht voor meer informatie. In een lokaal netwerk met bijvoorbeeld het IP-adresbereik 192.168.1.0/24 hebt u mogelijk 1.151 en hoger buiten het DHCP-bereik en is deze waarschijnlijk gratis. AKS Edge Essentials ondersteunt momenteel alleen IPv4-adressen. In het ideale voorbeeld weet u welke gratis IP-adressen u kunt gebruiken; U kunt echter het AksEdge-ListUsedIPv4s-script van de GitHub-opslagplaats gebruiken om IP-adressen te bekijken die momenteel in gebruik zijn, om te voorkomen dat deze IP-adressen in uw configuratie worden gebruikt. De volgende parameters moeten worden opgegeven in de sectie
Network
van het configuratiebestand:ControlPlaneEndpointIp
,Ip4GatewayAddress
,Ip4PrefixLength
,ServiceIPRangeSize
,ServiceIPRangeStart
enDnsServers
.
Belangrijk
Kubernetes pod cidr
is 10.42.0.0/16
voor K3s en 10.244.0.0/24
voor K8s. De Kubernetes service cidr
is 10.43.0.0/16
voor K3s en 10.96.0.0/12
voor K8s.
-
Arc
: deze sectie is vereist. Tijdens de implementatie van AKS Edge Essentials worden de Arc-parameters gebruikt om het AKS Edge Essentials-cluster te verbinden met Azure Arc. Zie de verbinding maken met de Arc-documentatievoor meer informatie over de vereiste Arc-parameters.
Belangrijk
Vanaf de release van AKS Edge Essentials 1.10.868.0 is de sectie Arc
van het configuratiebestand vereist. De Azure Arc-verbinding vindt automatisch plaats tijdens de implementatie van AKS Edge Essentials.
- De
Network.NetworkPlugin
-waarde is standaardflannel
. Flannel is de standaard-CNI voor een K3S-cluster. Wijzig in een K8S-cluster hetNetworkPlugin
incalico
. - Naast de vorige parameters kunt u de volgende parameters instellen op basis van uw implementatieconfiguratie, zoals hier beschreven
: , , , , , , , , en .
Stap 2: het configuratiebestand valideren
Nadat u het aksedge-config.json-bestand hebt bijgewerkt, voert u het hulpprogramma AksEdgePrompt uit. Met dit hulpprogramma wordt een PowerShell-venster met verhoogde bevoegdheid geopend met de modules die zijn geladen. Voer vervolgens de volgende opdracht uit om uw netwerkparameters te valideren met behulp van de Test-AksEdgeNetworkParameters
cmdlet:
Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json
Stap 3: een volledig implementatiecluster maken
Als Test-AksEdgeNetworkParameters
true
teruggeeft, bent u klaar om uw implementatie te maken. U kunt de implementatie maken met behulp van de New-AksEdgeDeployment
cmdlet:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
De New-AksEdgeDeployment
cmdlet haalt automatisch het kubeconfig-bestand op.
Stap 4: uw implementatie valideren
kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide
Een schermopname van een Kubernetes-cluster is als volgt:
Stap 5: een Windows-werkknooppunt toevoegen (optioneel)
Let op
Windows-werkknooppunten zijn een experimentele functie in deze release. We werken actief aan deze functie.
Als u een Windows-knooppunt wilt toevoegen aan een bestaande Linux-computer, kunt u het volgende uitvoeren:
New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null
U kunt hier ook parameters opgeven, zoals CpuCount
en/of MemoryInMB
voor uw Windows-VM.
U kunt het gegenereerde configuratiebestand gebruiken en de volgende opdracht uitvoeren om het Windows-knooppunt toe te voegen
Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json
Voorbeeldconfiguratie voor verschillende implementatieopties
Resources toewijzen aan uw knooppunten
Als u verbinding wilt maken met Arc en uw apps wilt implementeren met GitOps, wijst u vier CPU's of meer toe voor de LinuxNode.CpuCount
(verwerkingskracht), 4 GB of meer voor LinuxNode.MemoryinMB
(RAM) en wijst u een getal toe dat groter is dan 0.ServiceIpRangeSize
Hier wijzen we 10 IP-adressen toe voor uw Kubernetes-services:
{
"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- en Windows-knooppunten maken
Als u zowel het Linux-besturingsvlak als het Windows-werkknooppunt op een computer wilt uitvoeren, maakt u het configuratiebestand met behulp van de volgende opdracht:
New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null
Maak de implementatie met behulp van de opdracht:
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"
}
}
]
}