Condividi tramite


Distribuzioni Kubernetes complete in Azure Kubernetes Edge Essentials

Attenzione

La distribuzione completa in più computer è attualmente una funzionalità sperimentale. Stiamo lavorando attivamente a questa funzionalità.

È possibile configurare un cluster Azure Kubernetes Edge Essentials per l'esecuzione in più computer per supportare un'architettura di microservizi distribuiti. Azure Kubernetes Edge Essentials è destinato alle configurazioni statiche e non abilita la creazione/eliminazione dinamica della macchina virtuale o la gestione del ciclo di vita del cluster, a differenza del servizio Azure Kubernetes nel cloud o nel servizio Azure Kubernetes in locale di Azure. AKS Edge Essentials include una sola macchina virtuale Linux per ogni computer, insieme a una macchina virtuale Windows, se necessario. Ogni macchina virtuale ha un'allocazione statica di RAM, archiviazione e core CPU fisici assegnati in fase di installazione. In una distribuzione a più nodi, uno dei computer è il computer primario con il nodo di controllo Kubernetes e gli altri computer sono computer secondari con i nodi di lavoro. In questo scenario di distribuzione viene configurato il cluster K8S usando un commutatore esterno. Con questa configurazione, è possibile eseguire kubectl da un altro computer in rete, valutare le prestazioni del carico di lavoro su un commutatore esterno e così via.

Prerequisiti

Configurare il computer come descritto nell'articolo Configurare il computer .

Passaggio 1: parametri di configurazione della distribuzione Kubernetes completi

È possibile generare i parametri necessari per creare un cluster scalabile usando il comando seguente:

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

Questo comando crea un file di configurazione denominato aksedge-config.json, che include la configurazione necessaria per creare un cluster scalabile con un nodo Linux. Il file viene creato nella directory di lavoro corrente. Per descrizioni dettagliate dei parametri di configurazione, ad esempio le impostazioni proxy, vedere Configurazione JSON della distribuzione.

Per altre opzioni per la creazione del file di configurazione, vedere gli esempi seguenti.

I parametri chiave da notare per una distribuzione kubernetes scalabile sono:

  • Informazioni sul commutatore esterno: una distribuzione completa usa un commutatore esterno per abilitare la comunicazione tra i nodi. È necessario specificare il MachineConfigType.NetworkConnection.AdapterName parametro come Ethernet o Wi-Fi:

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

    Se hai creato un commutatore esterno nel tuo Hyper-V, puoi scegliere di specificare i dettagli del vSwitch nel file di configurazione. Se non si crea un commutatore esterno nella console di gestione di Hyper-V e si esegue il New-AksEdgeDeployment comando, AKS Edge Essentials crea automaticamente un commutatore esterno denominato aksedgesw-ext e lo usa per la distribuzione.

    Nota

    In questa versione, si verifica un problema noto con la creazione automatica di un commutatore esterno con il New-AksEdgeDeployment comando se si usa una scheda Wi-Fi per il commutatore. In questo caso, crea prima lo switch esterno utilizzando il Gestore di switch virtuali Hyper-V, mappa lo switch all'adattatore Wi-fi e quindi specifica i dettagli dello switch nel tuo codice JSON di configurazione, come descritto in questa sezione.

    Screenshot della gestione commutatori Hyper-V.

  • Indirizzi IP: è necessario allocare indirizzi IP gratuiti dalla rete per il piano di controllo, i servizi Kubernetes e i nodi (VM). Per altri dettagli, vedere panoramica della rete di Azure Kubernetes Edge Essentials. Ad esempio, in una rete locale con l'intervallo di indirizzi IP 192.168.1.0/24, potrebbe essere disponibile 1.151 e versioni successive all'esterno dell'ambito DHCP e pertanto è probabile che sia gratuito. Azure Kubernetes Edge Essentials supporta attualmente solo gli indirizzi IPv4. Idealmente, si sa quali indirizzi IP gratuiti è possibile usare; Tuttavia, è possibile usare lo script AksEdge-ListUsedIPv4s dal repository GitHub per visualizzare gli indirizzi IP attualmente in uso, per evitare di usare tali indirizzi IP nella configurazione. I parametri seguenti devono essere specificati nella sezione Network del file di configurazione: ControlPlaneEndpointIp, Ip4GatewayAddress, Ip4PrefixLength, ServiceIPRangeSize, ServiceIPRangeStarte DnsServers.

Importante

Kubernetes pod cidr è 10.42.0.0/16 per K3s e 10.244.0.0/24 per K8s. Kubernetes service cidr è 10.43.0.0/16 per K3s e 10.96.0.0/12 per K8s.

  • Il Network.NetworkPlugin valore predefinito è flannel. Flannel è l'interfaccia CNI predefinita per un cluster K3S. In un cluster K8S modificare in NetworkPlugincalico.
  • Oltre ai parametri precedenti, è possibile impostare i parametri seguenti in base alla configurazione della distribuzione, come descritto di seguito: LinuxNode.CpuCount, LinuxNode.MemoryInMBLinuxNode.DataSizeInGBLinuxNode.Ip4AddressWindowsNode.CpuCount, WindowsNode.MemoryInMB, WindowsNode.Ip4Address, , Init.ServiceIPRangeSizee .Network.InternetDisabled

Passaggio 2: convalidare il file di configurazione

Dopo aver aggiornato il file aksedge-config.json , eseguire lo strumento AksEdgePrompt. Questo strumento apre una finestra di PowerShell con privilegi elevati con i moduli caricati. Eseguire quindi il comando seguente per convalidare i parametri di rete usando il Test-AksEdgeNetworkParameters cmdlet :

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

Passaggio 3: Creare un cluster di distribuzione completo

Se Test-AksEdgeNetworkParameters restituisce true, si è pronti per creare la distribuzione. È possibile creare la distribuzione usando il New-AksEdgeDeployment cmdlet :

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

Il New-AksEdgeDeployment cmdlet recupera automaticamente il file kubeconfig.

Passaggio 4: Convalidare la distribuzione

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

Uno screenshot di un cluster Kubernetes è il seguente:

Diagramma che mostra tutti i pod in esecuzione.

Passaggio 5: aggiungere un nodo di lavoro Di Windows (facoltativo)

Attenzione

I nodi di lavoro di Windows sono una funzionalità sperimentale in questa versione. Stiamo lavorando attivamente a questa funzionalità.

Se si vuole aggiungere un nodo Windows a un computer Linux solo esistente, è possibile eseguire:

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

È anche possibile specificare parametri come CpuCount e/o MemoryInMB per la macchina virtuale Windows qui.

È possibile usare il file di configurazione generato ed eseguire il comando seguente per aggiungere il nodo Windows

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

Configurazione di esempio per diverse opzioni di distribuzione

Allocare risorse ai nodi

Per connettersi ad Arc e distribuire le app con GitOps, allocare quattro CPU o più per ( LinuxNode.CpuCount potenza di elaborazione), 4 GB o più per LinuxNode.MemoryinMB (RAM) e assegnare un numero maggiore di 0 a ServiceIpRangeSize. In questo caso vengono allocati 10 indirizzi IP per i servizi 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"
            }
        }
    ]
}

Creare nodi Linux e Windows

Per eseguire sia il piano di controllo Linux che il nodo del ruolo di lavoro Windows in un computer, creare il file di configurazione usando il comando seguente:

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

Creare la distribuzione mediante il comando :

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

Passaggi successivi