Planowanie węzłów Flex dla AKS (wersja zapoznawcza)

Ważna

Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:

Węzły Flex rozszerzają klaster Azure Kubernetes Service (AKS) na maszyny z systemem Linux zarządzane poza pulami węzłów zarządzanych przez klaster Azure. Przed dodaniem węzła flex wybierz, w jaki sposób host uwierzytelnia się w usłudze Azure, jak uzyskuje dostęp do serwera interfejsu API Kubernetes oraz jak ruch sieciowy jest kierowany między środowiskami AKS i węzłów flex.

Ten artykuł pomaga podjąć te decyzje, zaplanować nienakładające się zakresy adresów i utworzyć współdzielony plik środowiska dla pozostałych artykułów dotyczących wdrażania.

Zanim rozpoczniesz

  • Zapoznaj się z omówieniem węzłów flex na potrzeby usługi AKS.
  • Zapoznaj się z zagadnieniami dotyczącymi tożsamości i dostępu dla węzłów Flex.
  • Zapoznaj się z pojęciami z zakresu sieci dla węzłów flex.
  • Użyj środowiska Bash zgodnego z systemem Linux, które ma wymagane narzędzia i dostęp do sieci. W tej serii wdrożeń to środowisko jest nazywane środowiskiem Bash. Oddzielna maszyna przyłączona do klastra jest hostem elastycznego węzła.
  • Zainstaluj Azure CLI. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest zainstalowana. Aby zainstalować lub uaktualnić, zobacz Zainstaluj Azure CLI.
  • Zaloguj się do Azure przy użyciu konta, które może odczytać docelową subskrypcję i konfigurację sieci wirtualnej.
  • Przygotuj istniejącą sieć wirtualną Azure i podsieć dla węzłów usługi AKS zarządzanych przez Azure. Sieć wirtualna może znajdować się w innej grupie zasobów niż klaster usługi AKS. W takim przypadku upewnij się, że tożsamość klastra usługi AKS ma wymagane uprawnienia w podsieci.

Podejmowanie decyzji dotyczących wdrażania

Zaplanuj następujące decyzje przed utworzeniem lub skonfigurowaniem zasobów.

Decyzja Opcje Co kontroluje decyzja
Tożsamość hosta Tożsamość zarządzana, tożsamość zarządzana usługi Azure Arc lub nazwa główna usługi Jak agent flex node uwierzytelnia się w Azure
Dostęp do interfejsu API usługi AKS Publiczny lub prywatny klaster usługi AKS Jak środowisko Bash i hosty węzłów flex ustalają adres serwera API Kubernetes i łączą się z nim
Łączność z węzłem Flex Łączność warstwy 3 lub brama Unbounded-Net WireGuard Jak komunikują się węzły zarządzane przez usługę AKS, węzły elastyczne, zasobniki i usługi Kubernetes

Te decyzje dotyczą różnych części wdrożenia. Na przykład wybranie publicznego punktu końcowego interfejsu API usługi AKS nie powoduje utworzenia łączności sieciowej między węzłami zarządzanymi przez usługę AKS i hostami węzłów flex.

Wybieranie tożsamości hosta

Użyj tabeli decyzji w pojęciach związanych z tożsamością i dostępem dla węzłów Flex, aby wybrać tożsamość platformy Azure używaną przez agenta węzła Flex.

Tożsamość hosta autoryzuje operacje platformy Azure. Nie zastępuje łączności sieciowej ani konfiguracji bootstrap Kubernetes, których host potrzebuje, aby dołączyć do klastra. Nie przechowuj poświadczeń we współdzielonym pliku środowiskowym.

Wybieranie dostępu do publicznego lub prywatnego interfejsu API usługi AKS

Serwer interfejsu API Kubernetes jest punktem końcowym zarządzania klastra. Środowisko Bash oraz host każdego węzła flex muszą być w stanie rozwiązać nazwę tego punktu końcowego i nawiązać z nim połączenie.

  • Dostęp do publicznego interfejsu API usługi AKS używa zabezpieczonego publicznego punktu końcowego. Uwierzytelnianie i autoryzacja platformy Kubernetes nadal kontrolują dostęp do klastra. Publiczny punkt końcowy interfejsu API nie uwidacznia aplikacji działających w klastrze.
  • Prywatny dostęp do interfejsu API usługi AKS korzysta z prywatnego punktu końcowego w sieci wirtualnej AKS. Uruchom polecenia programu Azure CLI, kubectl oraz polecenia konfiguracji klastra w środowisku Bash uruchomionym na maszynie podłączonej do tej sieci prywatnej. Sieć flex node musi być również w stanie rozpoznać prywatną nazwę DNS klastra i kierować ruch do prywatnego punktu końcowego.

