【发布时间】:2018-08-16 21:46:10
【问题描述】:
我真的不确定发生了什么以及有什么问题,当我在 YAML 文件中的环境变量中传递服务名称时,该服务名称仍然是字符串,它没有在真实 IP 地址中解析。
它是否应该在 kubernetes 中自动工作,或者我需要做一些更多的配置才能解决该服务。
像这样的例子,新部署:
env:
-name: MYSQL-SERVICE
value: my-service-name-which-should-be-resolved (also deployed on kubernetes as service)
非常感谢您的建议!
【问题讨论】:
-
执行 'kubectl describe pod
' 或检查仪表板以查看传递给 pod 的值。同样使用“kubectl get service”检查服务名称。如果它们匹配并且在同一个命名空间中,它应该可以工作。如果您可以共享尽可能多的输出和描述符,将会有所帮助。 -
该服务名称仍然是字符串,它没有在真实的 IP 地址中解析 为什么您希望将环境变量从 DNS 名称转换为 IP ?你可能在想
$MYSQL_SERVICE_HOST,它会被kubelet自动注入mysqlService在Pod的命名空间中? -
@RyanDawson 传入 Pod 的值为“my-service-name”,字符串不是任何服务 IP。它们匹配并且它们在同一个命名空间中。所以,也许我的服务需要来自 EnvVar 的这个服务。应该像完整的 dns 名称一样处理它,而不是像 IP 地址一样,因为我期望 IP 地址。
-
@MatthewLDaniel 所以,我不确定,有些人说 Kubernetes 会用该服务的 IP 替换服务名称,所以这是错误的吗? MYSQL 只是示例,没有任何关系。我可以传递我想要的服务的字符串名称,然后我使用该服务的应用程序我应该使用像完整 dns 名称而不像 iP 这样的服务?谢谢
-
是的,您可以只使用 msql 服务的服务名称作为主机名。一个例子是blog.learnk8s.io/connect-service-kubernetes-7cb346cf2f64
标签: kubernetes