Déploiements Kubernetes complets dans AKS Edge Essentials

Attention

Le déploiement complet sur plusieurs machines est actuellement une fonctionnalité expérimentale. Nous travaillons activement sur cette fonctionnalité.

Vous pouvez configurer un cluster AKS Edge Essentials pour qu’il s’exécute sur plusieurs machines pour prendre en charge une architecture de microservices distribuée. AKS Edge Essentials est pour les configurations statiques et n’active pas la création/suppression dynamique des machines virtuelles ou la gestion du cycle de vie du cluster, au contraire de AKS dans le cloud ou AKS HCI. AKS Edge Essentials n’a qu’une seule machine virtuelle Linux par machine, ainsi qu’une machine virtuelle Windows si nécessaire. Chaque machine virtuelle dispose d’une allocation statique de ram, de stockage et de cœurs d’UC physiques affectés au moment de l’installation. Dans un déploiement à plusieurs nœuds, l’une des machines est la machine principale avec le nœud de contrôle Kubernetes, et les autres machines seront des machines secondaires avec les nœuds Worker. Dans ce scénario de déploiement, nous allons configurer le cluster K8S à l’aide d’un commutateur externe. Avec cette configuration, vous pouvez exécuter à kubectl partir d’un autre ordinateur sur votre réseau, évaluer les performances de votre charge de travail sur un commutateur externe, et ainsi de suite.

Prérequis

Configurez votre ordinateur comme décrit dans l’article Configurer l’ordinateur.

Étape 1 : paramètres de configuration de déploiement Kubernetes complets

Vous pouvez générer les paramètres nécessaires pour créer un cluster évolutif à l’aide de la commande suivante :

New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null

Cette commande crée un fichier de configuration nommé aksedge-config.json, qui inclut la configuration nécessaire pour créer un cluster évolutif avec un nœud Linux. Le fichier est créé dans votre répertoire de travail actuel. Consultez la configuration JSON de déploiement pour obtenir des descriptions détaillées des paramètres de configuration (tels que les paramètres de proxy).

Pour plus d’options pour créer le fichier de configuration, consultez les exemples suivants.

Les paramètres clés à noter pour un déploiement Kubernetes évolutif sont les suivants :

  • Informations sur le commutateur externe : un déploiement complet utilise un commutateur externe pour activer la communication entre les nœuds. Vous devez spécifier le MachineConfigType.NetworkConnection.AdapterName paramètre en tant que :Ethernet Wi-Fi

    # get the list of available adapters in the machine
    Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
    

    Si vous avez créé un commutateur externe sur votre Hyper-V, vous pouvez choisir de spécifier les détails du commutateur virtuel dans votre fichier de configuration. Si vous ne créez pas de commutateur externe dans le gestionnaire Hyper-V et exécutez la New-AksEdgeDeployment commande, AKS Edge Essentials crée automatiquement un commutateur externe nommé aksedgesw-ext et utilise celui-ci pour votre déploiement.

    Remarque

    Dans cette version, il existe un problème connu lors de la création automatique d’un commutateur externe avec la New-AksEdgeDeployment commande si vous utilisez un adaptateur Wi-Fi pour le commutateur. Dans ce cas, créez d’abord le commutateur externe à l’aide du gestionnaire Hyper-V - Gestionnaire de commutateur virtuel, mappez le commutateur à l’adaptateur Wi-Fi, puis fournissez les détails du commutateur dans votre json de configuration, comme décrit ci-dessous.

    Capture d’écran du gestionnaire de commutateurs Hyper-V.

  • Adresses IP : vous devez allouer des adresses IP gratuites à partir de votre réseau pour le plan de contrôle, les services Kubernetes et les nœuds (machines virtuelles). Pour plus d’informations, consultez la vue d’ensemble de la mise en réseau AKS Edge Essentials. Par exemple, dans un réseau local avec la plage d’adresses IP 192.168.1.0/24, vous avez peut-être 1,151 et versions ultérieures en dehors de l’étendue DHCP, et sont donc susceptibles d’être libres. AKS Edge Essentials prend actuellement en charge uniquement les adresses IPv4. Dans l’idéal, vous savez quelles adresses IP gratuites vous pouvez utiliser ; Toutefois, vous pouvez utiliser le script AksEdge-ListUsedIPv4s du dépôt GitHub pour afficher les adresses IP actuellement utilisées, afin d’éviter d’utiliser ces adresses IP dans votre configuration. Les paramètres suivants doivent être fournis dans la Network section du fichier de configuration : ControlPlaneEndpointIp, , Ip4GatewayAddress, Ip4PrefixLength, ServiceIPRangeSize, ServiceIPRangeStartet DnsServers.

