2015-02-03 2 views
0

mongodb이라는 서비스가 있습니다. 문서에 따르면 서비스 호스트 및 포트는 $ MONGODB_SERVICE_HOST 및 $ MONGODB_SERVICE_PORT를 통해 동일한 클러스터의 다른 포드에서 사용할 수 있어야합니다.서비스 호스트/포트가 정의되지 않았습니다. Kubernetes/Google 컨테이너 엔진

그러나 이들 중 어느 것도 내 프런트 엔드 포드에 설정되어 있지 않습니다. 이것이 작동하기위한 요구 사항은 무엇입니까?

프론트 엔드 - 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 
+0

컨트롤러 및 서비스 구성이 추가되었습니다. – mz3

답변

1

, 서비스가 그 순서를 주어진 포드 전에 존재하는 포드에 대한 환경 변수 만 포드가 시작될 때 생성되기 때문에 pod를 사용하여 서비스의 환경 변수를 확인합니다. 당신이 만드는 모든 새로운 꼬투리에서 그들을 볼 수 있어야합니다.

자세히 알아 보려면 서비스 작동 방식에 대한 추가 설명은 the documentation에서 확인할 수 있습니다.

또는 Container Engine (버전 0.9.2 이상)의 새로 생성 된 모든 클러스터는 환경 변수가없는 경우에도 포드에서 서비스에 액세스하는 데 사용할 수있는 a SkyDNS service의 클러스터에서 실행됩니다.

+0

모든 창을 삭제하고 다시 작성했지만 ENV 변수가 설정되지 않았습니다. 질문에 대한 자세한 내용을 추가하겠습니다. 다른 아이디어가 있습니까? – mz3

+1

아직 컨테이너에 연결하고 시스템의 어떤 변수가 수동으로 검사 할 수 있습니까? 정확한 mongodb 컨트롤러와 서비스 설정을 사용하여 상황을 재현 해 보았습니다. 새로운 Pod를 만들 때 변수가 표시됩니다. 첨부하려면 다음을 수행하십시오. 1. 프론트 엔드 포드가있는 노드 (get pods 호출로 리턴 된 노드)에 SSH. 2. "sudo docker ps"를 사용하여 실행중인 컨테이너의 ID를 가져옵니다. 3. "docker exec -it bash"를 사용하여 컨테이너에 연결하십시오. 4. 셸에서 "printenv"를 실행하십시오. –

관련 문제