Kubernetes: ¿puedo evitar usar GCE Load Balancer para reducir los costos?

10

Estoy implementando un clúster de Kubernetes en GCE usando Gitlab-CI. Me gustaría mantener el costo al mínimo: aquí está mi configuración actual:

  • Los nodos se ejecutan en 3 f1-microinstancias
  • Un pod del sistema que se ejecuta Traefikconfigurado con ServiceTypeLoadBalancer
  • Comodín dns configurado
  • 1 postgres cápsula
  • 1 servidor web pod con ingressconfigurado para Traefik

Me gustaría reducir el costo de mi implementación. La mayor parte del costo reside en el balanceador de carga GCE. ¿Hay alguna forma de usar una dirección IP pública en lugar de un Load Balancer en GCE? Si es así, ¿puedo utilizar la dirección IP asignada al clúster (en lugar de reservar una IP estática)?

Para decirlo de otra manera, ¿hay alguna manera de vincular una ip efímera a un servicio de Kubernetes usando GCE sin un equilibrador de carga?

¿Hay alguna otra configuración que pueda hacer de manera diferente que reduzca el costo en general en GCE?

Mitkins
fuente
1
Puede exponer su servicio utilizando solo el tipo de servicio NodePort, pero eso introducirá algunas limitaciones a su implementación. Para más información visite este enlace .
Kamran

Respuestas:

10

Sí, a través de ExternalIPs. Tenga en cuenta que esto significará que su servicio dejará de funcionar si el nodo que ha dicho IP externo asignado falla, pero si solo está ejecutando 1 maestro, probablemente no le importe mucho.

Servicio de ejemplo:

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

La IP debe ser la IP interna de la instancia de GCE (esto se debe a que GCE DNAT envía el tráfico a las IP internas). El servicio debería ser accesible a través de la IP externa asignada del nodo.

Probablemente desee cambiar el servicio para su controlador de ingreso, de modo que pueda enrutar todas sus aplicaciones a través de una IP.

ConnorJC
fuente
2
Después de aprender sobre DNAT, me di cuenta de que necesitaba configurar una regla de firewall para permitir el tráfico en ciertos puertos a la instancia de GCE. Después de esto pude implementar con éxito su sugerencia. También probé con éxito una NodePortversión
Mitkins, el
2

Prefiero no usar los equilibradores de carga en la nube, hasta que sea necesario, debido al costo y al bloqueo del proveedor.

En cambio, uso esto: https://kubernetes.github.io/ingress-nginx/deploy/

Es un pod que ejecuta un equilibrador de carga para usted. Esa página tiene notas de instalación específicas de GKE.

Michael Cole
fuente