2017-02-04 12 views
1

docker composeから来るK8sの周りに頭を抱えようとしています。私はレジストリにプッシュした2つのコンテナで最初のポッドをセットアップしたいと思います。次の質問: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

関連する問題