Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz utworzyć i użyć wewnętrznego modułu równoważenia obciążenia, aby ograniczyć dostęp do aplikacji w usłudze Azure Kubernetes Service (AKS). Wewnętrzny moduł równoważenia obciążenia nie ma publicznego adresu IP i sprawia, że usługa Kubernetes jest dostępna tylko dla aplikacji, które mogą uzyskać dostęp do prywatnego adresu IP. Te aplikacje mogą znajdować się w tej samej sieci wirtualnej lub w innej sieci wirtualnej za pośrednictwem komunikacji równorzędnej sieci wirtualnych. W tym artykule przedstawiono sposób tworzenia i używania wewnętrznego modułu równoważenia obciążenia za pomocą usługi AKS.
Ważne
Od 30 września 2025 r. usługa Azure Kubernetes Service (AKS) nie obsługuje już usługi Load Balancer w warstwie Podstawowa. Aby uniknąć potencjalnych zakłóceń usługi, zalecamy użycie usługi Load Balancer w warstwie Standardowa dla nowych wdrożeń i uaktualnienie istniejących wdrożeń do usługi Load Balancer w warstwie Standardowa. Aby uzyskać więcej informacji na temat tego wycofania, zobacz zgłoszenie GitHub dotyczące wycofania i ogłoszenie o wycofaniu na platformie Azure Updates. Aby być na bieżąco z ogłoszeniami i aktualizacjami, śledź notatki o wydaniu AKS.
Zanim rozpoczniesz
- W tym artykule założono, że masz istniejący klaster usługi AKS. Jeśli potrzebujesz klastra usługi AKS, możesz go utworzyć przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Potrzebujesz interfejsu wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej. Uruchom polecenie
az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Jeśli chcesz użyć istniejącej podsieci lub grupy zasobów, tożsamość klastra AKS musi mieć odpowiednie uprawnienia do zarządzania zasobami sieciowymi. Aby uzyskać więcej informacji, zapoznaj się z Konfigurowaniem sieci usługi Azure CNI w usłudze AKS. Jeśli konfigurujesz moduł równoważenia obciążenia tak, aby używał adresu IP w innej podsieci, upewnij się, że tożsamość klastra usługi AKS ma
Readrównież dostęp do tej podsieci.- Aby uzyskać więcej informacji na temat uprawnień, zobacz Delegowanie dostępu do usługi AKS do innych zasobów platformy Azure.
Utwórz wewnętrzny moduł równoważenia obciążenia.
Utwórz manifest usługi o nazwie
internal-lb.yamlz typemLoadBalancerusługi i adnotacjąazure-load-balancer-internal.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appWdróż wewnętrzny moduł równoważenia obciążenia przy użyciu polecenia
kubectl apply. To polecenie tworzy równoważnik obciążenia Azure w grupie zasobów węzłów, łączonej z tą samą siecią wirtualną co klaster AKS.kubectl apply -f internal-lb.yamlWyświetl szczegóły usługi przy użyciu
kubectl get servicepolecenia .kubectl get service internal-appAdres IP wewnętrznego modułu równoważenia obciążenia jest wyświetlany w
EXTERNAL-IPkolumnie, jak pokazano w poniższych przykładowych danych wyjściowych. W tym kontekście External odnosi się do zewnętrznego interfejsu modułu równoważenia obciążenia. Nie oznacza to, że otrzymuje publiczny, zewnętrzny adres IP. Ten adres IP jest dynamicznie przypisywany z tej samej podsieci co klaster usługi AKS.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.248.59 10.240.0.7 80:30555/TCP 2m
Określanie adresu IP
Po określeniu adresu IP modułu równoważenia obciążenia adres IP musi być dostępny w podsieci używanej przez moduł równoważenia obciążenia. Domyślnie moduł równoważenia obciążenia używa tej samej podsieci co klaster usługi AKS. Nie używaj adresu IP zarezerwowanego przez platformę Azure, adresu IP już przypisanego do innego zasobu ani adresu IP z zakresu CIDR usługi Kubernetes.
Aby uzyskać podsieci w sieci wirtualnej, możesz użyć polecenia az network vnet subnet list Azure CLI lub polecenia cmdlet Get-AzVirtualNetworkSubnetConfig programu PowerShell.
Aby uzyskać więcej informacji na temat podsieci, zobacz Dodawanie puli węzłów z unikatową podsiecią.
Jeśli chcesz użyć określonego adresu IP z modułem równoważenia obciążenia, masz dwie opcje: ustaw adnotacje usługi lub dodaj właściwość LoadBalancerIP do manifestu YAML modułu równoważenia obciążenia.
Ważne
Dodawanie właściwości LoadBalancerIP do manifestu YAML modułu równoważenia obciążenia jest wycofywane zgodnie z upstream Kubernetes. Chociaż bieżące użycie pozostaje takie same, a istniejące usługi powinny działać bez modyfikacji, zdecydowanie zalecamy ustawienie adnotacji usługi. Aby uzyskać więcej informacji na temat adnotacji usług, zobacz adnotacje obsługiwane przez usługę Azure Load Balancer.
- Ustaw adnotacje usługi
-
Dodaj właściwość
LoadBalancerIPdo manifestu YAML modułu równoważenia obciążenia
Ustaw adnotacje usługi przy użyciu
service.beta.kubernetes.io/azure-load-balancer-ipv4dla adresu IPv4 iservice.beta.kubernetes.io/azure-load-balancer-ipv6adresu IPv6.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.240.0.25 service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appWyświetl szczegóły usługi przy użyciu
kubectl get servicepolecenia .kubectl get service internal-appAdres IP w kolumnie
EXTERNAL-IPpowinien odzwierciedlać określony adres IP, jak pokazano w następujących przykładowych danych wyjściowych:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.184.168 10.240.0.25 80:30225/TCP 4m
Aby uzyskać więcej informacji na temat konfigurowania modułu równoważenia obciążenia w innej podsieci, zobacz Określanie innej podsieci.
Łączenie usługi Azure Private Link z wewnętrznym modułem równoważenia obciążenia usługi AKS
wymagania dotyczące usługi Private Link
- Klaster musi uruchomić obsługiwaną wersję platformy Kubernetes w usłudze AKS.
- Klaster usługi AKS musi używać modułu równoważenia obciążenia w warstwie Standard z typem puli zaplecza
nodeIPConfiguration. Usługa Private Link Service nie obsługuje podstawowego modułu równoważenia obciążenia Basic Load Balancer ani typu puli zaplecza opartej na adresach IPnodeIP. Aby uzyskać więcej informacji, zobacz ograniczenia usługi Private Link. - Potrzebna jest istniejąca grupa zasobów z siecią wirtualną i podsiecią. Ta grupa zasobów służy do tworzenia prywatnego punktu końcowego. Jeśli nie masz tych zasobów, zobacz Tworzenie sieci wirtualnej i podsieci.
Ważne
usługa Private Link ma następujące ograniczenia:
- usługa Private Link obsługuje tylko ruch IPv4 i obsługuje tylko protokoły transportu TCP i UDP.
- Jeśli usługa używa
externalTrafficPolicy: Localusługi , podsieć usługi Private Link musi być inna niż podsieć zasobnika. Aby użyć tej samej podsieci, ustawexternalTrafficPolicynaCluster. - Jeśli włączysz protokół PROXY i użyjesz
externalTrafficPolicy: Local, musisz skonfigurować niestandardową sondę kondycji, ponieważ domyślna sonda kondycji nie powiedzie się.
Aby uzyskać więcej informacji, zobacz ograniczenia usługi Private Link i ograniczenia integracji usługi Azure Private Link.
Tworzenie połączenia usługi Private Link
Utwórz manifest usługi o nazwie z
internal-lb-pls.yamltypemLoadBalancerusługi iazure-load-balancer-internaladnotacjami iazure-pls-create. Aby uzyskać więcej opcji, zapoznaj się z dokumentem projektowym integracji usługi Azure Private Link.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-pls-create: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-appWdróż wewnętrzny moduł równoważenia obciążenia przy użyciu polecenia
kubectl apply. To polecenie tworzy równoważnik obciążenia Azure w grupie zasobów węzłów, łączonej z tą samą siecią wirtualną co klaster AKS. Tworzy również obiekt usługi Private Link, który łączy się z konfiguracją adresu IP frontonu wewnętrznego modułu równoważenia obciążenia skojarzonego z obiektem usługi Kubernetes.kubectl apply -f internal-lb-pls.yamlWyświetl szczegóły usługi przy użyciu
kubectl get servicepolecenia .kubectl get service internal-appAdres IP wewnętrznego modułu równoważenia obciążenia jest wyświetlany w
EXTERNAL-IPkolumnie, jak pokazano w poniższych przykładowych danych wyjściowych. W tym kontekście External odnosi się do zewnętrznego interfejsu modułu równoważenia obciążenia. Nie oznacza to, że otrzymuje publiczny, zewnętrzny adres IP.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.125.17.53 10.125.0.66 80:30430/TCP 64mWyświetl szczegóły obiektu usługi Private Link przy użyciu
az network private-link-service listpolecenia .# Create a variable for the node resource group AKS_MC_RG=$(az aks show -g myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv) # View the details of the Private Link Service object az network private-link-service list -g $AKS_MC_RG --query "[].{Name:name,Alias:alias}" -o tableDane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
Name Alias -------- ------------------------------------------------------------------------- pls-xyz pls-xyz.abc123-defg-4hij-56kl-789mnop.eastus2.azure.privatelinkservice
Tworzenie prywatnego punktu końcowego w usłudze Private Link
Prywatny punkt końcowy umożliwia prywatne łączenie się z obiektem usługi Kubernetes za pośrednictwem utworzonej usługi Private Link.
Utwórz prywatny punkt końcowy przy użyciu az network private-endpoint create polecenia . Zastąp pls-xyz nazwą usługi Private Link Service zwróconą w poprzednim kroku.
Ustaw --resource-group na docelową grupę zasobów, w której chcesz utworzyć prywatny punkt końcowy. Ustaw --vnet-name i --subnet na sieć wirtualną i podsieć, która zawiera prywatny punkt końcowy. Ustaw --private-connection-resource-id wartość identyfikatora zasobu usługi Private Link pobranego w pliku AKS_PLS_ID.
# Create variables for the Private Link Service
AKS_PLS_NAME=pls-xyz
AKS_PLS_ID=$(az network private-link-service show -g $AKS_MC_RG --name $AKS_PLS_NAME --query id -o tsv)
# Create the private endpoint
az network private-endpoint create \
-g myOtherResourceGroup \
--name myAKSServicePE \
--vnet-name myOtherVNET \
--subnet pe-subnet \
--private-connection-resource-id $AKS_PLS_ID \
--connection-name connectToMyK8sService
Dostosowania usługi Private Link Service za pomocą adnotacji
Aby dostosować zasób PLS, możesz użyć następujących adnotacji:
| Adnotacja | Wartość | Opis | Wymagane | Wartość domyślna |
|---|---|---|---|---|
service.beta.kubernetes.io/azure-pls-create |
"true" |
Wartość logiczna wskazująca, czy należy utworzyć usługę PLS. | Wymagane | |
service.beta.kubernetes.io/azure-pls-name |
<PLS name> |
Ciąg określający nazwę zasobu PLS do utworzenia. | Opcjonalnie | "pls-<LB frontend config name>" |
service.beta.kubernetes.io/azure-pls-resource-group |
Resource Group name |
Ciąg określający nazwę grupy zasobów, w której jest tworzony zasób PLS | Opcjonalnie | MC_resource |
service.beta.kubernetes.io/azure-pls-ip-configuration-subnet |
<Subnet name> |
Ciąg wskazujący podsieć, do której wdrożono usługę PLS. Ta podsieć musi istnieć w tej samej sieci wirtualnej co pula zaplecza technicznego. Adresy IP translatora adresów sieciowych USŁUGI PLS są przydzielane w tej podsieci. | Opcjonalnie | Jeśli service.beta.kubernetes.io/azure-load-balancer-internal-subnet, używana jest ta podsieć ILB. W przeciwnym razie używana jest domyślna podsieć z pliku konfiguracji. |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count |
[1-8] |
Łączna liczba prywatnych adresów IP translatora adresów sieciowych do przydzielenia. | Opcjonalnie | 1 |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address |
"10.0.0.7 ... 10.0.0.10" |
Rozdzielona spacją lista statycznych adresów IP IPv4 do przydzielenia. (Protokół IPv6 nie jest obecnie obsługiwany). Łączna liczba adresów IP nie powinna być większa niż liczba adresów IP określonych w elem service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count. Jeśli określono mniej adresów IP, pozostałe są przydzielane dynamicznie. Pierwszy adres IP na liście jest ustawiony jako Primary. |
Opcjonalnie | Wszystkie adresy IP są przydzielane dynamicznie. |
service.beta.kubernetes.io/azure-pls-fqdns |
"fqdn1 fqdn2" |
Rozdzielona spacją lista w pełni kwalifikowanych nazw domen skojarzonych z usługą PLS. | Opcjonalnie | [] |
service.beta.kubernetes.io/azure-pls-proxy-protocol |
"true" lub "false" |
Wartość logiczna wskazująca, czy protokół TCP PROXY powinien być włączony w usłudze PLS w celu przekazywania informacji o połączeniu, w tym identyfikatora łącza i źródłowego adresu IP. Usługa zaplecza MUSI obsługiwać protokół PROXY lub połączenie kończy się niepowodzeniem. | Opcjonalnie | false |
service.beta.kubernetes.io/azure-pls-visibility |
"sub1 sub2 sub3 … subN" lub "*" |
Oddzielona spacją lista identyfikatorów subskrypcji Azure, dla których jest widoczna usługa Private Link. Użyj "*" , aby uwidocznić usługę PLS dla wszystkich subskrybentów (najmniej restrykcyjne). |
Opcjonalnie | Pusta lista [] wskazująca, że obowiązuje wyłącznie kontrola dostępu oparta na rolach: Ta usługa Private Link jest dostępna tylko dla użytkowników z wymaganymi uprawnieniami kontroli dostępu opartej na rolach (Azure RBAC), w tym dla autoryzowanych użytkowników z innych dzierżaw. (Najbardziej restrykcyjne) |
service.beta.kubernetes.io/azure-pls-auto-approval |
"sub1 sub2 sub3 … subN" |
Rozdzielona spacją lista identyfikatorów subskrypcji Azure, których żądania połączenia PE z usługą PLS są automatycznie zatwierdzane. Lista automatycznego zatwierdzania musi być podzbiorem listy widoczności. | Opcjonalnie | [] |
Użyj wewnętrznego modułu równoważenia obciążenia w sieciach prywatnych
Podczas tworzenia klastra usługi AKS można określić zaawansowane ustawienia sieci. Te ustawienia umożliwiają wdrożenie klastra w istniejącej sieci wirtualnej i podsieci platformy Azure. Możesz na przykład wdrożyć klaster usługi AKS w sieci prywatnej połączonej ze środowiskiem lokalnym i uruchamiać usługi, które są dostępne tylko wewnętrznie.
Aby uzyskać więcej informacji, zobacz konfigurowanie własnych podsieci sieci wirtualnych za pomocą rozwiązania Kubenet lub usługi Azure CNI.
Nie musisz wprowadzać żadnych zmian w poprzednich krokach w celu wdrożenia wewnętrznego modułu równoważenia obciążenia korzystającego z sieci prywatnej w klastrze usługi AKS. Moduł równoważenia obciążenia jest tworzony w grupie zasobów węzła dla klastra usługi AKS i połączony z prywatną siecią wirtualną i podsiecią, jak pokazano w poniższym przykładzie:
kubectl get service internal-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
internal-app LoadBalancer 10.1.15.188 10.0.0.35 80:31669/TCP 1m
Uwaga
Tożsamość klastra używana przez klaster AKS musi mieć co najmniej rolę Współtwórcy sieci w zasobie sieci wirtualnej. Tożsamość klastra można wyświetlić przy użyciu az aks show polecenia , takiego jak az aks show --resource-group <resource-group-name> --name <cluster-name> --query "identity". Rolę Współautora sieci można przypisać za pomocą polecenia az role assignment create, takiego jak az role assignment create --assignee <identity-resource-id> --scope <virtual-network-resource-id> --role "Network Contributor".
Jeśli zamiast tego chcesz zdefiniować rolę niestandardową, potrzebne są następujące uprawnienia:
Microsoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/read
Aby uzyskać więcej informacji, zobacz Dodawanie, zmienianie lub usuwanie podsieci sieci wirtualnej.
Określanie innej podsieci
Dodaj adnotację azure-load-balancer-internal-subnet do usługi, aby określić podsieć modułu równoważenia obciążenia. Określona podsieć musi znajdować się w tej samej sieci wirtualnej co klaster usługi AKS. Po wdrożeniu adres modułu równoważenia EXTERNAL-IP obciążenia jest częścią określonej podsieci.
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: internal-app
Ustaw wartość adnotacji service.beta.kubernetes.io/azure-load-balancer-internal-subnet na ciąg znaków z nazwą podsieci, na przykład "apps-subnet".
Usuwanie modułu równoważenia obciążenia
Moduł równoważenia obciążenia jest usuwany po usunięciu wszystkich jego usług Kubernetes.
Podobnie jak w przypadku dowolnego zasobu Kubernetes, możesz bezpośrednio usunąć usługę, taką jak kubectl delete service internal-app, która również usuwa bazowy moduł równoważenia obciążenia platformy Azure.
Następne kroki
Aby dowiedzieć się więcej na temat usług Kubernetes, zobacz dokumentację usług Kubernetes.