【问题标题】:Service Discovery Environment variables issue in KubernetesKubernetes 中的服务发现环境变量问题
【发布时间】:2017-08-24 08:33:32
【问题描述】:

我正在使用 k8s 1.5,但遇到了一个问题。 我正在尝试部署 2 个 pod 和相关服务。我们可以将一个视为 UI,另一个视为 DB。我已经看到使用 Service Discovery,我们可以实现两个 pod 之间的连接。

问题 1: 在进入 UI Pod 的容器时,如果我输入 env,那么我将获得 Kubernetes 服务的环境变量,但我没有获得 DB Pod 的环境变量。据我所知,每当我们运行任何 pod 时,它都会公开两个变量,即 SERVICE_HOST 和 SERVICE_PORT,并且该名称空间中的所有 pod 都应该可以使用。

问题 2: 有时 UI Pod 也不显示它自己的变量,有时重试后它会出现。意味着它需要时间来显示自身的环境变量。

谁能建议我在这种情况下该怎么做?环境变量是否保持顺序。如果有人有任何好的例子,请告诉我。

注意:部署文件和服务文件都部署在同一个命名空间中。

【问题讨论】:

  • 我认为问题 1 可能是,当您启动 UI POD 时,DB pod 已关闭。这就是为什么您缺少服务环境价值的原因。我建议使用 DNS 名称进行服务。

标签: kubernetes


【解决方案1】:

在我看到的示例中(https://github.com/kubernetes/kubernetes/blob/master/examples/guestbook-go/main.go,第 77 行),它们使用服务 dns 名称而不是环境变量(就像您在 docker 中链接容器时所做的那样)。 Helm 图表 (https://github.com/kubernetes/charts/blob/master/stable/wordpress/templates/deployment.yaml) 也是如此,在所有部署中,它们都使用服务名称和端口,这是已知的(在 Helm 的情况下,在部署时生成)。直接使用服务名称和端口对您有用吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 2015-11-19
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2020-10-11
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多