Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Quando você cria um recurso de balanceador de carga em um cluster do Serviço Kubernetes do Azure (AKS), o endereço IP público atribuído a ele só é válido para a vida útil desse recurso. Se você excluir o serviço Kubernetes, o balanceador de carga associado e o endereço IP também serão excluídos. Se quiser atribuir um endereço IP específico ou manter um endereço IP para serviços Kubernetes reimplantados, você pode criar e usar um endereço IP público estático.
Este artigo mostra como criar um endereço IP público estático e atribuí-lo ao seu serviço Kubernetes.
Antes de começar
- Você precisa da CLI do Azure versão 2.0.59 ou posterior instalada e configurada. Executar
az --versionpara localizar a versão. Para instalar ou atualizar, consulte Install CLI do Azure. - Este artigo aborda o uso de um IP de SKU padrão com um balanceador de carga de SKU padrão . Para obter mais informações, consulte Tipos de endereço IP e métodos de alocação no Azure.
Criar um cluster do AKS
Crie um grupo de recursos do Azure usando o
az group createcomando.az group create --name myNetworkResourceGroup --location eastusCrie um cluster AKS usando o
az aks createcomando.az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
Criar um endereço IP estático
Obtenha o nome do grupo de recursos do nó usando o comando
az aks showe consulte a propriedadenodeResourceGroup.az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsvCrie um endereço IP público estático no grupo de recursos de nós usando o
az network public-ip createcomando.az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method staticImportante
O AKS já não suporta o Basic Balanceador de Carga. Se o seu cluster usar um Basic Balanceador de Carga, atualize para o Balanceador de Carga Standard antes de configurar um endereço IP público estático.
Obtenha o endereço IP público estático usando o
az network public-ip showcomando. Especifique o nome do grupo de recursos do nó e o endereço IP público que criou, e execute uma consulta para oipAddress.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Criar um serviço Kubernetes com o endereço IP estático
Crie um ficheiro nomeado
load-balancer-service.yamle copie o conteúdo do ficheiro YAML seguinte. Forneça o nome do recurso IP público (myAKSPublicIP) que criou na secção Criar um endereço IP estático e o nome do grupo de recursos do nó.A identidade do plano de controlo do AKS tem, por predefinição, permissões de Colaborador no grupo de recursos dos nós, pelo que o IP público criado neste artigo não requer outra atribuição de papel. Se usar um IP público de entrada ou saída num grupo de recursos diferente, conceda à identidade do plano de controlo as permissões necessárias nesse grupo de recursos. Para mais informações, consulte Identidades geridas no AKS.
Importante
A propriedade
loadBalancerIPnum manifesto de serviço do Kubernetes foi preterida na sequência do Kubernetes upstream. Os serviços existentes continuam a funcionar sem alterações, mas, em vez disso, utilize anotações de serviço.Anotação Purpose service.beta.kubernetes.io/azure-pip-nameEspecifique o nome do recurso IP público. service.beta.kubernetes.io/azure-load-balancer-ipv4Especifique um endereço IPv4. service.beta.kubernetes.io/azure-load-balancer-ipv6Especifique um endereço 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-balancerNota
Adicionar a anotação
service.beta.kubernetes.io/azure-pip-nameassegura a criação mais eficiente do balanceador de carga e é altamente recomendada para evitar possíveis limitações.Defina um rótulo DNS voltado para o público para o serviço usando a anotação de serviço
service.beta.kubernetes.io/azure-dns-label-name. Isso publica um nome de domínio totalmente qualificado (FQDN) para seu serviço usando os servidores DNS públicos e o domínio de nível superior do Azure. O valor da anotação deve ser exclusivo dentro do local do Azure, portanto, recomendamos que utilize uma etiqueta suficientemente qualificada. O Azure acrescenta automaticamente um sufixo padrão no local selecionado, como<location>.cloudapp.azure.com, ao nome fornecido, criando o FQDN.Nota
Se você quiser publicar o serviço em seu próprio domínio, consulte DNS do Azure e o projeto de DNS externo .
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-balancerAntes de criar o serviço, certifique-se de que o seu cluster tem uma carga de trabalho com pods que usam a
app: azure-load-balanceretiqueta. O manifesto de serviço seleciona pods com este rótulo mas não cria uma implementação.Crie o serviço usando o
kubectl applycomando.kubectl apply -f load-balancer-service.yamlVerifique se o serviço seleciona pelo menos um pod operacional e pronto.
kubectl get pods -l app=azure-load-balancerPara ver o rótulo DNS do seu balanceador de carga, use o
kubectl describecomando.kubectl describe service azure-load-balancerO rótulo DNS será listado sob o
Annotations, conforme mostrado na seguinte saída de exemplo condensado:Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
Resolução de problemas
Esta secção assume que completou o Criar um endereço IP estático, tentou os passos em Criar um serviço Kubernetes com o endereço IP estático e tem um cluster AKS a correr. Para obter o nome do grupo de recursos do nó, use az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv.
Se o recurso IP público nomeado na service.beta.kubernetes.io/azure-pip-name anotação não existir no grupo de recursos especificado por service.beta.kubernetes.io/azure-load-balancer-resource-group, ou se a identidade do plano de controlo do AKS não conseguir aceder a esse grupo de recursos, a criação do serviço do balanceador de carga falha. Para resolver o problema, reveja as anotações do serviço e os eventos de criação usando o kubectl describe comando. Forneça o nome do serviço especificado no manifesto YAML, conforme mostrado no exemplo a seguir:
kubectl describe service azure-load-balancer
A saída mostra informações sobre o recurso de serviço Kubernetes. O exemplo de saída seguinte mostra um Warning no(a) Events: "user supplied IP address was not found." Neste cenário, certifique-se de que a anotação azure-pip-name corresponde ao nome do recurso de IP público estático e de que a anotação azure-load-balancer-resource-group corresponde ao grupo de recursos que o contém.
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
Próximos passos
Para mais controlo sobre o tráfego de rede para as suas aplicações, use o complemento de encaminhamento de aplicações para AKS. Para mais informações sobre o complemento de roteamento de aplicações, consulte Entrada NGINX gerida com o complemento de encaminhamento de aplicações.