Udostępnij za pośrednictwem


Pełne wdrożenia platformy Kubernetes w usłudze AKS Edge Essentials

Przestroga

Pełne wdrożenie na wielu maszynach jest obecnie funkcją eksperymentalną. Aktywnie pracujemy nad tą funkcją.

Klaster usługi AKS Edge Essentials można skonfigurować do uruchamiania na wielu maszynach w celu obsługi architektury rozproszonych mikrousług. Usługa AKS Edge Essentials jest przeznaczona do konfiguracji statycznych i nie umożliwia dynamicznego tworzenia/usuwania maszyny wirtualnej ani zarządzania cyklem życia klastra, w przeciwieństwie do usługi AKS w chmurze lub AKS HCI. Usługa AKS Edge Essentials ma tylko jedną maszynę wirtualną z systemem Linux na każdą maszynę wraz z maszyną wirtualną z systemem Windows w razie potrzeby. Każda maszyna wirtualna ma statyczną alokację pamięci RAM, magazynu i fizycznych rdzeni procesora CPU przypisanych w czasie instalacji. W przypadku wdrożenia z wieloma węzłami jedna z maszyn jest maszyną podstawową z węzłem sterowania Kubernetes, a pozostałe maszyny będą maszynami pomocniczymi z węzłami procesu roboczego. W tym scenariuszu wdrażania skonfigurujemy klaster K8S przy użyciu przełącznika zewnętrznego. Dzięki tej konfiguracji można uruchomić kubectl z innej maszyny w sieci, ocenić wydajność obciążenia na przełączniku zewnętrznym itd.

Wymagania wstępne

Skonfiguruj maszynę zgodnie z opisem w artykule Konfigurowanie maszyny .

Krok 1. Pełne parametry konfiguracji wdrożenia platformy Kubernetes

Parametry potrzebne do utworzenia skalowalnego klastra można wygenerować przy użyciu następującego polecenia:

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

Spowoduje to utworzenie pliku konfiguracji o nazwie aksedge-config.json zawierającego konfigurację wymaganą do utworzenia skalowalnego klastra z węzłem systemu Linux. Plik zostanie utworzony w bieżącym katalogu roboczym. Zapoznaj się z poniższymi przykładami, aby uzyskać więcej opcji tworzenia pliku konfiguracji. Szczegółowy opis parametrów konfiguracji jest dostępny tutaj.

Kluczowe parametry do zanotowania skalowalnego wdrożenia platformy Kubernetes to:

  • Informacje o przełączniku zewnętrznym: pełne wdrożenie używa przełącznika zewnętrznego, aby umożliwić komunikację między węzłami. Należy określić MachineConfigType.NetworkConnection.AdapterName parametr jako Ethernet lub Wi-Fi:

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

    Jeśli utworzono przełącznik zewnętrzny na funkcji Hyper-V, możesz określić szczegóły przełącznika wirtualnego w pliku konfiguracji. Jeśli nie utworzysz przełącznika zewnętrznego w menedżerze funkcji Hyper-V i uruchomisz New-AksEdgeDeployment polecenie, usługa AKS Edge Essentials automatycznie tworzy przełącznik zewnętrzny o nazwie aksedgesw-ext i używa go do wdrożenia.

    Uwaga

    W tej wersji występuje znany problem z automatycznym tworzeniem przełącznika zewnętrznego za New-AksEdgeDeployment pomocą polecenia , jeśli używasz adaptera Wi-Fi dla przełącznika. W takim przypadku najpierw utwórz przełącznik zewnętrzny przy użyciu menedżera funkcji Hyper-V — Menedżera przełącznika wirtualnego, zamapuj przełącznik na kartę Wi-fi, a następnie podaj szczegóły przełącznika w pliku JSON konfiguracji, jak opisano poniżej.

    Zrzut ekranu przedstawiający menedżera przełącznika funkcji Hyper-V.

  • Adresy IP: należy przydzielić bezpłatne adresy IP z sieci dla płaszczyzny sterowania, usług Kubernetes i węzłów (maszyn wirtualnych). Aby uzyskać więcej informacji, zobacz omówienie sieci usługi AKS Edge Essentials. Na przykład w sieci lokalnej z zakresem adresów IP 192.168.1.0/24 może istnieć wartość 1.151 lub nowsza poza zakresem DHCP, dlatego prawdopodobnie będzie bezpłatna. Usługa AKS Edge Essentials obecnie obsługuje tylko adresy IPv4. W idealnym przypadku będziesz wiedzieć, jakich bezpłatnych adresów IP można użyć; można jednak użyć skryptu AksEdge-ListUsedIPv4s z repozytorium GitHub , aby wyświetlić adresy IP, które są obecnie używane, aby uniknąć używania tych adresów IP w konfiguracji. W sekcji pliku konfiguracji należy podać Network następujące parametry: ControlPlaneEndpointIp, Ip4GatewayAddress, Ip4PrefixLength, ServiceIPRangeSize, ServiceIPRangeStarti DnsServers.

  • Wartość Network.NetworkPlugin domyślnie to flannel. Flannel jest domyślną siecią CNI dla klastra K3S. W klastrze K8S zmień wartość na NetworkPlugincalico.

  • Oprócz poprzednich parametrów można ustawić następujące parametry zgodnie z konfiguracją wdrożenia, zgodnie z opisem tutaj: LinuxNode.CpuCount, , WindowsNode.CpuCountLinuxNode.DataSizeInGBLinuxNode.MemoryInMBWindowsNode.MemoryInMBWindowsNode.Ip4AddressLinuxNode.Ip4Address, Init.ServiceIPRangeSizei .Network.InternetDisabled

