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 oder Wi-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 namens aksedgesw-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.

    Screenshot des Hyper-V-Switch-Managers.

  • 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, , ServiceIPRangeStartund DnsServers.

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 ist flannelstandardmäßig . Flannel ist der Standard-CNI für einen K3S-Cluster. Ändern Sie in einem K8S-Cluster die NetworkPlugin In calico.
  • Zusätzlich zu den vorherigen Parametern können Sie die folgenden Parameter gemäß Ihrer Bereitstellungskonfiguration festlegen, wie hier beschrieben: LinuxNode.CpuCount, , , LinuxNode.DataSizeInGBWindowsNode.MemoryInMBLinuxNode.Ip4AddressLinuxNode.MemoryInMBWindowsNode.CpuCount, WindowsNode.Ip4Address, und . Init.ServiceIPRangeSizeNetwork.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:

Diagramm mit allen ausgeführten Pods.

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

Nächste Schritte