Esta documentação é referente à versão mais recente do GKE no Azure, lançada em novembro de 2021. Consulte as Notas de lançamento para mais informações.
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Balanceamento de carga de rede
Nesta página, mostramos como configurar um balanceador de carga L4 com suporte
de um balanceador de carga Standard do Azure usando clusters do GKE no Azure.
Quando você cria um serviço do tipo LoadBalancer, um GKE no controlador
do Azure configura um
balanceador de carga do Azure.
Como selecionar um balanceador de carga público ou particular
Os balanceadores de carga de Serviço podem ser públicos (com IPs de front-end públicos) ou internos (acessíveis somente por meio de IPs particulares).
Por padrão, um Serviço novo é público. Para criar um balanceador de carga
interno, defina a anotação service.beta.kubernetes.io/azure-load-balancer-internal
como "true" no manifesto.
Como escolher uma sub-rede para balanceadores de carga internos
Ao criar um balanceador de carga interno, os clusters do GKE no Azure precisam escolher
a sub-rede em que colocar o balanceador de carga. Essa sub-rede do balanceador de carga de serviço
padrão é escolhida nos parâmetros de criação do cluster da seguinte maneira:
Se especificado e não vazio, cluster.networking.serviceLoadBalancerSubnetId
Caso contrário, cluster.controlPlane.subnetId
Como alternativa, é possível especificar a sub-rede que serár usada para um determinado balanceador de carga
adicionando a anotação service.beta.kubernetes.io/azure-load-balancer-internal-subnet
ao Serviço. O valor dessa anotação é o nome da sub-rede.
Como criar um LoadBalancer de exemplo
Você cria um balanceador de carga criando uma implantação e expondo essa implantação
com um serviço.
Crie a implantação. Os contêineres nesta implantação detectam atividade na porta 50001.
Salve o seguinte YAML em um arquivo chamado my-deployment-50001.yaml:
Crie um Serviço do tipo LoadBalancer para sua implantação. É possível criar
um balanceador de carga Standard do Azure que seja público ou interno.
Escolha uma das seguintes opções:
Copie um dos seguintes manifestos para um arquivo chamado my-lb-service.yaml.
Para criar um LoadBalancer interno, defina a anotação
service.beta.kubernetes.io/azure-load-balancer-internal
como "true". O YAML a seguir inclui essa anotação.
yaml
apiVersion: v1
kind: Service
metadata:
name: my-lb-service
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
selector:
app: products
department: sales
ports:
- protocol: TCP
port: 60000
targetPort: 50001
Crie o Serviço com kubectl apply:
kubectl apply -f my-lb-service.yaml
Veja o nome do host do Serviço com kubectl get service.
kubectl get service my-lb-service
A saída incluirá uma coluna EXTERNAL-IP com um endereço do
balanceador de carga (público ou particular, dependendo de como o balanceador de carga foi
criado).
Se você criou um balanceador de carga público, será possível se conectar ao
balanceador de carga com curl. Substitua external-ip pelo endereço da saída de
kubectl get service da etapa anterior.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2024-06-26 UTC."],[],[],null,["# Network load balancing\n======================\n\nThis topic shows you how to set up an L4 load balancer backed\nby an Azure Standard Load Balancer using GKE on Azure .\n\nWhen you create a Service of type `LoadBalancer`, a GKE on Azure\ncontroller configures an\n[Azure Load Balancer](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-overview).\n\nBefore you begin\n----------------\n\n- You must [Create a cluster](/kubernetes-engine/multi-cloud/docs/azure/how-to/create-cluster) and configure `kubectl` to access the cluster.\n\nSelecting a public or private load balancer\n-------------------------------------------\n\nService load balancers can be either public --- having public frontend IPs\n--- or internal--- only accessible through private IPs.\n\nBy default, a new Service is public. To create an internal load\nbalancer, you set the `service.beta.kubernetes.io/azure-load-balancer-internal`\nannotation to `\"true\"` in your manifest.\n\nChoosing subnet for internal load balancers\n-------------------------------------------\n\nWhen creating an internal load balancer, GKE on Azure needs to pick\nthe subnet to place the load balancer in. This default service load balancer\nsubnet is chosen from the cluster's creation parameters as follows:\n\n1. If specified and non-empty, `cluster.networking.serviceLoadBalancerSubnetId`\n2. Otherwise, `cluster.controlPlane.subnetId`\n\nAlternately, you can specify the subnet to use for a given load balancer by\nadding the `service.beta.kubernetes.io/azure-load-balancer-internal-subnet`\nannotation to the Service. The value for this annotation is the subnet's name.\n\nCreating an example LoadBalancer\n--------------------------------\n\nYou create a load balancer by creating a deployment and exposing that deployment\nwith a service.\n\n1. Create your deployment. Containers in this Deployment listen on port 50001.\n Save the following YAML to a file named `my-deployment-50001.yaml`:\n\n apiVersion: apps/v1\n kind: Deployment\n metadata:\n name: my-deployment-50001\n spec:\n selector:\n matchLabels:\n app: products\n department: sales\n replicas: 3\n template:\n metadata:\n labels:\n app: products\n department: sales\n spec:\n containers:\n - name: hello\n image: \"gcr.io/google-samples/hello-app:2.0\"\n env:\n - name: \"PORT\"\n value: \"50001\"\n\n2. Create the Deployment with `kubectl apply`:\n\n kubectl apply -f my-deployment-50001.yaml\n\n3. Verify that three Pods are running:\n\n kubectl get pods --selector=app=products\n\n4. Create a Service of type `LoadBalancer` for your deployment. You can create\n an Azure Standard Load Balancer that is either public, or internal.\n Choose from one of the following options.\n\n Copy one of the following manifests to a file named `my-lb-service.yaml`. \n\n ### Public\n\n apiVersion: v1\n kind: Service\n metadata:\n name: my-lb-service\n spec:\n type: LoadBalancer\n selector:\n app: products\n department: sales\n ports:\n - protocol: TCP\n port: 60000\n targetPort: 50001\n\n ### Internal\n\n You create an internal LoadBalancer by setting the annotation\n `service.beta.kubernetes.io/azure-load-balancer-internal`\n to `\"true\"`. The following YAML includes this annotation.\n `yaml\n apiVersion: v1\n kind: Service\n metadata:\n name: my-lb-service\n annotations:\n service.beta.kubernetes.io/azure-load-balancer-internal: \"true\"\n spec:\n type: LoadBalancer\n selector:\n app: products\n department: sales\n ports:\n - protocol: TCP\n port: 60000\n targetPort: 50001`\n5. Create the Service with `kubectl apply`:\n\n kubectl apply -f my-lb-service.yaml\n\n | **Note:** Configuring the load balancer and IP address takes several minutes.\n6. View the Service's address with `kubectl get service`.\n\n kubectl get service my-lb-service\n\n The output will include a column `EXTERNAL-IP` with an address of the\n load balancer (either public or private depending how the load balancer was\n created).\n7. If you have created a public load balancer you can connect to the\n load balancer with `curl`. Replace \u003cvar translate=\"no\"\u003eexternal-ip\u003c/var\u003e with the address\n from the output of `kubectl get service` from the previous step.\n\n curl http://\u003cvar translate=\"no\"\u003eexternal-ip\u003c/var\u003e:60000\n\n The output resembles the following: \n\n Hello, world!\n Version: 2.0.0\n Hostname: my-deployment-50001-84b6dc5555-zmk7q\n\n### Cleaning up\n\nTo remove the Service and Deployment, use `kubectl delete`. \n\n kubectl delete -f my-lb-service.yaml\n kubectl delete -f my-deployment-50001.yaml"]]