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

Ewa*_*ine 4 mongodb google-cloud-platform kubernetes

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

但是,他们似乎无法找到主持人.

apiVersion: v1
kind: Service
metadata:
 labels:
   name: mongo
 name: mongo
spec:
 ports:
 - port: 27017
   targetPort: 27017
 selector:
   name: mongo
Run Code Online (Sandbox Code Playgroud)

这是我的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
Run Code Online (Sandbox Code Playgroud)

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

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> 
Run Code Online (Sandbox Code Playgroud)

Joe*_*l B 10

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

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.如果你看到你的吊舱只是挂在ContainerCreating状态,你很可能没有正确安装磁盘.在尝试将其作为卷安装之前,请确保创建磁盘.

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

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

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

哪个应该让你进入容器(Pod),然后你可以尝试这样的东西,看看你的数据库是否正在运行.