簡體   English   中英

無法連接到Kubernetes群集中的mongodb服務

[英]Cannot connect to a mongodb service in a Kubernetes cluster

我在Google Cloud上有一個Kubernetes集群,我有一個數據庫服務,它在mongodb部署之前運行。 我還有一系列微服務,它們正在嘗試連接到該數據存儲區。

但是,他們似乎無法找到主持人。

apiVersion: v1
kind: Service
metadata:
 labels:
   name: mongo
 name: mongo
spec:
 ports:
 - port: 27017
   targetPort: 27017
 selector:
   name: mongo

這是我的mongo部署......

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mongo-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: mongo
    spec:
      containers:
      - image: mongo:latest
        name: mongo
        ports:
        - name: mongo
          containerPort: 27017
          hostPort: 27017
        volumeMounts:
          - name: mongo-persistent-storage
            mountPath: /data/db
      volumes:
        - name: mongo-persistent-storage
          gcePersistentDisk:
            pdName: mongo-disk
            fsType: ext4

以及我的一項服務的例子......

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: bandzest-artists
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: bandzest-artists
    spec:
      containers:
      - name: artists-container
        image: gcr.io/<omitted>/artists:41040e8
        ports: 
        - containerPort: 7000
        imagePullPolicy: Always
        env:
        - name: DB_HOST
          value: mongo
        - name: AWS_BUCKET_NAME
          value: <omitted>
        - name: AWS_ACCESS_KEY_ID
          value: <omitted>
        - name: AWS_SECRET_KEY
          value: <omitted> 

首先,檢查是否已創建服務

kubectl describe svc mongo

您應該看到它顯示它已創建並路由到您的pod的IP。 如果你想知道你的pod的IP是什么,你可以通過它來檢查它

kubectl get po | grep mongo

哪個應該返回類似: mongo-deployment-<guid>-<guid> ,然后執行

kubectl describe po mongo-deployment-<guid>-<guid>

你應該確保pod正確啟動,並說Running不像ImagePullBackoff 看起來你正在從gcePersistentDisk安裝一個卷。 如果你看到你的pod剛剛掛在ContainerCreating狀態,你很可能沒有正確安裝磁盤。 在嘗試將其作為卷安裝之前,請確保創建磁盤

如果您的服務看起來路由正確,那么您可以檢查您的pod的日志,以確保它正確啟動mongo:

kubectl logs mongo-deployment-<guid>-<guid>

如果它看起來像pod和日志是正確的,你可以執行進入pod並確保mongo實際上正在啟動和工作: kubectl exec -it mongo-deployment-<guid>-<guid> sh

哪個應該讓你進入容器(Pod),然后你可以嘗試這樣的東西 ,看看你的數據庫是否正在運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM