2016-10-15 83 views
2

我在Google Cloud上有一个Kubernetes群集,我有一个数据库服务,它在mongodb部署前运行。我也有一系列试图连接到该数据存储的微服务。无法连接到Kubernetes群集中的mongodb服务

但是,他们似乎无法找到主机。

apiVersion: v1 
kind: Service 
metadata: 
labels: 
    name: mongo 
name: mongo 
spec: 
ports: 
- port: 27017 
    targetPort: 27017 
selector: 
    name: 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> 
+0

你试图从哪里连接? – BrettJ

+0

@BrettJ在我的服务之一,我有一个去API。因此,我的服务位于API窗格中,我的mongo服务器位于另一个窗格中,位于另一个服务的后面。所以有API Pod和数据存储区Pod。 –

+0

所以你说连接到mongo.default:27017不能从一个pod内部工作? – iamnat

回答

5

首先,检查创建服务

kubectl describe svc mongo

您应该看到它显示它已创建并路由到您的群集的IP。如果你想知道你的吊舱的IP是什么,你可以检查出来通过

kubectl get po | grep mongo

应返回类似:mongo-deployment-<guid>-<guid>,然后做

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

你应该确保荚正确启动,并说Running不像ImagePullBackoff。它看起来像是从gcePersistentDisk挂载一个卷。如果您看到您的吊舱挂在ContainerCreating状态,很可能您没有正确安装磁盘。请确保您在尝试之前create the diskmount it as a volume

如果它看起来像你的服务是正确的路由,那么你可以检查你的吊舱的日志,以确保它正确地开始蒙戈:

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

如果它看起来像豆荚和日志是正确的,你可以Exec的进入吊舱,并确保蒙戈实际上是启动和工作: kubectl exec -it mongo-deployment-<guid>-<guid> sh

这应该让你进入容器(POD),然后你可以尝试something like this,看看你的数据库运行。

+1

想通了! Mongodb抱怨缺少CPU资源,我将其升级,重新设置了堆栈,并立即连接!您的调试技巧非常有用,非常感谢! –

相关问题