【问题标题】:How to figure out a pod's namespace from within a pod?如何从 pod 中找出 pod 的命名空间?
【发布时间】:2017-12-11 02:50:17
【问题描述】:

我的服务 X 正在使用命名空间 N 的 pod P 中运行。我如何使用 Kubernetes Go 客户端 API 从服务 X 中找出命名空间信息?

【问题讨论】:

    标签: kubernetes kubernetes-go-client


    【解决方案1】:

    我不确定go client API 是什么意思。 Pod 的命名空间在 /var/run/secrets/kubernetes.io/serviceaccount/namespace,所以这个“服务 X”只需要读取这个文件。

    或者,您也可以使用Downward API

    【讨论】:

    • 我在 kubernetes 基础设施节点上找不到这个文件。 kubernetes 有一个 go 客户端来访问 API 服务器,而不是直接对 REST api 进行 curl 调用。
    • 该文件可供容器内正在运行的应用程序使用。您是否尝试过从您的应用程序代码中访问它?
    • 这对我有用。它并不花哨,但比使用 client-go 包更容易(适用于任何语言)
    【解决方案2】:

    我想我可以使用环境变量传递 pod、命名空间等,同时使用 go-client 创建一个新的 pod。方法是在 PodSpec 中指定环境变量 key/val 对,如下所示:

    Env: []v1.EnvVar{
        {Name: "POD_NAME", Value: podname},
        {Name: "POD_NAMESPACE", Value: nsname},
    },
    

    然后在一个 pod 中,我可以读取这个环境。使用 os 包的变量。

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 2021-09-12
      • 2021-12-06
      • 2019-08-27
      相关资源
      最近更新 更多