Important

Kubernetes pod cidr est 10.42.0.0/16 destiné aux K3s et 10.244.0.0/24 aux K8s. Kubernetes service cidr est 10.43.0.0/16 destiné aux K3s et 10.96.0.0/12 aux K8s.

  • La Network.NetworkPlugin valeur par défaut est flannel. Flannel est la CNI par défaut pour un cluster K3S. Dans un cluster K8S, remplacez la valeur NetworkPlugin calico.
  • En plus des paramètres précédents, vous pouvez définir les paramètres suivants en fonction de votre configuration de déploiement, comme décrit ici : LinuxNode.CpuCount, , LinuxNode.MemoryInMB, LinuxNode.DataSizeInGBLinuxNode.Ip4Address, WindowsNode.Ip4AddressInit.ServiceIPRangeSizeWindowsNode.CpuCountWindowsNode.MemoryInMBet .Network.InternetDisabled

Étape 2 : valider le fichier de configuration

Après avoir mis à jour le fichier aksedge-config.json, exécutez l’outil AksEdgePrompt. Cet outil ouvre une fenêtre PowerShell avec élévation de privilèges avec les modules chargés. Exécutez ensuite la commande suivante pour valider vos paramètres réseau à l’aide de l’applet de Test-AksEdgeNetworkParameters commande :

Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json

Étape 3 : créer un cluster de déploiement complet

Si Test-AksEdgeNetworkParameters elle est retournée true, vous êtes prêt à créer votre déploiement. Vous pouvez créer le déploiement à l’aide de l’applet New-AksEdgeDeployment de commande :

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

L’applet New-AksEdgeDeployment de commande récupère automatiquement le fichier kubeconfig.

Étape 4 : valider votre déploiement

kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide

Une capture d’écran d’un cluster Kubernetes est illustrée ci-dessous :

Diagramme montrant tous les pods en cours d’exécution.

Étape 5 : ajouter un nœud Worker Windows (facultatif)

Attention

Les nœuds Worker Windows sont une fonctionnalité expérimentale de cette version. Nous travaillons activement sur cette fonctionnalité.

Si vous souhaitez ajouter un nœud Windows à un ordinateur Linux existant uniquement, vous pouvez exécuter :

New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null

Vous pouvez également spécifier des paramètres tels que CpuCount et/ou MemoryInMB pour votre machine virtuelle Windows ici.

Vous pouvez utiliser le fichier de configuration généré et exécuter la commande suivante pour ajouter le nœud Windows

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

Exemple de configuration pour différentes options de déploiement

Allouer des ressources à vos nœuds

Pour vous connecter à Arc et déployer vos applications avec GitOps, allouez quatre PROCESSEURs ou plus pour la (puissance de LinuxNode.CpuCount traitement), 4 Go ou plus pour LinuxNode.MemoryinMB (RAM) et affectez un nombre supérieur à 0 à ServiceIpRangeSize. Ici, nous allouons 10 adresses IP pour vos services Kubernetes :

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

Créer des nœuds Linux et Windows

Pour exécuter le plan de contrôle Linux et le nœud Worker Windows sur une machine, créez le fichier de configuration à l’aide de la commande suivante :

New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null

Créez le déploiement avec la commande suivante :

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

Étapes suivantes