【问题标题】:Like to know Kubernetes API server Host from the app deployed on to POD in a cluster想知道Kubernetes API server Host从app部署到集群中的POD
【发布时间】:2016-07-04 17:43:36
【问题描述】:

想知道是否有办法从我在 POD 中运行的应用程序中识别主 IP 地址(API 服务器主机和端口)? (假设我创建了一个具有主公共 IP 地址 xxxx 的 kubernetes 集群 A;并且我在属于该集群 A 的 kubernetes minion 上使用我的应用程序(例如 golang 或 J2ee)创建了一个 pod。来自在集群上运行的 App 进程一个奴才,我们想知道那个Master的公网IP(xxxx)

我没有找到任何相同的环境变量。

谁能帮忙?

【问题讨论】:

  • 我觉得你的问题很好,也许可以这样说:In Kubernetes How to get Cluster or Service Host and port from pod。

标签: kubernetes


【解决方案1】:

DNS 名称 kubernetes 应解析为虚拟 IP 地址,该地址将路由到主服务器,以便您可以访问 apiserver。

【讨论】:

  • 感谢您的快速回复。我无法从 docker 或节点解析 DNS 名称“kubernetes”。
  • DNS 名称“kubernetes”不起作用;然而“kubernetes.default”工作,但它没有为我提供主服务器的公共 IP 地址;创建 Master 后,我们将在通过 kube_up.sh 创建的集群配置中拥有一个公共 IP 地址,我喜欢在 pod 中运行的应用程序中获取该 IP 地址。
【解决方案2】:

api 服务通过 k8s 服务公开。您需要使用 API 来访问服务配置。您可以通过服务端点访问 API(地址在 env 变量中),但您必须拥有必要的凭据才能做任何有用的事情。它们位于 /var/run/secrets/kubernetes.io 的子目录中,具体取决于您的 pod 在哪个服务帐户下运行。您可以通过 https 直接访问端点,也可以在 pod 中运行代理。见http://kubernetes.io/docs/user-guide/accessing-the-cluster/#accessing-the-api-from-a-pod

https://stackoverflow.com/a/30739416/191215中给出了使用curl访问API服务器的示例。

你想要的 api 端点是/api/v1/endpoints。查找带有metadata.namekubernetesitem。外部端点应该是 subsets addresses 之一。

我相信所有 k8s 实现都是如此,但仅在 GKE 和 docker-machine 上对其进行了测试。

【讨论】:

  • 谢谢。我知道我们可以使用 DNS 名称“kuberenets.default”来访问 API 服务器。我想多解释一下我的问题,因为上述内容并不能帮助我解决问题。使用 kube_up 创建集群后,我们会获得集群的配置文件,其中包含 "server: https://" ,我喜欢从 pod 获取此 IP 地址。当我尝试 DNS 名称“kubernetes.default”时,它没有为我提供公共 IP 地址。
  • 您仍然没有说明为什么要从 POD 获取此 IP,而是 w/e。无论如何,您应该能够从服务中获取地址作为端点。比如kubectl可以通过kubectl describe service kubernetes获取,也可以通过API/curl到私有服务地址做同样的事情。但是您需要凭据才能访问 API 端点。 POD 没有对 k8s 控件的特权访问。
  • 对不起,没有解释我为什么需要这个。我有一个多集群环境,集群详细信息存储在 zookeeper 中;由于集群详细信息是从 kube_up 后生成的配置文件中获取的,因此服务器详细信息“public Master 的 IP 地址”存储在 zookeeper 中; App 需要从 zookeeper 获取详细信息并关联以查找它属于哪个集群并执行相应的操作。如果我可以使用其余 API 获取集群 ID(名称)会很有帮助。
  • 非常感谢。但是上面提到的细节没有提供公共IP;它只提供私有 IP 地址。
  • 你没有说你运行的是哪个集群。 API 结果肯定包括 GKE 和 docker-machine 的外部地址。
猜你喜欢
  • 2018-11-02
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2021-10-16
  • 2019-10-19
  • 1970-01-01
相关资源
最近更新 更多