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


10

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

  • ノードは3つのf1-microインスタンスで実行されます
  • TraefikServiceTypeで構成された実行中のシステムポッドLoadBalancer
  • 構成されたワイルドカードDNS
  • 1 postgres ポッド
  • ingressTraefik用に構成された1つのWebサーバーポッド

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

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

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


1
NodePortサービスタイプのみを使用してサービスを公開できますが、これによりデプロイメントにいくつかの制限が生じます。詳細については、このリンクにアクセスしてください
カムラン2017

回答:


10

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

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


2
DNATのことを学んだ後、GCEインスタンスへの特定のポートのトラフィックを許可するファイアウォールルールを構成する必要があることに気付きました。この後、私はあなたの提案をうまく実行することができました。私もNodePortバージョンのテストに成功しました
Mitkins 2017

2

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.