Kubernetes - puis-je éviter d'utiliser l'équilibreur de charge GCE pour réduire les coûts?

10

Je déploie un cluster Kubernetes sur GCE à l'aide de Gitlab-CI. J'aimerais garder le coût au minimum - voici ma configuration actuelle:

  • Les nœuds s'exécutent sur 3 f1-microinstances
  • Un module système en cours d'exécution Traefikconfiguré avec ServiceTypeLoadBalancer
  • DNS générique configuré
  • 1 postgres dosette
  • 1 module de serveur Web ingressconfiguré pour Traefik

Je souhaite réduire le coût de mon déploiement. La majeure partie du coût incombe à l'équilibreur de charge GCE. Existe-t-il un moyen d'utiliser une adresse IP publique au lieu d'un équilibreur de charge sur GCE? Si oui, puis-je utiliser l'adresse IP allouée au cluster (au lieu de réserver une adresse IP statique)?

En d'autres termes, existe-t-il un moyen de lier une adresse IP éphémère à un service Kubernetes en utilisant GCE sans équilibreur de charge?

Y a-t-il une autre configuration que je peux faire différemment qui réduira les coûts en général sur GCE?

Mitkins
la source
1
Vous pouvez exposer votre service en utilisant uniquement le type de service NodePort, mais cela introduira certaines limitations à votre déploiement. Pour plus d'informations, visitez ce lien .
Kamran

Réponses:

10

Oui, via ExternalIPs. Sachez que cela signifiera que votre service tombera en panne si le nœud qui a déclaré l'IP externe attribuée échoue, mais si vous exécutez uniquement 1 maître, vous ne vous en souciez probablement pas beaucoup.

Exemple de service:

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

L'IP doit être l' IP interne de l'instance GCE (car GCE DNAT achemine le trafic vers les IP internes). Le service doit alors être accessible via l'adresse IP externe affectée au nœud.

Vous souhaiterez probablement modifier le service de votre contrôleur d'entrée, afin de pouvoir router toutes vos applications via une IP.

ConnorJC
la source
2
Après avoir appris la chose DNAT, j'ai réalisé que je devais configurer une règle de pare-feu pour autoriser le trafic sur certains ports vers l'instance GCE. Après cela, j'ai pu mettre en œuvre votre suggestion avec succès. J'ai aussi testé avec succès une NodePortversion
Mitkins
2

Je préfère ne pas utiliser les équilibreurs de charge cloud, jusqu'à ce que cela soit nécessaire, en raison du coût et du blocage des fournisseurs.

Au lieu de cela, j'utilise ceci: https://kubernetes.github.io/ingress-nginx/deploy/

C'est un pod qui exécute un équilibreur de charge pour vous. Cette page contient des notes d'installation spécifiques à GKE.

Michael Cole
la source