首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在kubernetes中通过DNS将IP接入env变量

在kubernetes中通过DNS将IP接入env变量
EN

Stack Overflow用户
提问于 2017-02-04 15:11:45
回答 1查看 1.1K关注 0票数 1

我正试着把我的头转到K8s从docker compose过来。我想设置我的第一个吊舱与两个容器,我推到一个注册表。以下问题:

如何通过DNS将IP连接到环境变量中,以便注册服务器能够连接到领事?参见args consul://consul:8500中的容器注册程序。执政官需要和环境保护局一起更换。

代码语言:javascript
复制
{
  "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"
      }
    ]
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-04 17:36:24

向其他应用程序公开荚是用Kubernetes中的服务完成的。一旦定义了服务,就可以在豆荚中使用与该服务相关的环境变量。直接暴露Pod并不是一个好主意,因为Pods可能会重新安排时间。

例如在使用这样的服务时:

代码语言:javascript
复制
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

相关的环境变量将是CONSUL_SERVICE_IP

无论如何,似乎有些人因为某些原因而停止使用该环境变量,如这里所述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42041928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档