Wdrożenia węzłów Flex obsługują zarówno publiczny, jak i prywatny dostęp do serwera API. Ścieżka prywatna wymaga dodatkowej konfiguracji DNS, routingu i wykonywania poleceń, wywoływanej tam, gdzie ma zastosowanie. Aby uzyskać ogólne wskazówki dotyczące usługi AKS, zobacz Planowanie sieci płaszczyzny sterowania dla usługi AKS, Tworzenie prywatnego klastra usługi AKS i Nawiązywanie połączenia z prywatnym klastrem usługi AKS.

Wybierz połączenie z węzłem Flex

Ta seria wdrożeń tworzy klaster usługi AKS bez wbudowanej wtyczki sieciowej i instaluje Unbounded-Net w węzłach zarządzanych przez usługę AKS i węzłach flex. Unbounded-Net przypisuje zakresy adresów IP podów i konfiguruje trasowanie między środowiskami AKS i elastycznych węzłów. W tym artykule opisano ten przepływ pracy. Inne konfiguracje CNI lub konfiguracje sieci mogą wymagać odmiennej konfiguracji trasowania, zapory sieciowej, DNS, bramy sieciowej, zabezpieczeń i cyklu życia. Opis modelu sieci dla publicznej wersji zapoznawczej znajduje się w artykule Pojęcia dotyczące sieci dla węzłów Flex.

Zapewniasz bazowe połączenie sieciowe między środowiskami AKS i Flex Node. Łączność w warstwie 3 oznacza, że obie sieci węzłów mogą już kierować pakiety IP do adresów węzłów drugiej sieci, w obu kierunkach. Wybierz metodę pasującą do istniejącej sieci:

Metoda łączności Kiedy należy go używać
Peering sieci wirtualnych Klaster AKS i hosty węzłów flex znajdują się w sieciach wirtualnych platformy Azure, w tym w sieciach wirtualnych w różnych regionach.
Brama sieci VPN Hosty węzłów flex znajdują się w środowisku lokalnym lub innej sieci łączącej się z Azure za pośrednictwem zaszyfrowanej sieci VPN typu lokacja-lokacja.
ExpressRoute Twoja organizacja używa dedykowanego połączenia prywatnego między siecią a Azure.
brama WireGuard Unbounded-Net Sieci AKS i węzłów Flex nie mają prywatnego połączenia routowanego. Konfigurujesz i obsługujesz tunele WireGuard w puli węzłów bramy AKS, a te węzły bramy muszą być publicznie dostępne. Zaplanuj pojemność i dostępność bramy, ponieważ ruch podów między środowiskami zależy od tej puli. Zobacz publiczny klaster AKS z laboratorium Unbounded-Net WireGuard.

Przewodnik Microsoft Learn używa łączności warstwy 3 z platformą Unbounded-Net.

AKS API Łączność z węzłem Flex Wskazówki
Public Łączność w warstwie 3 Zalecana konfiguracja
Prywatne Łączność w warstwie 3 Wymaga dodatkowej konfiguracji DNS, routingu i wykonywania poleceń
Public Publiczna brama WireGuard Alternatywna topologia; zobacz laboratoria AKSFlexNode
Prywatne Publiczna brama WireGuard Nieopisane w tej dokumentacji

Note

Aby uzyskać dodatkowe przykłady topologii, zobacz laboratoria AKSFlexNode, w tym przykłady korzystające z publicznego serwera interfejsu API AKS z bramą WireGuard i prywatnym serwerem interfejsu API AKS z siecią zarządzaną przez klienta. Te laboratoria uzupełniają konfigurację udokumentowaną w tym artykule. Te laboratoria mogą używać różnych składników sieciowych i mieć różne obowiązki operacyjne lub pomocy technicznej. Przed rozpoczęciem korzystania z laboratorium zapoznaj się z wymaganiami wstępnymi, ograniczeniami, odpowiednimi wersjami składników i obowiązkami klienta. Laboratorium GitHub nie rozszerza zakresu pomocy technicznej opisanego w Microsoft Learn.

