Pełne wdrożenie 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 maszyny wirtualnej ani zarządzania cyklem życia klastra, w przeciwieństwie do usługi AKS w chmurze lub AKS w środowisku lokalnym platformy Azure. 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 wielowęzłowego jedna z maszyn jest maszyną główną z węzłem sterowania Kubernetes, a pozostałe maszyny są maszynami pomocniczymi z węzłami roboczymi. 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 jakoEthernet
lubWi-Fi
:# get the list of available adapters in the machine Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
Jeśli utworzono przełącznik wirtualny na Hyper-V, możesz określić szczegóły przełącznika w pliku konfiguracyjnym. Jeśli nie utworzysz przełącznika zewnętrznego i nie uruchomisz polecenia
New-AksEdgeDeployment
w Menedżerze funkcji Hyper-V, usługa AKS Edge Essentials automatycznie utworzy przełącznik zewnętrzny o nazwieaksedgesw-ext
i użyje go do wdrożenia.Uwaga
W tej wersji występuje znany problem z automatycznym tworzeniem zewnętrznego switcha za pomocą polecenia
New-AksEdgeDeployment
, jeśli używasz do tego karty Wi-Fi. W tym przypadku najpierw utwórz przełącznik zewnętrzny przy użyciu menedżera Hyper-V — Menedżera przełącznika wirtualnego, zamapuj przełącznik na adapter Wi-Fi, a następnie podaj szczegóły przełącznika w konfiguracji JSON zgodnie z opisem w tej sekcji.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. Najlepiej jest wiedzieć, jakich bezpłatnych adresów IP można użyć; Można jednak użyć skryptu AksEdge-ListUsedIPv4 s 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
Network
pliku konfiguracji należy podać następujące parametry:ControlPlaneEndpointIp
,Ip4GatewayAddress
,Ip4PrefixLength
,ServiceIPRangeSize
,ServiceIPRangeStart
iDnsServers
.
Ważne
Platforma Kubernetes pod cidr
jest 10.42.0.0/16
dla K3s i 10.244.0.0/24
K8s. Kubernetes service cidr
jest 10.43.0.0/16
dla K3s i 10.96.0.0/12
dla K8s.
-
Arc
: ta sekcja jest wymagana. Podczas wdrażania usługi AKS Edge Essentials parametry usługi Arc są używane do łączenia klastra AKS Edge Essentials z usługą Azure Arc. Aby uzyskać więcej informacji na temat wymaganych parametrów usługi Arc, zobacz nawiązywanie połączenia z dokumentacją usługi Arc.
Ważne
Począwszy od wersji AKS Edge Essentials 1.10.868.0, wymagana jest sekcja Arc
pliku konfiguracji. Połączenie usługi Azure Arc odbywa się automatycznie podczas wdrażania usługi AKS Edge Essentials.
- Wartość domyślna
Network.NetworkPlugin
toflannel
. Flannel jest domyślną siecią CNI klastra K3S. W klastrze K8S zamieńNetworkPlugin
nacalico
. - 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.Ip4Address
WindowsNode.CpuCount
WindowsNode.MemoryInMB
WindowsNode.Ip4Address
Init.ServiceIPRangeSize
i .Network.InternetDisabled
Krok 2. Weryfikowanie pliku konfiguracji
Po zaktualizowaniu pliku aksedge-config.json uruchom narzędzie AksEdgePrompt. Narzędzie otwiera okno PowerShell o podwyższonym poziomie 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 true
, możesz przystąpić do tworzenia wdrożenia. Wdrożenie można utworzyć przy użyciu polecenia cmdlet New-AksEdgeDeployment
.
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
Zrzut ekranu przedstawiający klaster Kubernetes wygląda następująco:
Krok 5. Dodawanie węzła procesu roboczego systemu Windows (opcjonalnie)
Uwaga
Węzły robocze 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
Przydziel zasoby 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"
}
}
]
}