Krok 2. Weryfikowanie pliku konfiguracji

Po zaktualizowaniu pliku aksedge-config.json uruchom narzędzie AksEdgePrompt. To narzędzie otwiera okno programu PowerShell z podwyższonym poziomem uprawnień z załadowanymi modułami. Następnie uruchom następujące polecenie, aby zweryfikować parametry sieciowe przy użyciu Test-AksEdgeNetworkParameters polecenia cmdlet:

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

Krok 3. Tworzenie pełnego klastra wdrażania

Jeśli Test-AksEdgeNetworkParameters zwraca truewartość , możesz przystąpić do tworzenia wdrożenia. Wdrożenie można utworzyć przy użyciu New-AksEdgeDeployment polecenia cmdlet:

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

Polecenie New-AksEdgeDeployment cmdlet automatycznie pobiera plik kubeconfig.

Krok 4. Weryfikowanie wdrożenia

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

Poniżej przedstawiono zrzut ekranu klastra Kubernetes:

Diagram przedstawiający wszystkie uruchomione zasobniki.

Krok 5. Dodawanie węzła procesu roboczego systemu Windows (opcjonalnie)

Przestroga

Węzły procesu roboczego systemu Windows to eksperymentalna funkcja w tej wersji. Aktywnie pracujemy nad tą funkcją.

Jeśli chcesz dodać węzeł systemu Windows do istniejącej maszyny tylko z systemem Linux, możesz uruchomić następujące polecenie:

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

W tym miejscu możesz również określić parametry, takie jak CpuCount i/lub MemoryInMB dla maszyny wirtualnej z systemem Windows.

Możesz użyć wygenerowanego pliku konfiguracji i uruchomić następujące polecenie, aby dodać węzeł systemu Windows

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

Przykładowa konfiguracja dla różnych opcji wdrażania

Przydzielanie zasobów do węzłów

Aby nawiązać połączenie z usługą Arc i wdrożyć aplikacje za pomocą funkcji GitOps, przydziel cztery procesory CPU lub więcej dla (mocy obliczeniowej), 4 GB lub więcej LinuxNode.MemoryinMB dla LinuxNode.CpuCount (pamięci RAM) i przypisz liczbę większą niż 0 do ServiceIpRangeSize. W tym miejscu przydzielamy 10 adresów IP dla usług 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"
            }
        }
    ]
}

węzły Twórca Linux i Windows

Aby uruchomić zarówno płaszczyznę sterowania systemu Linux, jak i węzeł procesu roboczego systemu Windows na maszynie, utwórz plik konfiguracji przy użyciu następującego polecenia:

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

Twórca wdrożenie przy użyciu polecenia :

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

Następne kroki