Udostępnij za pośrednictwem


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

Uwaga

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

Klaster AKS Edge Essentials można skonfigurować tak, aby działał na wielu maszynach w celu obsługi architektury rozproszonych mikrousług. Usługa AKS Edge Essentials służy do konfiguracji statycznych i nie umożliwia dynamicznego tworzenia/usuwania maszyn wirtualnych 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

To polecenie tworzy plik konfiguracji o nazwie aksedge-config.json, który zawiera konfigurację wymaganą do utworzenia skalowalnego klastra z węzłem systemu Linux. Plik zostanie utworzony w bieżącym katalogu roboczym. Zobacz Konfiguracja wdrożenia JSON, aby uzyskać szczegółowe opisy parametrów konfiguracji (takich jak ustawienia serwera proxy).

Więcej opcji tworzenia pliku konfiguracji można znaleźć w poniższych przykładach.

Kluczowe parametry, które należy zwrócić uwagę na potrzeby skalowalnego wdrożenia platformy Kubernetes, to:

  • Informacje o przełączniku zewnętrznym: Pełne wdrożenie używa przełącznika zewnętrznego w celu umożliwienia komunikacji 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 utworzy przełącznik zewnętrzny o nazwie aksedgesw-ext i użyje 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 karty Wi-Fi dla przełącznika. W tym 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ę sieci 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 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, , Ip4GatewayAddressServiceIPRangeSizeIp4PrefixLength, , ServiceIPRangeStart, i .DnsServers

Ważne

Platforma Kubernetes pod cidr jest 10.42.0.0/16 dla K3s i 10.244.0.0/24 K8s. Platforma Kubernetes service cidr jest 10.43.0.0/16 dla K3s i 10.96.0.0/12 K8s.

  • Wartość domyślna Network.NetworkPlugin to flannel. Flannel jest domyślną siecią CNI klastra K3S. W klastrze K8S zmień wartość na NetworkPlugin calico.
  • Oprócz poprzednich parametrów można ustawić następujące parametry zgodnie z konfiguracją wdrożenia, zgodnie z opisem w tym miejscu: LinuxNode.CpuCount, LinuxNode.MemoryInMB, LinuxNode.DataSizeInGB, LinuxNode.Ip4AddressWindowsNode.Ip4AddressInit.ServiceIPRangeSizeWindowsNode.CpuCountWindowsNode.MemoryInMBi .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)

Uwaga

Węzły procesu roboczego systemu Windows to funkcja eksperymentalna 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ą metodyki GitOps, przydziel cztery procesory CPU lub więcej ( LinuxNode.CpuCount moc obliczeniową), 4 GB lub więcej dla LinuxNode.MemoryinMB (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"
            }
        }
    ]
}

Tworzenie węzłów systemów Linux i Windows

Aby uruchomić zarówno płaszczyznę sterowania systemu Linux, jak i węzeł roboczy 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

Utwórz 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