如何获取集群内go Kubernetes客户端的当前命名空间

如何获取集群内go Kubernetes客户端的当前命名空间,go,kubernetes,Go,Kubernetes,如何使用kubernetes客户端go API获取部署/服务的当前命名空间?它似乎不在客户端对象或配置中。您始终可以为每个命名空间设置上下文,然后从kubeconfig读取当前所在的上下文: 使用以下代码找出您所在的命名空间: namespace, _, err := kubeconfig.Namespace() if err != nil { panic(err) } 这将返回您所在的命名空间 有关更多信息,请参阅: 使用 ioutil.ReadFil

如何使用kubernetes客户端go API获取部署/服务的当前命名空间?它似乎不在客户端对象或配置中。

您始终可以为每个命名空间设置上下文,然后从kubeconfig读取当前所在的上下文:

使用以下代码找出您所在的命名空间:

namespace, _, err := kubeconfig.Namespace()
    if err != nil {
            panic(err)
    }
这将返回您所在的命名空间

有关更多信息,请参阅:

使用

ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")
inClusterClientConfig
Namespace()
方法中存在所需的实现时,它可以正常工作,但很难看。但是如何从
rest.InClusterConfig()
开始获取该对象呢?它只能通过
newnoninteractiveedferredloadingclientconfig
从包外实例化


我知道哪些看起来相关,但被放弃了。

在部署配置中添加此环境变量

 - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

这是在使用

抱歉,响应太晚-我使用的是kubernetes.Clientset对象,而不是kubeconfig,因为我正在集群内运行该服务。不确定这个答案是否适用,谢谢!下面是一段比上面的代码更精确的代码片段,它符合相同的功能:如果您使用的是operator sdk,那么包中有一个实用方法k8sutil.GetOperatorNamespace():“github.com/operator framework/operator sdk/pkg/k8sutil”。实现只读取上面的文件。