Aby przekazać opinię na temat topologii, która nie jest reprezentowana, otwórz problem w repozytorium AKSFlexNode. Uwzględnij lokalizację hosta węzła Flex, model dostępu do interfejsu API AKS, proponowaną metodę łączności, proponowane rozwiązanie CNI oraz ścieżki sieciowe wymagane w danym scenariuszu.

Planowanie wymaganej łączności sieciowej

Skontaktuj się z administratorem sieci, aby upewnić się, że projekt sieci zapewnia następującą łączność:

Requirement Dlaczego jest to wymagane
Środowisko powłoki Bash może rozpoznać adres serwera API usługi AKS i nawiązać z nim połączenie. To połączenie jest potrzebne do skonfigurowania klastra i zarządzania nim.
Każdy host elastycznego węzła może rozwiązywać problemy z serwerem interfejsu API usługi AKS i uzyskiwać do nich dostęp. Agent flex node i kubelet używają tego połączenia, aby dołączyć do klastra i komunikować się z płaszczyzną sterowania Kubernetes.
Węzły zarządzane przez AKS i hosty węzłów Flex mogą uzyskiwać wzajemny dostęp do swoich prywatnych adresów IP. W przypadku większości metod łączności Unbounded-Net używa sieci węzłów jako ścieżki bazowej między dwoma środowiskami.
Ruch związany z Podami i usługami Kubernetes może być kierowany między węzłami zarządzanymi przez AKS a węzłami flex. Obciążenia wymagają komunikacji między węzłami, systemu DNS klastra i dostępu do usługi Kubernetes.
Płaszczyzna sterowania AKS może łączyć się z kubeletem na węźle flex. AKS używa tej ścieżki do operacji kubeleta, w tym kubectl logs, kubectl exec i kubectl port-forward.

Konfigurujesz zewnętrzną sieć hosta i zarządzasz nią, w tym routingiem, komunikacją równorzędną sieci wirtualnej, połączeniami VPN lub ExpressRoute, regułami zapory i sieciowych grup zabezpieczeń, usługą DNS, ustawieniami serwera proxy oraz konfiguracją Unbounded-Net opisaną w tej serii. Aby uzyskać pełny model odpowiedzialności, zobacz Zasady pomocy technicznej dla węzłów flex.

Ogranicz dostęp do zarządzania hostami do zatwierdzonych adresów źródłowych. W przypadku maszyny wirtualnej Azure skojarz sieciową grupę zabezpieczeń z podsiecią hosta lub interfejsem sieciowym. W przypadku hosta poza platformą Azure zastosuj analogiczne mechanizmy zapory. Jeśli używasz polecenia az vm create do utworzenia hosta węzła elastycznego, sprawdź wszystkie publiczne adresy IP i reguły sieciowej grupy zabezpieczeń utworzone przez to polecenie. Jeśli reguła SSH nie zostanie ograniczona, może zezwalać na połączenia z portem TCP 22 z dowolnego źródła publicznego.

Zbieranie wartości wdrożenia

Pozostałe artykuły ponownie użyją następujących wartości.

Typowe wartości zasobów Azure

Variable Description Kiedy jest używane
SUBSCRIPTION_ID Subskrypcja zawierająca klaster usługi AKS i powiązane zasoby Azure. Każde wdrożenie
RESOURCE_GROUP Grupa zasobów zawierająca klaster AKS. Każde wdrożenie
CLUSTER_NAME Nazwa klastra AKS. Każde wdrożenie
FLEX_POOL_NAME Nazwa elastycznej puli węzłów. Używaj tylko liter i cyfr. Każde wdrożenie
AKS_API_ACCESS Model dostępu do API klastra AKS. Ustaw wartość na public lub private. Przygotowywanie klastra i walidacja łączności interfejsu API
AKS_RESOURCE_ID Identyfikator zasobu platformy Azure klastra AKS. Azure udostępnia tę wartość po wystąpieniu klastra. Nowsze artykuły

Wartości klastra AKS i sieci wirtualnej

