【问题标题】:Resolve service name in environment variable in Kubernetes解析 Kubernetes 环境变量中的服务名称
【发布时间】: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 自动注入mysql ServicePod 的命名空间中?
  • @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


【解决方案1】:

@MatthewLDaniel 和@RyanDawson 是对的。在这种情况下,环境变量无法转换为IP地址,您应该使用服务名称。

您可以在DNS for Services and PodsServices 中找到更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多