Я развертываю кластер Kubernetes на GCE с помощью Gitlab-CI. Я бы хотел свести затраты к минимуму - вот моя текущая установка:
f1-micro
экземплярыTraefik
настроен с помощью ServiceType LoadBalancer
postgres
стручокingress
настроен для TraefikЯ хотел бы снизить стоимость развертывания. Большая часть затрат приходится на балансировщик нагрузки GCE. Есть ли способ использовать общедоступный IP-адрес вместо балансировщика нагрузки на GCE? Если да, могу ли я использовать выделенный кластеру IP-адрес (вместо резервирования статического IP-адреса)?
Другими словами, есть ли способ привязать эфемерный ip к сервису Kubernetes с помощью GCE без балансировщика нагрузки?
Могу ли я сделать какую-либо другую конфигурацию, которая снизит стоимость GCE в целом?
Да, через ExternalIP. Имейте в виду, что это будет означать, что ваша служба выйдет из строя, если узел, которому назначен внешний IP-адрес, выйдет из строя, но если вы используете только 1 мастер, вам, вероятно, это не важно.
Пример услуги:
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
ports:
- port: 80
protocol: TCP
selector:
app: myapp
externalIPs:
- a.b.c.d
IP должен быть внутренний IP-адрес экземпляра GCE (это потому, что GCE DNAT направляет трафик на внутренние IP-адреса). Затем служба должна быть доступна через назначенный узлу внешний IP-адрес.
Вероятно, вы захотите изменить службу для вашего контроллера входящего трафика, чтобы вы могли маршрутизировать все свои приложения через один IP-адрес.
Я предпочитаю не использовать облачные балансировщики нагрузки до тех пор, пока это необходимо, из-за стоимости и привязки к поставщику.
Вместо этого я использую это: https://kubernetes.github.io/ingress-nginx/deploy/
Это модуль, который запускает для вас балансировщик нагрузки. На этой странице есть примечания по установке GKE.