Variable Description Kiedy jest używane
LOCATION Region platformy Azure dla klastra AKS. Upewnij się, że ten region spełnia wymagania dotyczące dostępności regionalnej . Tworzenie klastra AKS
AKS_VNET_NAME Nazwa sieci wirtualnej zawierającej podsieć usługi AKS. Znajdowanie i weryfikowanie podsieci usługi AKS
AKS_VNET_RESOURCE_GROUP Grupa zasobów zawierająca sieć wirtualną AKS. Może się różnić od RESOURCE_GROUP. Znajdowanie i weryfikowanie podsieci usługi AKS
AKS_SUBNET_NAME Nazwa podsieci używanej przez węzły usługi AKS zarządzane przez Azure. Znajdowanie i weryfikowanie podsieci usługi AKS
AKS_SUBNET_ID Identyfikator zasobu platformy Azure podsieci AKS. Tworzenie klastra AKS
AKS_NODE_VM_SIZE Rozmiar maszyny wirtualnej platformy Azure dla zarządzanej przez platformę Azure puli węzłów systemowych usługi AKS. Ta wartość nie określa rozmiaru hosta węzła flex. Tworzenie klastra AKS
SERVICE_CIDR Zakres adresów dla usług Kubernetes. Konfigurowanie profilu sieciowego klastra usługi AKS
DNS_SERVICE_IP Adres IP usługi DNS Kubernetes. Konfigurowanie profilu sieciowego klastra usługi AKS

Przed utworzeniem pliku środowiska pobierz identyfikator zasobu podsieci AKS i zakresy adresów podsieci AKS:

az network vnet subnet show \
    --resource-group '<virtual-network-resource-group>' \
    --vnet-name '<virtual-network-name>' \
    --name '<aks-subnet-name>' \
    --query "{ResourceId:id,AddressPrefix:addressPrefix,AddressPrefixes:addressPrefixes}" \
    --output json

Wartości adresów AKS i Unbounded-Net

Używasz funkcji SERVICE_CIDR i DNS_SERVICE_IP do konfigurowania profilu sieciowego klastra usługi AKS. Skonfiguruj zakresy CIDR węzłów i podów, aby utworzyć witryny Unbounded-Net używane w tym przewodniku.

Węzeł AKS, pod AKS, węzeł flex, pod flex oraz zakresy adresów usługi Kubernetes muszą być zgodne z wybraną architekturą sieci i nie mogą nakładać się na siebie nawzajem ani na żadną sieć osiągalną za pośrednictwem komunikacji równorzędnej sieci wirtualnych, sieci VPN lub usługi ExpressRoute. Koordynuj końcowe wartości z administratorem sieci.

Nie kopiuj przykładowych reguł CIDR z innego wdrożenia. CiDRs identyfikują przestrzeń adresową routingu, dlatego ponowne wykorzystanie przykładu nakładającego się na Azure lub połączonych sieci może sprawić, że ruch będzie niejednoznaczny lub uniemożliwić węzłom i zasobnikom dotarcie do siebie.

Variable Description Używane przez
AKS_SUBNET_CIDR Zakres adresów przypisany do podsieci dla węzłów AKS zarządzanych przez platformę Azure. Weryfikacja poprawności sieci wirtualnej platformy Azure i podsieci AKS
AKS_NODE_CIDR Unbounded-Net zakres węzłów lokacji zawierający podsieć węzłów AKS. Lokacja klastra podstawowego Unbounded-Net
AKS_POD_CIDR Pula adresów dla zasobników w węzłach usługi AKS zarządzanych przez Azure. Lokacja klastra podstawowego Unbounded-Net
FLEX_HOST_SUBNET_CIDR Zakres adresów zawierający hosty węzłów flex. Weryfikacja sieci hosta węzła Flex
FLEX_NODE_CIDR Unbounded-Net zakres węzłów lokacji zawierający podsieć hosta flex node. Lokalizacja Unbounded-Net dla węzłów Flex
FLEX_POD_CIDR Pula adresów dla zasobników w węzłach flex. Lokalizacja Unbounded-Net dla węzłów Flex
SERVICE_CIDR Zakres adresów dla usług Kubernetes. Profil sieciowy klastra usługi AKS
DNS_SERVICE_IP Adres IP usługi DNS Kubernetes. Profil sieciowy klastra usługi AKS

