top of page

Loadbalance Service e ExternalName Service do Kubernetes

  • Foto do escritor: Rodrigo Saito
    Rodrigo Saito
  • 20 de mai.
  • 2 min de leitura

Fala pessoal, tudo bem?


Com a utilização de LoadBalance, vamos precisar do componente Cloud Controller manager. Agora, com a utilização do LoadBalance, ele se tornará um componente obrigatório.



O Cloud Provider API fará a comunicação com o Cloud Controller Manager.


A função do LoadBalance é distribuir a carga de trabalçho, conforme a utilização/solicitação de usuários para diferentes Heads/Pods dentro do Cluster do K8s, evitando gargalos nos consumos de serviços.


O Cloud controller manager vai atuar no gerenciamento entre as nuvens ou serviços providos por ela até o Cluster do K8s.



Podemos implementar o LoadBalance facilmente alterando um dos nossos componentes criados. Abra o arquvivo my-nodeport-service.yaml, que tem o conteúdo abaixo, e já faça a alteração conforme indicação:


apiVersion: v1
kind: Pod
metadata:
  name: web-pod
  labels:
    type: web-app
spec:
  containers:
    - name: web-server-apache
      image: httpd
      ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: frontend-service-loadbalancer
spec:
  type: LoadBalancer
  selector:
    type: web-app
  ports:
    - name: http
      port: 80
      targetPort: 80
      nodePort: 30008

Salve o arquivo como my-loadbalancer-service.yaml


Faça a aplicação do arquivo. Se voce não estiver dentro da pasta Download, entre ou vá para a pasta onde o arquivo está salvo:

cd Download
kubectl apply -f my-loadBalancer-service.yaml

Vamos verificar todos os serviços existentes:

kubectl get all

Veja alguns detalhes do serviço:

kubectl describe service/frontend-service-loadbalancer


Vamos fazer um teste do loadBalancer. Para puxar a URL do serviço, digite o comando:

minikube service --url frontend-service-loadbalancer

Vamos testar o acesso com o curl:

curl http://192.168.49.2:30008

Caso esteja tudo certo, irá retornar o html:


Pode também fazer o teste no Browser:



Pronto, fizemos a criacao do LoadBalancer


Por último, vamos fazer a deleção dos componentes criados:

kubectl delete service/frontend-service-loadbalancer
kubectl delete pod/web-pod

Veja os serviços que sobraram:

kubectl get all


ExternalName Service


O ExternalName Service do K8s service para que um serviço de dentro do cluster acesse algo que está fora do Cluster.


São tipos de serviços para serem acessados externamente.


É feito através de serviços sem seletores, dos tipos DNS Cname, A Record



Usando dessa forma, criamos um "ponto fixo" para o restantes dos componentes. Se quisermos alterar a utilizacao do banco de dados para outra nuvem, não teremos que alterar nada, a não ser o apontamente para o novo banco de dados.



Dessa forma, o nosso arquivo externalName, ficaria com o seguinte conteúdo:


apiVersion: v1
kind: Service
metadata:
  name: my-external-database-service
  namespace: production
spec:
  type: ExternalName
  externalName: mydatabase.dbcompany.com

O ExternalName Service vai fazer o processo reverso para chegar até o banco de dados externo que está na nuvem:


Exemplo:


Database: mydatabase.mycompanyname.com

Looking Up: my-external-database-service.production.svc.luster.local


O Looking Up vai ser convertido para

Cname: mydatabase.mycompanyname.com


Cada parte significa:

Service Name = my-external-database-service

Name Space = production

Local Cluster Service = svc.luster.local



Gosto dessa dica?


Muito obrigado e até+!







Comentários


Nunca perca um post. Assine agora!

Caso queira receber noticias sobre o blog, assine!

© 2022 por datalib

  • Ícone do Facebook Cinza
  • Ícone do Linkedin Cinza
bottom of page