私は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は不要)を使用してポートに接続するのに助けが必要です。
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 yaml
commandsを使用してポート番号を見つけることができます。
その後は、任意のクライアントを使用できます。 RoboMongo、MongoDBにアクセスします。 nodePort
行からではなく、port
行から任意のノードとポートのIPアドレスを使用する必要があります。
たとえば、クラスタに外部IPアドレス12.13.14.151、12.13.14.152、12.13.14.153の3つのノードがある場合、12.13.14.151:32463
、12.13.14.152:32463
、12.13.14.153:32463
のいずれかを使用できます。 RoboMongo接続設定。
サービスの詳細については、次のリンクを確認してください。