2017-02-04 7 views
1

docker compose에서 오는 K8을 중심으로 머리를 쓰려고합니다. 나는 레지스트리에 밀어 넣은 두 개의 컨테이너로 첫 번째 포드를 설치하고 싶습니다. 다음 질문 :kubernetes에서 DNS를 통해 env 변수로 IP 받기

등록자가 영사에게 연결할 수 있도록 DNS를 통해 환경 변수에 IP를 어떻게 가져 옵니까? args consul://consul:8500의 컨테이너 등록자를 참조하십시오. 영사는 env와 함께 변경해야합니다. 다른 응용 프로그램

{ 
    "kind": "Pod", 
    "apiVersion": "v1", 
    "metadata": { 
    "name": "service-discovery", 
    "labels": { 
     "name": "service-discovery" 
    } 
    }, 
    "spec": { 
    "containers": [ 
     { 
     "name": "consul", 
     "image": "eu.gcr.io/{myproject}/consul", 
     "args": [ 
      "-server", 
      "-bootstrap", 
      "-advertise=$(MY_POD_IP)" 
     ], 
     "env": [{ 
      "name": "MY_POD_IP", 
      "valueFrom": { 
      "fieldRef": { 
       "fieldPath": "status.podIP" 
      } 
      } 
     }], 
     "imagePullPolicy": "IfNotPresent", 
     "ports": [ 
      { 
      "containerPort": 8300, 
      "name": "server" 
      }, 
      { 
      "containerPort": 8400, 
      "name": "alt-port" 
      }, 
      { 
      "containerPort": 8500, 
      "name": "ui-port" 
      }, 
      { 
      "containerPort": 53, 
      "name": "udp-port" 
      }, 
      { 
      "containerPort": 8443, 
      "name": "https-port" 
      } 
     ] 
     }, 
     { 
     "name": "registrator", 
     "image": "eu.gcr.io/{myproject}/registrator", 
     "args": [ 
      "-internal", 
      "-ip=$(MY_POD_IP)", 
      "consul://consul:8500" 
     ], 
     "env": [{ 
      "name": "MY_POD_IP", 
      "valueFrom": { 
      "fieldRef": { 
       "fieldPath": "status.podIP" 
      } 
      } 
     }], 
     "imagePullPolicy": "Always" 
     } 
    ] 
    } 
} 

답변

0

노출 포드는 Kubernetes에 Service 이루어집니다. 서비스를 정의한 후에는 포드 내에서 해당 서비스와 관련된 환경 변수를 사용할 수 있습니다. 포드를 직접 노출하는 것은 포드가 다시 일정을 잡을 때 좋지 않습니다.

예 : 이 같은 서비스 이용 : 관련 환경 변수 어쨌든 다른 사람들이 실제로 설명한 바와 같이 몇 가지 이유에 대한 해당 환경 변수 사용을 중단 보인다 CONSUL_SERVICE_IP

될 것

apiVersion: v1 
kind: Service 
metadata: 
    name: consul 
    namespace: kube-system 
    labels: 
    name: consul 
spec: 
    ports: 
    - name: http 
     port: 8500 
    - name: rpc 
     port: 8400 
    - name: serflan 
     port: 8301 
    - name: serfwan 
     port: 8302 
    - name: server 
     port: 8300 
    - name: consuldns 
     port: 8600 
    selector: 
    app: consul 

here