タイプNodePort
を使用して、タイプLoadBalancer
のサービスをインターネットに公開するにはどうすればよいですかなし?私が見つけたすべてのリソースは、ロードバランサーを使用してそれを行っていました。しかし、永続ディスクにマウントしているpostgres
イメージの1つのインスタンスを実行していて、自分のデータベースからデータベースに接続できるようにしたいので、私はユースケースでその高価で不必要な負荷分散をしたくありませんpgAdminを使用するPC。可能であれば、Kubernetes、GCE、ネットワーキングの初心者なので、もう少し詳しく答えてください。
記録ともう少しコンテキストのために、私は、loadBalancerIPが設定されたロードバランサーを介して接続しているAPIサーバーの3つのレプリカを実行しているデプロイメントと、APIサーバーが通信するNodePortサービスを備えたpostgresの1つのインスタンスを実行している別のデプロイメントを持っています私のdb。そして、私の問題は、パブリックアクセスなしでdbを維持することが難しいことです。
サービスタイプとしてNodePort
を使用すると、すぐに機能します。このような:
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
name: http
- port: 443
nodePort: 30443
name: https
selector:
name: nginx
詳細は documentation にあります。 NodePort
を使用する欠点は、プロバイダーのファイアウォールとの統合を自分で行う必要があることです。その開始ポートは、公式ドキュメントの クラウドプロバイダーのファイアウォールの構成 セクションにもあります。
GCEの場合、すべてのノードで上記を公開すると、次のようになります。
gcloud compute firewall-rules create myservice --allow tcp:30080,tcp:30443
これが完了すると、ノードのパブリックIPのいずれかを介してサービスにアクセスできるようになります。あなたはそれらを見つけるでしょう:
gcloud compute instances list
ターミナルウィンドウ(WindowsではコマンドまたはPower Shell)でkubectlを実行して、postgresqlデプロイメントをローカルホストにポートフォワードできます。
kubectl port-forward deployment/my-pg-deployment 5432:5432
このコマンドの実行中(フォアグラウンドで実行)、pgAdminを使用してlocalhost:5432をポイントし、gke上のポッドにアクセスできます。 pgadminを使い終わったら、ターミナルを閉じてください。