Zastosuj następujące reguły do planu adresowego:

  • AKS_SUBNET_CIDR musi być zawarty w pliku AKS_NODE_CIDR.
  • FLEX_HOST_SUBNET_CIDR musi być zawarty w pliku FLEX_NODE_CIDR.
  • DNS_SERVICE_IP musi znajdować się w SERVICE_CIDR.

Te osiem wartości nie jest ośmioma oddzielnymi zakresami. Pięć to niezależne zakresy, które nie mogą się nakładać, dwa to zakresy podsieci zawarte w odpowiadającym im zakresie węzłów lokacji, a jeden jest pojedynczym adresem IP wewnątrz zakresu usług.

Poniższe wartości spełniają każdą regułę w tej sekcji. Traktuj je jako ilustrację relacji, a nie jako wartości domyślne. Przed ich użyciem potwierdź własne wartości względem Azure i połączonej przestrzeni adresowej sieci.

Variable Example Relationship
AKS_NODE_CIDR 10.10.0.0/16 Zakres niezależny
AKS_SUBNET_CIDR 10.10.1.0/24 Zawarte w AKS_NODE_CIDR
AKS_POD_CIDR 10.244.0.0/16 Zakres niezależny
FLEX_NODE_CIDR 10.20.0.0/16 Zakres niezależny
FLEX_HOST_SUBNET_CIDR 10.20.1.0/24 Zawarte w FLEX_NODE_CIDR
FLEX_POD_CIDR 10.245.0.0/16 Zakres niezależny
SERVICE_CIDR 10.96.0.0/16 Zakres niezależny
DNS_SERVICE_IP 10.96.0.10 Wewnątrz SERVICE_CIDR

Przejrzyj bieżące przestrzenie adresowe sieci wirtualnych platformy Azure:

az network vnet list \
    --query "[].{ResourceGroup:resourceGroup,Name:name,AddressPrefixes:addressSpace.addressPrefixes}" \
    --output table

Azure może identyfikować konflikty w zarządzanych zasobach, ale nie może weryfikować zakresów adresów w każdej połączonej sieci lokalnej lub zewnętrznej.

Wartości wersji składnika

Węzły Flex wymagają zgodnych wersji usługi AKS, rozszerzenia Azure CLI, platformy Unbounded-Net i agenta flex node. Użyj wersji wymienionych w tym artykule i nie wybieraj ani nie uaktualnij tych składników niezależnie.

Variable Description
AKS_VERSION Obsługiwana wersja rozwiązania Kubernetes dla klastra usługi AKS.
AKS_PREVIEW_VERSION aks-preview Wersja rozszerzenia interfejsu wiersza polecenia platformy Azure 22.0.0b8 lub nowsza.
UNBOUNDED_VERSION Obsługiwana wersja Unbounded-Net.
AKS_FLEX_NODE_VERSION Obsługiwana wersja agenta flex node.

Dostępność regionalna

Węzły Flex wymagają usługi AKS w wersji v20260904 lub nowszej w regionie hostującym klaster. Usługa AKS automatycznie stosuje te datowane wydania i są one niezależne od wersji Kubernetes ustawionej w AKS_VERSION.

Przed utworzeniem lub wybraniem klastra otwórz kartę Wydanie usługi AKSw monitorze wersji usługi AKS, znajdź swój region i sprawdź wersję w obszarze Aktualnie w operacji. Wersje wydań usługi AKS używają formatu vYYYYMMDD. Jeśli w danym regionie jest widoczne starsze wydanie, poczekaj, aż wymagane wydanie zostanie w nim udostępnione, lub — jeśli wymagania wdrożeniowe na to pozwalają — wybierz region, w którym wymagane wydanie jest dostępne.

Wartość lokalnego obszaru roboczego

Variable Description
WORK_DIR Katalog w środowisku powłoki Bash, w którym pozostałe artykuły przechowują pobrane, wygenerowane pliki i plik kubeconfig klastra. Wartość domyślna to ~/.local/share/aksflexnode/<deployment-name>. Aby zachować te pliki w innym miejscu, takie jak katalog tymczasowy, który zostanie usunięty po wdrożeniu, zmień WORK_DIR wartość w pliku środowiska.

