2017-12-30 19 views
0

私は、Google Kubernetes EngineのKubernetesクラスタでCockroachDBインスタンスを実行しています。ポート26257を公開しようとしているので、ローカルマシンから接続できます。KubernetesのCockroachDBを公開IPに公開

this answerに記載されているように、ポッドへのポート転送は機能しません。

私はサービスに自分のドメイン名パスからマップするために使用されているnginxの-進入コントローラを持っているので、私はそれを使用しようとしました:私はNodePortにCLUSTERIPから私のDB-cockroachdb-公共サービスを変更

type: NodePort 

私はnginxのコントローラYAMLにこれらの行を追加しました:私の入口YAMLへ

-name: postgresql 

nodePort: 30472 

port: 26257 

protocol: TCP 

targetPort: 26257 

と、これらの行を:

- host: db.mydomain.com 
    http: 
    paths: 
    - path:/
     backend: 
     serviceName: db-cockroachdb-public 
     servicePort: 26257 

ただし、データベースに接続できません - 接続は拒否されます。私もnginxのコントローラでSSLリダイレクトを無効にしようとしましたが、それでも動作しません。

私もConfigMapを試してみましたが、それは何もしませんでした。

https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md 

答えて

2

これを解決する方法はいくつかあります。ほとんどはあなたの入力設定の変更や、あなたがサービスに接続する方法に関係しています。もう一つの選択肢は、入港機械の必要性を排除するためにポートフォワーディングを行うことです。

CockroachDB設定ファイルを少し修正することで、ポート転送を動作させることができます。 the invocation of the Cockroach binary--hostフラグの名前を--advertise-hostに変更してください。こうすることで、プロセスはホスト名に加えてlocalhostをリッスンし、ポート転送を行います。

編集:CockroachDBリポジトリのデフォルト設定を--hostの代わりに--advertise-hostに変更しましたので、デフォルトでポート転送が動作します。

0

それは技術的にnginxのインスタンスを通じてプロキシCockroachDBに動作する必要がある場合、私は知りませんが、あなたのセットアップは別の理由で失敗しました。 rulesセクションでservicePortを指定すると、どのポートがサービスに公開されているかをk8に伝えます。マッピング自体は、デフォルトではポート80/443になります。希望のポートではありません。したがって、あなたの場合はポート80に尋ねるようにしてください。

関連する問題