无法连接到Kubernetes群集中的mongodb服务

时间:2016-10-15 10:40:11

标签: mongodb kubernetes google-cloud-platform

我在Google Cloud上有一个Kubernetes群集,我有一个数据库服务,它在mongodb部署之前运行。我还有一系列微服务,它们正在尝试连接到该数据存储区。

然而,他们似乎无法找到主持人。

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

这是我的mongo部署......

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> 

我的一项服务的例子......

{{1}}

1 个答案:

答案 0 :(得分:7)

首先,检查服务是否已创建

kubectl describe svc mongo

您应该看到它显示它已创建并路由到您的pod的IP。如果您想知道您的pod的IP是什么,可以通过

查看

kubectl get po | grep mongo

哪个应该返回类似:mongo-deployment-<guid>-<guid>,然后执行

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

您应确保已正确启动广告连播,并且Running不是ImagePullBackoff。看起来您正在安装gcePersistentDisk的音量。如果你看到你的pod刚刚挂在ContainerCreating状态,你很可能没有正确安装磁盘。在尝试create the disk之前确保mount it as a volume

如果您的服务看起来路由正确,那么您可以检查您的pod的日志以确保它正确启动:

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

如果它看起来像pod和日志是正确的,你可以执行进入pod并确保mongo实际上正在启动和工作: kubectl exec -it mongo-deployment-<guid>-<guid> sh

哪个可以让你进入容器(Pod),然后你可以尝试something like this来查看你的数据库是否正在运行。