Kubernetes - posso evitar o uso do GCE Load Balancer para reduzir custos?

10

Estou implantando um cluster Kubernetes no GCE usando o Gitlab-CI. Gostaria de manter o custo mínimo - eis a minha configuração atual:

  • Nós executados em 3 f1-microinstâncias
  • Um pod de sistema em execução Traefikconfigurado com ServiceTypeLoadBalancer
  • DNS curinga configurado
  • 1 postgres pod
  • 1 pod de servidor da Web ingressconfigurado para Traefik

Eu gostaria de reduzir o custo da minha implantação. A maior parte do custo reside no balanceador de carga GCE. Existe uma maneira de usar um endereço IP público em vez de um Load Balancer no GCE? Em caso afirmativo, posso utilizar o endereço IP alocado para o cluster (em vez de reservar um IP estático)?

Em outras palavras, existe uma maneira de vincular um ip efêmero a um serviço Kubernetes usando o GCE sem um balanceador de carga?

Existe alguma outra configuração que eu possa fazer de maneira diferente que reduza os custos em geral no GCE?

Mitkins
fonte
1
Você pode expor seu serviço usando apenas o tipo de serviço NodePort, mas isso apresentará algumas limitações à sua implantação. Para mais informações visite este link .
Kamran

Respostas:

10

Sim, via ExternalIPs. Esteja ciente de que isso significará que seu serviço será desativado se o nó que disse IP externo atribuído falhar, mas se você estiver executando apenas 1 mestre, provavelmente não se importará muito com isso.

Exemplo de serviço:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
    - port: 80
      protocol: TCP
  selector:
    app: myapp
  externalIPs:
    - a.b.c.d

O IP precisa ser o IP interno da instância do GCE (isso ocorre porque o GCE DNAT transmite o tráfego para os IPs internos). O serviço deve estar acessível por meio do IP externo atribuído ao nó.

Provavelmente, você desejará alterar o serviço do seu controlador de entrada, para poder rotear todos os seus aplicativos através de um IP.

ConnorJC
fonte
2
Depois de aprender sobre a coisa do DNAT, percebi que precisava configurar uma regra de firewall para permitir o tráfego em determinadas portas da instância do GCE. Após isso, pude implementar sua sugestão com sucesso. Eu também testaram com sucesso uma NodePortversão muito
Mitkins
2

Prefiro não usar os balanceadores de carga na nuvem, até que seja necessário, devido ao custo e ao bloqueio do fornecedor.

Em vez disso, uso o seguinte: https://kubernetes.github.io/ingress-nginx/deploy/

É um pod que executa um balanceador de carga para você. Essa página possui notas de instalação específicas do GKE.

Michael Cole
fonte