Gitlab-CIを使用してKubernetesクラスターをGCEにデプロイしています。コストを最小限に抑えたい-ここに私の現在のセットアップがあります:
f1-micro
インスタンスTraefik
で構成されたLoadBalancer
を実行するシステムポッドpostgres
podingress
が構成された1つのWebサーバーポッド導入コストを削減したい。コストのほとんどはGCEロードバランサーにあります。 GCEでロードバランサーの代わりにパブリックIPアドレスを使用する方法はありますか?その場合、(静的IPを予約する代わりに)クラスタに割り当てられたIPアドレスを利用できますか?
言い換えれば、ロードバランサーなしでGCEを使用して、エフェメラルIPをKubernetesサービスに関連付ける方法はありますか?
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はinternal GCEインスタンスのIPである必要があります(これは、GCEが内部IPへのトラフィックをDNATするためです)。その後、ノードに割り当てられた外部IPを介してサービスにアクセスできるようになります。
おそらく1つのIPを介してすべてのアプリをルーティングできるように、イングレスコントローラーのサービスを変更する必要があります。
コストとベンダーロックインのため、必要になるまでクラウドロードバランサーを使用しないことを好みます。
代わりにこれを使用します: https://kubernetes.github.io/ingress-nginx/deploy/
ロードバランサーを実行するポッドです。そのページには、GKE固有のインストールノートがあります。