Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když vytvoříte prostředek nástroje pro vyrovnávání zatížení v clusteru Azure Kubernetes Service (AKS), veřejná IP adresa, která je k němu přiřazená, platí jenom po dobu životnosti tohoto prostředku. Pokud odstraníte službu Kubernetes, odstraní se také přidružený nástroj pro vyrovnávání zatížení a IP adresa. Pokud chcete přiřadit konkrétní IP adresu nebo zachovat IP adresu pro znovu nasazené služby Kubernetes, můžete vytvořit a použít statickou veřejnou IP adresu.
V tomto článku se dozvíte, jak vytvořit statickou veřejnou IP adresu a přiřadit ji ke službě Kubernetes.
Než začnete
- Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu
az --version. Pokud chcete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI. - Tento článek popisuje použití IP adresy SKU Standard s vyrovnávačem zatížení SKU Standard. Další informace najdete v tématu Typy IP adres a metody přidělování v Azure.
Vytvoření clusteru AKS
Pomocí příkazu vytvořte skupinu
az group createprostředků Azure.az group create --name myNetworkResourceGroup --location eastusVytvořte AKS cluster pomocí příkazu
az aks create.az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
Vytvoření statické IP adresy
Pomocí příkazu
az aks showzískejte název skupiny prostředků uzlu a dotazujte na vlastnostnodeResourceGroup.az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsvPomocí příkazu vytvořte statickou veřejnou IP adresu ve skupině
az network public-ip createprostředků uzlu.az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method staticDůležité
AKS už nepodporuje nástroj pro vyrovnávání zatížení Basic. Pokud váš cluster používá základní Load Balancer, upgradujte na Standard Load Balancer před konfigurací statické veřejné IP adresy.
Pomocí příkazu získejte statickou veřejnou IP adresu
az network public-ip show. Zadejte název skupiny prostředků uzlu a veřejnou IP adresu, kterou jste vytvořili, a vyhledejteipAddress.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Vytvoření služby Kubernetes se statickou IP adresou
Vytvořte soubor s názvem
load-balancer-service.yamla zkopírujte do obsahu následujícího souboru YAML. Zadejte název prostředku veřejné IP adresy(myAKSPublicIP), který jste vytvořili v oddílu Vytvořit statickou IP adresu a název skupiny prostředků uzlu.Identita řídicí roviny AKS má ve výchozím nastavení oprávnění Přispěvatel ve skupině prostředků uzlu, takže veřejná IP adresa, kterou vytvoříte v tomto článku, nevyžaduje další přiřazení role. Pokud používáte příchozí nebo odchozí veřejnou IP adresu v jiné skupině prostředků, udělte identitě řídicí roviny požadovaná oprávnění pro tuto skupinu prostředků. Další informace najdete v tématu Spravované identity v AKS.
Důležité
Vlastnost
loadBalancerIPv manifestu služby Kubernetes je po upstreamu Kubernetes zastaralá. Stávající služby nadále fungují bez úprav, ale místo toho používají poznámky ke službám.Annotation Purpose service.beta.kubernetes.io/azure-pip-nameZadejte název prostředku veřejné IP adresy. service.beta.kubernetes.io/azure-load-balancer-ipv4Zadejte adresu IPv4. service.beta.kubernetes.io/azure-load-balancer-ipv6Zadejte adresu IPv6. apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name> service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP name: azure-load-balancer spec: type: LoadBalancer ports: - port: 80 selector: app: azure-load-balancerPoznámka
Přidáním anotace
service.beta.kubernetes.io/azure-pip-namezajistíte nejúčinnější vytváření vyrovnávače zatížení a důrazně se doporučuje, aby se zabránilo potenciálnímu omezování.Nastavte pro službu popisek DNS veřejně přístupný pomocí poznámky ke službě
service.beta.kubernetes.io/azure-dns-label-name. Tím se publikuje plně kvalifikovaný název domény (FQDN) pro vaši službu pomocí veřejných serverů DNS Azure a domény nejvyšší úrovně. Hodnota poznámky musí být v rámci umístění Azure jedinečná, proto doporučujeme použít dostatečně kvalifikovaný popisek. Azure automaticky připojí výchozí příponu do vybraného umístění, například<location>.cloudapp.azure.comk zadanému názvu, a vytvoří plně kvalifikovaný název domény.Poznámka
Pokud chcete publikovat službu ve vlastní doméně, podívejte se na Azure DNS a projekt external-dns .
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name> service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label> name: azure-load-balancer spec: type: LoadBalancer ports: - port: 80 selector: app: azure-load-balancerPřed vytvořením služby se ujistěte, že váš cluster obsahuje úlohu s pody, které používají label
app: azure-load-balancer. Manifest služby vybírá pody s tímto štítkem, ale nevytváří Deployment.Vytvořte službu pomocí
kubectl applypříkazu.kubectl apply -f load-balancer-service.yamlOvěřte, že služba vybere alespoň jeden běžící a připravený pod.
kubectl get pods -l app=azure-load-balancerPokud chcete zobrazit popisek DNS vašeho nástroje pro vyrovnávání zatížení, použijte
kubectl describepříkaz.kubectl describe service azure-load-balancerPopisek DNS bude uvedený pod položkou
Annotations, jak je znázorněno v následujícím zhuštěném příkladu výstupu:Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
Řešení potíží
V této části se předpokládá, že jste dokončili vytvoření statické IP adresy, pokusili jste se provést kroky ve službě Kubernetes se statickou IP adresou a máte spuštěný cluster AKS. Chcete-li získat název skupiny prostředků uzlu, použijte az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv.
Pokud prostředek veřejné IP adresy uvedený v anotaci service.beta.kubernetes.io/azure-pip-name neexistuje ve skupině prostředků zadané pomocí service.beta.kubernetes.io/azure-load-balancer-resource-group nebo identita řídicí roviny AKS nemá přístup k této skupině prostředků, vytvoření služby Load Balancer se nezdaří. Při řešení potíží zkontrolujte anotace služby a události vytvoření pomocí příkazu kubectl describe. Zadejte název služby zadané v manifestu YAML, jak je znázorněno v následujícím příkladu:
kubectl describe service azure-load-balancer
Výstup ukazuje informace o prostředku služby Kubernetes. Následující příklad výstupu ukazuje Warning v Events: „user supplied IP address was not found.“ V tomto scénáři zajistěte, aby anotace azure-pip-name odpovídala názvu prostředku statické veřejné IP adresy a anotace azure-load-balancer-resource-group odpovídala skupině prostředků, která ho obsahuje.
Name: azure-load-balancer
Namespace: default
Labels: <none>
Annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name>
service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP
Selector: app=azure-load-balancer
Type: LoadBalancer
IP: 10.0.18.125
IP: 40.121.183.52
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 32582/TCP
Endpoints: <pod-ip>:80
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreatingLoadBalancer 7s (x2 over 22s) service-controller Creating load balancer
Warning CreatingLoadBalancerFailed 6s (x2 over 12s) service-controller Error creating load balancer (will retry): Failed to create load balancer for service default/azure-load-balancer: user supplied IP Address 40.121.183.52 was not found
Další kroky
Pokud chcete mít větší kontrolu nad síťovým provozem do vašich aplikací, použijte doplněk směrování aplikací pro AKS. Další informace o doplňku směrování aplikací najdete v tématu Spravované příchozí přenosy dat NGINX s doplňkem směrování aplikace.