Použití interního nástroje pro vyrovnávání zatížení se službou Azure Kubernetes Service (AKS)
K omezení přístupu k aplikacím ve službě Azure Kubernetes Service (AKS) můžete vytvořit a použít interní nástroj pro vyrovnávání zatížení. Interní nástroj pro vyrovnávání zatížení nemá veřejnou IP adresu a zpřístupňuje službu Kubernetes jenom aplikacím, které můžou dosáhnout privátní IP adresy. Tyto aplikace můžou být ve stejné virtuální síti nebo v jiné virtuální síti prostřednictvím partnerského vztahu virtuálních sítí. V tomto článku se dozvíte, jak vytvořit a používat interní nástroj pro vyrovnávání zatížení s AKS.
Důležité
30. září 2025 bude Load Balancer úrovně Basic vyřazen. Další informace najdete v oficiálním oznámení. Pokud aktuálně používáte Load Balancer úrovně Basic, nezapomeňte před datem vyřazení upgradovat na Load Balancer úrovně Standard. Pokyny k upgradu najdete v tématu Upgrade z Load Balanceru úrovně Basic – pokyny.
Než začnete
- Tento článek předpokládá, že máte existující cluster AKS. Pokud potřebujete cluster AKS, můžete ho vytvořit pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal.
- Potřebujete Azure CLI verze 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. - Pokud chcete použít existující podsíť nebo skupinu prostředků, identita clusteru AKS potřebuje oprávnění ke správě síťových prostředků. Informace najdete v tématu Použití sítí kubenet s vlastními rozsahy IP adres v AKS nebo konfigurace sítí Azure CNI v AKS. Pokud konfigurujete nástroj pro vyrovnávání zatížení tak, aby používal IP adresu v jiné podsíti, ujistěte se, že identita clusteru AKS má k této podsíti také přístup pro čtení.
- Další informace o oprávněních najdete v tématu Delegování přístupu AKS k dalším prostředkům Azure.
Vytvořte interní nástroj pro vyrovnávání zatížení.
Vytvořte manifest služby s názvem
internal-lb.yaml
typuLoadBalancer
služby a poznámkouazure-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-app
Pomocí příkazu nasaďte interní nástroj pro
kubectl apply
vyrovnávání zatížení. Tento příkaz vytvoří nástroj pro vyrovnávání zatížení Azure ve skupině prostředků uzlu připojené ke stejné virtuální síti jako cluster AKS.kubectl apply -f internal-lb.yaml
Pomocí příkazu zobrazte podrobnosti o službě
kubectl get service
.kubectl get service internal-app
IP adresa interního nástroje pro vyrovnávání zatížení se zobrazí ve
EXTERNAL-IP
sloupci, jak je znázorněno v následujícím příkladu výstupu. V tomto kontextu externí odkazuje na externí rozhraní nástroje pro vyrovnávání zatížení. Neznamená to, že obdrží veřejnou externí IP adresu. Tato IP adresa se dynamicky přiřazuje ze stejné podsítě jako cluster 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
Zadání IP adresy
Když zadáte IP adresu nástroje pro vyrovnávání zatížení, musí se zadaná IP adresa nacházet ve stejné virtuální síti jako cluster AKS, ale už se nedá přiřadit k jinému prostředku ve virtuální síti. Neměli byste například používat IP adresu v rozsahu určeném pro podsíť Kubernetes v clusteru AKS. Použití IP adresy, která je už přiřazená k jinému prostředku ve stejné virtuální síti, může způsobit problémy s nástrojem pro vyrovnávání zatížení.
K získání podsítí ve virtuální síti můžete použít az network vnet subnet list
příkaz Azure CLI nebo rutinu Get-AzVirtualNetworkSubnetConfig
PowerShellu.
Další informace o podsítích najdete v tématu Přidání fondu uzlů s jedinečnou podsítí.
Pokud chcete použít konkrétní IP adresu s nástrojem pro vyrovnávání zatížení, máte dvě možnosti: nastavit poznámky služby nebo přidat vlastnost LoadBalancerIP do manifestu YAML nástroje pro vyrovnávání zatížení.
Důležité
Přidání vlastnosti LoadBalancerIP do manifestu YAML nástroje pro vyrovnávání zatížení zastaralá po upstreamu Kubernetes. I když současné využití zůstává stejné a očekává se, že stávající služby budou fungovat bez úprav, důrazně doporučujeme místo toho nastavit poznámky ke službám . Další informace o poznámkách služby najdete v tématu Podporované poznámky k Azure LoadBalancer.
- Nastavení poznámek služby
- Přidání vlastnosti LoadBalancerIP do manifestu YAML nástroje pro vyrovnávání zatížení
Nastavte poznámky služby pro
service.beta.kubernetes.io/azure-load-balancer-ipv4
adresu IPv4 aservice.beta.kubernetes.io/azure-load-balancer-ipv6
pro adresu 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-app
Pomocí příkazu zobrazte podrobnosti o službě
kubectl get service
.kubectl get service internal-app
IP adresa ve
EXTERNAL-IP
sloupci by měla odrážet zadanou IP adresu, jak je znázorněno v následujícím příkladu výstupu:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.184.168 10.240.0.25 80:30225/TCP 4m
Další informace o konfiguraci nástroje pro vyrovnávání zatížení v jiné podsíti najdete v tématu Určení jiné podsítě.
Připojení služby Azure Private Link k internímu nástroji pro vyrovnávání zatížení
Než začnete
- Potřebujete Kubernetes verze 1.22.x nebo novější.
- Potřebujete existující skupinu prostředků s virtuální sítí a podsítí. V této skupině prostředků vytvoříte privátní koncový bod. Pokud tyto prostředky nemáte, přečtěte si téma Vytvoření virtuální sítě a podsítě.
Vytvoření připojení služby Private Link
Vytvořte manifest služby s názvem
internal-lb-pls.yaml
typuLoadBalancer
služby aazure-load-balancer-internal
poznámkami.azure-pls-create
Další možnosti najdete v dokumentu návrhu integrace služby 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-app
Pomocí příkazu nasaďte interní nástroj pro
kubectl apply
vyrovnávání zatížení. Tento příkaz vytvoří nástroj pro vyrovnávání zatížení Azure ve skupině prostředků uzlu připojené ke stejné virtuální síti jako cluster AKS. Vytvoří také objekt služby Private Link, který se připojí ke konfiguraci front-endové IP adresy nástroje pro vyrovnávání zatížení přidruženého ke službě Kubernetes.kubectl apply -f internal-lb-pls.yaml
Pomocí příkazu zobrazte podrobnosti o službě
kubectl get service
.kubectl get service internal-app
IP adresa interního nástroje pro vyrovnávání zatížení se zobrazí ve
EXTERNAL-IP
sloupci, jak je znázorněno v následujícím příkladu výstupu. V tomto kontextu externí odkazuje na externí rozhraní nástroje pro vyrovnávání zatížení. Neznamená to, že obdrží veřejnou externí IP adresu.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.125.17.53 10.125.0.66 80:30430/TCP 64m
Pomocí příkazu zobrazte podrobnosti objektu
az network private-link-service list
služby Private Link.# 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 table
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
Name Alias -------- ------------------------------------------------------------------------- pls-xyz pls-xyz.abc123-defg-4hij-56kl-789mnop.eastus2.azure.privatelinkservice
Vytvoření privátního koncového bodu pro službu Private Link
Privátní koncový bod umožňuje privátní připojení k objektu služby Kubernetes prostřednictvím služby Private Link, kterou jste vytvořili.
Pomocí příkazu vytvořte privátní koncový bod
az network private-endpoint create
.# Create a variable for the private link service AKS_PLS_ID=$(az network private-link-service list -g $AKS_MC_RG --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
Vlastní nastavení PLS prostřednictvím poznámek
K přizpůsobení prostředku PLS můžete použít následující poznámky:
Poznámka | Hodnota | Popis | Požaduje se | Výchozí |
---|---|---|---|---|
service.beta.kubernetes.io/azure-pls-create |
"true" |
Logická hodnota označující, jestli se má vytvořit PLS. | Požaduje se | |
service.beta.kubernetes.io/azure-pls-name |
<PLS name> |
Řetězec určující název prostředku PLS, který se má vytvořit. | Volitelné | "pls-<LB frontend config name>" |
service.beta.kubernetes.io/azure-pls-resource-group |
Resource Group name |
Řetězec určující název skupiny prostředků, ve které se vytvoří prostředek PLS | Volitelné | MC_ resource |
service.beta.kubernetes.io/azure-pls-ip-configuration-subnet |
<Subnet name> |
Řetězec označující podsíť, do které se nasadí PLS. Tato podsíť musí existovat ve stejné virtuální síti jako back-endový fond. IP adresy PŘEKLADU adres (NAT) PLS se přidělují v rámci této podsítě. | Volitelné | Pokud service.beta.kubernetes.io/azure-load-balancer-internal-subnet se použije tato podsíť interního nástroje pro vyrovnávání zatížení. Jinak se použije výchozí podsíť z konfiguračního souboru. |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count |
[1-8] |
Celkový počet privátních IP adres PROT, které se mají přidělit. | Volitelné | 0 |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address |
"10.0.0.7 ... 10.0.0.10" |
Seznam statických IP adres IPv4 oddělených mezerami, které se mají přidělit. (V tuto chvíli se protokol IPv6 nepodporuje.) Celkový početIPch service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count Pokud je zadaných méně IP adres, zbytek se dynamicky přidělí. První IP adresa v seznamu je nastavena jako Primary . |
Volitelné | Všechny IP adresy se přidělují dynamicky. |
service.beta.kubernetes.io/azure-pls-fqdns |
"fqdn1 fqdn2" |
Seznam plně kvalifikovaných názvů domén přidružených k PLS je oddělený mezerou. | Volitelné | [] |
service.beta.kubernetes.io/azure-pls-proxy-protocol |
"true" nebo "false" |
Logická hodnota označující, jestli má být v PLS povolený protokol TCP proxy, aby předával informace o připojení, včetně ID propojení a zdrojové IP adresy. Mějte na paměti, že back-endová služba musí podporovat protokol PROXY nebo připojení selžou. | Volitelné | false |
service.beta.kubernetes.io/azure-pls-visibility |
"sub1 sub2 sub3 … subN" nebo "*" |
Seznam ID předplatného Azure oddělených mezerami, pro které je služba private link viditelná. Slouží "*" k vystavení PLS všem dílčím objektům (nejméně omezující). |
Volitelné | Prázdný seznam [] označující pouze řízení přístupu na základě role: Tato služba privátního propojení bude dostupná jenom jednotlivcům s oprávněními řízení přístupu na základě role v rámci vašeho adresáře. (Nejvíce omezující) |
service.beta.kubernetes.io/azure-pls-auto-approval |
"sub1 sub2 sub3 … subN" |
Seznam ID předplatného Azure oddělených mezerami To umožňuje automatické schválení žádostí o připojení PE z předplatných uvedených k PLS. Tato možnost funguje jenom v případě, že je viditelnost nastavená na "*". | Volitelné | [] |
Použití privátních sítí
Při vytváření clusteru AKS můžete zadat upřesňující nastavení sítě. Tato nastavení umožňují nasadit cluster do existující virtuální sítě a podsítí Azure. Cluster AKS můžete například nasadit do privátní sítě připojené k místnímu prostředí a spouštět služby, které jsou přístupné jenom interně.
Další informace najdete v tématu Konfigurace vlastních podsítí virtuální sítě s využitím Kubenetu nebo Azure CNI.
K nasazení interního nástroje pro vyrovnávání zatížení, který používá privátní síť v clusteru AKS, nemusíte provádět žádné změny v předchozích krocích. Nástroj pro vyrovnávání zatížení se vytvoří ve stejné skupině prostředků jako váš cluster AKS, ale je místo toho připojený k privátní virtuální síti a podsíti, jak je znázorněno v následujícím příkladu:
$ 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
Poznámka:
Identita clusteru používaná clusterem AKS musí mít alespoň roli Přispěvatel sítě v prostředku virtuální sítě. Identitu clusteru můžete zobrazit pomocí az aks show
příkazu, například az aks show --resource-group <resource-group-name> --name <cluster-name> --query "identity"
. Roli Přispěvatel sítě můžete přiřadit pomocí az role assignment create
příkazu, například az role assignment create --assignee <identity-resource-id> --scope <virtual-network-resource-id> --role "Network Contributor"
.
Pokud chcete místo toho definovat vlastní roli , potřebujete následující oprávnění:
Microsoft.Network/virtualNetworks/subnets/join/action
Microsoft.Network/virtualNetworks/subnets/read
Další informace najdete v tématu Přidání, změna nebo odstranění podsítě virtuální sítě.
Zadání jiné podsítě
Přidejte poznámku
azure-load-balancer-internal-subnet
ke službě a zadejte podsíť vašeho nástroje pro vyrovnávání zatížení. Zadaná podsíť musí být ve stejné virtuální síti jako cluster AKS. Při nasazení je adresa nástrojeEXTERNAL-IP
pro vyrovnávání zatížení součástí zadané podsítě.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
Odstranění nástroje pro vyrovnávání zatížení
Nástroj pro vyrovnávání zatížení se odstraní, když se odstraní všechny jeho služby.
Stejně jako u jakéhokoli prostředku Kubernetes můžete přímo odstranit službu, například kubectl delete service internal-app
, která také odstraní základní nástroj pro vyrovnávání zatížení Azure.
Další kroky
Další informace o službách Kubernetes najdete v dokumentaci ke službám Kubernetes.
Azure Kubernetes Service