Loadbalance Service e ExternalName Service do Kubernetes
- 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: 30008Salve 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:30008Caso 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