Chris
Chris

Reputation: 3705

Google Cloud Container: Can not connect to mongodb service

I created a mongodb replication controller and a mongo service. I tried to connect to it from a different mongo pod just to test the connection. But that does not work

root@mongo-test:/# mongo mongo-service/mydb
MongoDB shell version: 3.2.0
connecting to: mongo-service/mydb
2015-12-09T11:05:55.256+0000 E QUERY    [thread1] Error: network error while attempting to run command 'isMaster' on host 'mongo-service:27017'  :
connect@src/mongo/shell/mongo.js:226:14
@(connect):1:6

exception: connect failed

I am not sure what I have done wrong in the configuration. I may miss something here

kubectl get rc                                                                                                                        
CONTROLLER          CONTAINER(S)     IMAGE(S)                                 SELECTOR              REPLICAS   AGE
mongo               mongo            mongo:latest                             name=mongo            1          9s

kubectl get pods                                                                                                                      
NAME                      READY     STATUS             RESTARTS   AGE
mongo-6bnak               1/1       Running            0          1m
mongo-test                1/1       Running            0          21m

kubectl get services                                                                                                                  
NAME                     CLUSTER_IP       EXTERNAL_IP     PORT(S)     SELECTOR                AGE
kubernetes               10.119.240.1     <none>          443/TCP     <none>                  23h
mongo-service            10.119.254.202   <none>          27017/TCP   name=mongo,role=mongo   1m

I configured the RC and Service with the following configs

mongo-rc

{
  "metadata": {
    "name": "mongo",
    "labels": { "name": "mongo" }
  },
  "kind": "ReplicationController",
  "apiVersion": "v1",
  "spec": {
    "replicas": 1,
    "template": {
      "metadata": {
        "labels": { "name": "mongo" }
      },
      "spec": {
        "volumes": [
          {
            "name": "mongo-disk",
            "gcePersistentDisk": {
             "pdName": "mongo-disk",
            "fsType": "ext4"
            }
           }
        ],
        "containers": [
          {
            "name": "mongo",
            "image": "mongo:latest",
            "ports": [{
                "name":"mongo",
              "containerPort": 27017
            }],
            "volumeMounts": [
              {
                "name": "mongo-disk",
                "mountPath": "/data/db"
                }
            ]
          }
        ]
      }
    }
  }
}

mongo-service:

{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "mongo-service"
  },
  "spec": {
    "ports": [
      {
        "port": 27017,
        "targetPort": "mongo"
      }
    ],
    "selector": {
      "name": "mongo",
      "role": "mongo"
    }
  }
}

Upvotes: 0

Views: 1090

Answers (1)

Chris
Chris

Reputation: 3705

Almost a bit embarrassing.

The issue was that I used the selector "role" in the service but did not define it on the RC.

Upvotes: 1

Related Questions