Tworzenie pliku środowiska udostępnionego

Utwórz jeden plik środowiska dla każdego wdrożenia. Plik zapewnia spójność niepoufnych wartości między pozostałymi artykułami i sesjami terminala.

Nie przechowuj tokenów dostępu, danych bootstrap, zawartości kubeconfig, poświadczeń jednostki usługi, certyfikatów, kluczy prywatnych certyfikatów ani kluczy prywatnych SSH w tym pliku.

  1. Wybierz krótką etykietę wdrożenia i utwórz chroniony katalog dla pliku środowiska.

    export FLEXNODE_DEPLOYMENT="flexnode-demo"
    export FLEXNODE_ENV_DIR="${HOME}/.config/aks-flexnode"
    export FLEXNODE_ENV_FILE="${FLEXNODE_ENV_DIR}/${FLEXNODE_DEPLOYMENT}.env"
    
    install -d -m 0700 "${FLEXNODE_ENV_DIR}"
    
  2. Utwórz plik środowiska.

    if [[ -e "${FLEXNODE_ENV_FILE}" ]]; then
        printf 'Environment file already exists: %s\n' "${FLEXNODE_ENV_FILE}" >&2
        false
    else
        install -m 0600 /dev/null "${FLEXNODE_ENV_FILE}"
    
        cat > "${FLEXNODE_ENV_FILE}" <<'EOF'
    set_flexnode_env() {
        if [[ "$#" -ne 2 || ! "$1" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
            printf 'Usage: set_flexnode_env NAME VALUE\n' >&2
            return 2
        fi
    
        local name="$1"
        local value="$2"
        local temporary_file
    
        temporary_file="$(mktemp "$(dirname "${FLEXNODE_ENV_FILE}")/flexnode.env.XXXXXX")" || return 1
        awk -v prefix="export ${name}=" 'index($0, prefix) != 1 { print }' \
            "${FLEXNODE_ENV_FILE}" > "${temporary_file}" || {
            rm -f "${temporary_file}"
            return 1
        }
    
        printf 'export %s=%q\n' "${name}" "${value}" >> "${temporary_file}" || {
            rm -f "${temporary_file}"
            return 1
        }
    
        install -m 0600 "${temporary_file}" "${FLEXNODE_ENV_FILE}" || {
            rm -f "${temporary_file}"
            return 1
        }
    
        rm -f "${temporary_file}"
        export "${name}=${value}"
    }
    
    # Customer inputs
    export SUBSCRIPTION_ID='<subscription-id>'
    export LOCATION='<supported-aks-region>'
    export RESOURCE_GROUP='<aks-resource-group>'
    export CLUSTER_NAME='<aks-cluster-name>'
    export FLEX_POOL_NAME='<flex-node-pool-name>'
    export AKS_API_ACCESS='<public-or-private>'
    
    # AKS virtual network
    export AKS_VNET_NAME='<virtual-network-name>'
    export AKS_VNET_RESOURCE_GROUP='<virtual-network-resource-group>'
    export AKS_SUBNET_NAME='<aks-subnet-name>'
    export AKS_SUBNET_ID='<aks-subnet-resource-id>'
    
    # Network address ranges
    export AKS_SUBNET_CIDR='<aks-node-subnet-cidr>'
    export AKS_POD_CIDR='<aks-pod-cidr>'
    export AKS_NODE_CIDR='<aks-site-node-cidr>'
    export FLEX_HOST_SUBNET_CIDR='<flex-host-subnet-cidr>'
    export FLEX_NODE_CIDR='<flex-site-node-cidr>'
    export FLEX_POD_CIDR='<flex-node-pod-cidr>'
    export SERVICE_CIDR='<kubernetes-service-cidr>'
    export DNS_SERVICE_IP='<kubernetes-dns-service-ip>'
    
    # Azure-managed AKS system node pool
    export AKS_NODE_VM_SIZE='<supported-and-available-aks-node-vm-size>'
    
    # Compatible component versions for flex nodes (preview)
    export AKS_VERSION='1.36.2'
    export AKS_PREVIEW_VERSION='22.0.0b8'
    export UNBOUNDED_VERSION='v0.8.0'
    export AKS_FLEX_NODE_VERSION='v0.2.0'
    
    # Local paths
    export WORK_DIR="${HOME}/.local/share/aksflexnode/${FLEXNODE_DEPLOYMENT}"
    
    # Values recorded by later articles
    export AKS_RESOURCE_ID=''
    export FLEXNODE_KUBECONFIG=''
    export FLEX_POOL_RESOURCE_ID=''
    export FLEX_MACHINE_NAME=''
    export FLEX_HOST_NAME=''
    export FLEX_HOST_SSH_TARGET=''
    export FLEX_HOST_PRIVATE_IP=''
    export HOST_PRINCIPAL_OBJECT_ID=''
    export HOST_IDENTITY_CLIENT_ID=''
    export SSH_PUBLIC_KEY_PATH=''
    export SSH_PRIVATE_KEY_PATH=''
    export VM_RESOURCE_GROUP=''
    export VM_NAME=''
    export VM_RESOURCE_ID=''
    export ARC_RESOURCE_GROUP=''
    export ARC_MACHINE_NAME=''
    export ARC_RESOURCE_ID=''
    export SP_TENANT_ID=''
    export SP_CLIENT_ID=''
    export SP_OBJECT_ID=''
    EOF
    fi
    

    Element pomocniczy set_flexnode_env umożliwia zapisywanie w późniejszych artykułach wartości generowanych przez platformę Azure bez dodawania do pliku duplikatów definicji.

  3. Otwórz ${FLEXNODE_ENV_FILE} w edytorze i zastąp każdą wartość ujętą w nawiasy kątowe. Pozostaw wartości w obszarze Wartości zarejestrowane w kolejnych artykułach puste.

  4. Sprawdź, czy nie pozostały żadne symbole zastępcze.

    if grep -n '<[^>]*>' "${FLEXNODE_ENV_FILE}"; then
        printf 'Replace the unresolved placeholders before you continue.\n' >&2
        false
    else
        printf 'No unresolved placeholders found.\n'
    fi
    
  5. Załaduj plik środowiska, utwórz katalog roboczy i ustaw aktywną subskrypcję Azure.

    source "${FLEXNODE_ENV_FILE}"
    install -d -m 0700 "${WORK_DIR:?Load the deployment environment first.}"
    az account set --subscription "${SUBSCRIPTION_ID}"
    az account show \
        --query "{Name:name,SubscriptionId:id}" \
        --output table
    

    Upewnij się, że zwrócony identyfikator subskrypcji jest zgodny z SUBSCRIPTION_ID.

    Upewnij się, że AKS_API_ACCESS identyfikuje obsługiwaną ścieżkę:

    case "${AKS_API_ACCESS}" in
        public|private)
            printf 'AKS API access: %s\n' "${AKS_API_ACCESS}"
            ;;
        *)
            printf 'Set AKS_API_ACCESS to public or private.\n' >&2
            false
            ;;
    esac
    

    Uruchom każdą nową sesję terminalu, ustawiając etykietę wdrożenia i ładując jego plik środowiska:

    export FLEXNODE_DEPLOYMENT="flexnode-demo"
    export FLEXNODE_ENV_FILE="${HOME}/.config/aks-flexnode/${FLEXNODE_DEPLOYMENT}.env"
    test -s "${FLEXNODE_ENV_FILE}"
    source "${FLEXNODE_ENV_FILE}"
    install -d -m 0700 "${WORK_DIR:?Load the deployment environment first.}"
    

Weryfikowanie wartości planowania

Sprawdź wybraną podsieć usługi AKS.

az network vnet subnet show \
    --resource-group "${AKS_VNET_RESOURCE_GROUP}" \
    --vnet-name "${AKS_VNET_NAME}" \
    --name "${AKS_SUBNET_NAME}" \
    --query "{AddressPrefix:addressPrefix,AddressPrefixes:addressPrefixes,ResourceId:id}" \
    --output json

Upewnij się, że zwrócony identyfikator zasobu i zakres adresowy są zgodne z AKS_SUBNET_ID i AKS_SUBNET_CIDR.

Następny krok

Następnie przygotuj klaster usługi AKS dla węzłów Flex. W następnym artykule utworzysz publiczny lub prywatny klaster AKS i zapiszesz identyfikator zasobu klastra.