服务主机/端口未定义,Kubernetes / Google容器引擎

我有一个名称为mongodb的服务。 根据文档,通过$ MONGODB_SERVICE_HOST和$ MONGODB_SERVICE_PORT,服务主机和端口应该可用于同一集群中的其他Pod。

但是,这些都没有在我的前端豆荚中设置。 有什么要求这个工作?

前端-controller.json

{ "id": "frontend", "kind": "ReplicationController", "apiVersion": "v1beta1", "desiredState": { "replicas": 1, "replicaSelector": {"name": "spatula", "role": "frontend"}, "podTemplate": { "desiredState": { "manifest": { "version": "v1beta1", "id": "frontend", "containers": [{ "name": "frontend", "image": "gcr.io/crafty_apex_841/spatula_frontend", "cpu": 100, "ports": [{"name": "spatula-server", "containerPort": 80}] }] } }, "labels": { "name": "spatula", "role": "frontend" } } }, "labels": { "name": "spatula", "role": "frontend" } } 

前端-service.json

 { "apiVersion": "v1beta1", "kind": "Service", "id": "frontend", "port": 80, "containerPort": "spatula-server", "labels": { "name": "spatula", "role": "frontend" }, "selector": { "name": "spatula", "role": "frontend" }, "createExternalLoadBalancer": true } 

MongoDB的-service.json

 { "apiVersion": "v1beta1", "kind": "Service", "id": "mongodb", "port": 27017, "containerPort": "mongodb-server", "labels": { "name": "spatula", "role": "mongodb" }, "selector": { "name": "spatula", "role": "mongodb" } } 

MongoDB的-controller.json

 { "id": "mongodb", "kind": "ReplicationController", "apiVersion": "v1beta1", "desiredState": { "replicas": 1, "replicaSelector": {"name": "spatula", "role": "mongodb"}, "podTemplate": { "desiredState": { "manifest": { "version": "v1beta1", "id": "mongodb", "containers": [{ "name": "mongodb", "image": "dockerfile/mongodb", "cpu": 100, "ports": [{"name": "mongodb-server", "containerPort": 27017}] }] } }, "labels": { "name": "spatula", "role": "mongodb" } } }, "labels": { "name": "spatula", "role": "mongodb" } } 

服务:

 $ gcloud preview container services list NAME LABELS SELECTOR IP PORT mongodb name=spatula,role=mongodb name=spatula,role=mongodb 10.111.240.154 27017 

豆荚:

 $ gcloud preview container pods list POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS 9ffd980f-ab56-11e4-ad76-42010af069b6 10.108.0.11 mongodb dockerfile/mongodb k8s-spatula-node-1.c.crafty-apex-841.internal/104.154.44.77 name=spatula,role=mongodb Running 

因为只有在启动pod时才创buildpod的环境variables,所以服务必须在给定的pod之前存在,以便该pod能够查看服务的环境variables。 你应该能够看到他们从你创build的所有新的豆荚。

如果您想了解更多信息,可以在文档中find有关服务如何工作的附加说明。

另外,Container Engine(版本0.9.2及以上版本)中所有新创build的集群都有一个运行在集群中的SkyDNS服务 ,您可以使用该服务从pod访问服务,即使那些没有环境variables的服务也是如此。