Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando você cria um recurso do balanceador de carga em um cluster do Serviço de Kubernetes do Azure (AKS), o endereço IP público atribuído a ele é válido apenas durante a vida útil desse recurso. Se você excluir o serviço de Kubernetes, o balanceador de carga e o endereço IP associados também serão excluídos. Se você quiser atribuir um endereço IP específico ou manter um endereço IP para serviços de Kubernetes reimplantados, crie e use 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 serviço de Kubernetes.
Antes de começar
- Será necessária a CLI do Azure versão 2.0.59 ou posterior instalada e configurada. Execute
az --versionpara encontrar a versão. Para instalar ou atualizar, consulte Instalar CLI do Azure. - Este artigo aborda o uso de um IP de SKU Standard com um balanceador de carga de SKU Standard. Para obter mais informações, confira Tipos de endereço IP e métodos de alocação no Azure.
Criar um cluster AKS
Crie um grupo de recursos do Azure usando o comando
az group create.az group create --name myNetworkResourceGroup --location eastusCrie um cluster do 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 a consulta para 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 do nó usando o comando
az network public-ip create.az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method staticImportante
O AKS não dá mais suporte ao Load Balancer Básico. Se o cluster usar um Load Balancer Básico, atualize para Standard Load Balancer 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 você criou e consulte oipAddress.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Criar um serviço do Kubernetes com o endereço IP estático
Crie um arquivo nomeado
load-balancer-service.yamle copie o conteúdo do arquivo YAML a seguir. Forneça o nome do recurso IP público (myAKSPublicIP) que você criou na seção Criar um endereço IP estático e o nome do grupo de recursos do nó.A identidade do plano de controle do AKS tem permissões de Colaborador no grupo de recursos dos nós por padrão, portanto, o IP público criado neste artigo não requer uma atribuição de função adicional. Se você usar um IP público de entrada ou de saída em um grupo de recursos diferente, conceda à identidade do plano de controle as permissões necessárias nesse grupo de recursos. Para obter mais informações, consulte Identidades gerenciadas no AKS.
Importante
A propriedade
loadBalancerIPem um manifesto de serviço do Kubernetes foi descontinuada, em conformidade com o Kubernetes upstream. Os serviços existentes continuam funcionando sem modificações, mas use anotações de serviço em vez disso.Annotation 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-balancerObservação
Adicionar a anotação
service.beta.kubernetes.io/azure-pip-namegarante a criação mais eficiente do LoadBalancer e é altamente recomendável para evitar possíveis limitações.Defina um rótulo DNS voltado ao 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 do Azure e um domínio de nível superior. O valor da anotação precisa ser exclusivo no local do Azure, por isso recomendamos que você use um rótulo suficientemente qualificado. O Azure adiciona automaticamente um sufixo padrão no local selecionado, como<location>.cloudapp.azure.com, ao nome fornecido, criando o FQDN.Observação
Se desejar publicar o serviço no seu próprio domínio, consulte DNS do Azure e o projeto 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-balancerAntes de criar o serviço, verifique se o cluster possui uma carga de trabalho com pods que usam o rótulo
app: azure-load-balancer. O manifesto do serviço seleciona pods com esse rótulo, mas não cria uma implantaçã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 pronto em execução.
kubectl get pods -l app=azure-load-balancerPara ver o rótulo DNS do balanceador de carga, use o comando
kubectl describe.kubectl describe service azure-load-balancerO rótulo DNS será listado sob o
Annotations, como mostrado no exemplo resumido de saída a seguir:Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
Solucionar problemas
Esta seção pressupõe que você concluiu a criação de um endereço IP estático, tentou as etapas em Criar um serviço kubernetes com o endereço IP estático e tem um cluster AKS em execução. 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 a identidade do plano de controle do AKS não puder acessar esse grupo de recursos, a criação do serviço do balanceador de carga falhará. Para solucionar problemas, examine as anotações de 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 exibe informações sobre o recurso de serviço do Kubernetes. O seguinte exemplo de saída mostra um Warning no Events: "user supplied IP address was not found." Neste cenário, verifique se a anotação azure-pip-name corresponde ao nome do recurso de IP público estático e 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óximas etapas
Para obter mais controle sobre o tráfego de rede para seus aplicativos, use o complemento de roteamento de aplicativos para AKS. Para saber mais sobre o complemento de roteamento de aplicativos, confira Entrada do NGINX gerenciada com o complemento de roteamento de aplicativos.