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 Essentials edge del servizio Azure Kubernetes per l'esecuzione in più computer per supportare un'architettura di microservizi distribuiti. Il servizio Azure Kubernetes Edge Essentials è destinato a 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 HCI. Il servizio Azure Kubernetes Edge Essentials ha 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 al momento dell'installazione. In una distribuzione a più nodi, uno dei computer è il computer primario con il nodo di controllo Kubernetes e gli altri computer saranno computer secondari con i nodi di lavoro. In questo scenario di distribuzione verrà configurato il cluster K8S usando un commutatore esterno. Con questa configurazione, è possibile eseguire kubectl da un altro computer nella rete, valutare le prestazioni del carico di lavoro in 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

Verrà creato 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 altre opzioni per la creazione del file di configurazione, vedere gli esempi seguenti. Una descrizione dettagliata dei parametri di configurazione è disponibile qui.

I parametri chiave da notare per una distribuzione scalabile di Kubernetes 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 è stato creato un commutatore esterno in Hyper-V, è possibile scegliere di specificare i dettagli di vswitch nel file di configurazione. Se non si crea un commutatore esterno nella console di gestione di Hyper-V ed eseguire il New-AksEdgeDeployment comando, Azure Kubernetes 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, creare prima il commutatore esterno usando la console di gestione del commutatore virtuale Hyper-V, eseguire il mapping dell'opzione alla scheda Wi-Fi e quindi specificare i dettagli del commutatore nel codice JSON di configurazione, come descritto di seguito.

    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 presente 1.151 e versioni successive all'esterno dell'ambito DHCP e pertanto è probabile che sia libero. Azure Kubernetes Edge Essentials supporta attualmente solo indirizzi IPv4. Idealmente, saprai quali indirizzi IP gratuiti puoi 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 dovranno essere forniti nella Network sezione del file di configurazione: ControlPlaneEndpointIp, Ip4GatewayAddress, Ip4PrefixLength, ServiceIPRangeSize, ServiceIPRangeStarte DnsServers.

  • 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.MemoryInMB, LinuxNode.DataSizeInGB, LinuxNode.Ip4AddressWindowsNode.CpuCount, WindowsNode.MemoryInMB, WindowsNode.Ip4Address, Init.ServiceIPRangeSize, e 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

Di seguito è illustrata una schermata di un cluster Kubernetes:

Diagramma che mostra tutti i pod in esecuzione.

Passaggio 5: aggiungere un nodo di lavoro 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 solo computer Linux 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"
            }
        }
    ]
}

Create 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

Create la distribuzione usando 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