Kubernetes中的服务发现环境变量问题

时间:2017-08-24 08:33:33

标签: kubernetes

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

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

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

任何人都可以建议我在这种情况下做什么吗?环境变量是否维护订单。如果有人有任何好的例子,请告诉我。

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

1 个答案:

答案 0 :(得分: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的情况下,在部署时生成)。您可以直接使用服务名称和端口吗?