web-dev-qa-db-ja.com

Kubernetes-GCEロードバランサーを使用してコストを削減することを回避できますか?

Gitlab-CIを使用してKubernetesクラスターをGCEにデプロイしています。コストを最小限に抑えたい-ここに私の現在のセットアップがあります:

  • ノードは3で実行されますf1-microインスタンス
  • ServiceType Traefikで構成されたLoadBalancerを実行するシステムポッド
  • 構成されたワイルドカードDNS
  • 1 postgrespod
  • Traefik用にingressが構成された1つのWebサーバーポッド

導入コストを削減したい。コストのほとんどはGCEロードバランサーにあります。 GCEでロードバランサーの代わりにパブリックIPアドレスを使用する方法はありますか?その場合、(静的IPを予約する代わりに)クラスタに割り当てられたIPアドレスを利用できますか?

言い換えれば、ロードバランサーなしでGCEを使用して、エフェメラルIPをKubernetesサービスに関連付ける方法はありますか?

GCEで一般的にコストを削減するために、別の方法で実行できる他の構成はありますか?

10
Mitkins

はい、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はinternal GCEインスタンスのIPである必要があります(これは、GCEが内部IPへのトラフィックをDNATするためです)。その後、ノードに割り当てられた外部IPを介してサービスにアクセスできるようになります。

おそらく1つのIPを介してすべてのアプリをルーティングできるように、イングレスコントローラーのサービスを変更する必要があります。

10
ConnorJC

コストとベンダーロックインのため、必要になるまでクラウドロードバランサーを使用しないことを好みます。

代わりにこれを使用します: https://kubernetes.github.io/ingress-nginx/deploy/

ロードバランサーを実行するポッドです。そのページには、GKE固有のインストールノートがあります。

2
Michael Cole