web-dev-qa-db-ja.com

KubernetesでMongoDbポートを公開してアクセスする方法

私はmongoDBをKubernetesにデプロイしました。データベースは適切に設定されており、内部DNS名を使用してアクセスできます。

これを外部に公開する必要があります。ノードポート/ロードバランサーを使用してポート27017を公開しましたが、IP:ポートを使用してポートに接続できません。 IP:Portを使用するWebアプリケーションの問題に直面していません。データベースに対してそれを行う方法がわかりません。

ブラウザを使用しようとすると、 http:// Kubernetes_Public_IP:NodePort によって次のエラーメッセージが表示されます-ネイティブドライバポートでHTTP経由でMongoDBにアクセスしようとしているようです。

Robomongoを使用してデータベースに接続しています.RoboMongoを使用して、アドレスをKubernetesパブリックIPに設定し、ポートをNodePortに設定すると、次のエラーが発生します-Kubernetes_Public_IP:NodePortに接続できません

ポートを公開し、任意の種類のエージェント(robomongoは不要)を使用してポートに接続するのに助けが必要です。

3
jdoe

Kubernetesでは、ポートを外部に公開する場合は、タイプNodePortまたはLoadBalancerでサービスを使用できます。

タイプLoadBalancerは、Kubernetesに外部ロードバランサーを提供するため、通常、クラウドプロバイダーで使用されます。

したがって、あなたの場合、NodePortはポートを公開する最も簡単な方法です。サービスYAMLの例を次に示します。

kind: Service
apiVersion: v1
metadata:
  name: mongodb-service
spec:
  type: NodePort
  selector:
    app: mongodb
  ports:
    - port: 27017
      nodePort: 32463 
      name: MongoPort

port: 27017では、MongoDBポートを指定しました。これは、通常、Deployment for MongoDBでも指定されています。

nodePort: 32463行で、外部ポートを指定しました。そこでは、30000〜32767の範囲のポートをポストできます。または、作成中にスキップすることもできます。その場合、Kubernetesがポート番号を自動的に割り当て、kubectl describe service mongodb-serviceまたはkubectl get service mongodb-service -o yamlcommandsを使用してポート番号を見つけることができます。

その後は、任意のクライアントを使用できます。 RoboMongo、MongoDBにアクセスします。 nodePort行からではなく、port行から任意のノードとポートのIPアドレスを使用する必要があります。

たとえば、クラスタに外部IPアドレス12.13.14.151、12.13.14.152、12.13.14.153の3つのノードがある場合、12.13.14.151:3246312.13.14.152:3246312.13.14.153:32463のいずれかを使用できます。 RoboMongo接続設定。

サービスの詳細については、次のリンクを確認してください。

発行サービス-サービスタイプ

4
Artem Golenyaev