如何获取集群内Go Kubernetes客户端的当前名​​称空间

时间:2018-11-13 14:35:27

标签: go kubernetes

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

3 个答案:

答案 0 :(得分:1)

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

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

namespace, _, err := kubeconfig.Namespace()
    if err != nil {
            panic(err)
    }

这将返回您所在的名称空间。

有关更多信息,请参见:

https://github.com/kubernetes/client-go/blob/master/tools/clientcmd/client_config.go

答案 1 :(得分:1)

使用

## Sample data
set.seed(234)
DAT = matrix(runif(8), nrow=2)

## Plotting
plot(NULL, xlim=c(0,1), ylim=c(0,1), xlab="X", ylab="Y")
arrows(rep(0,4), rep(0,4), DAT[1,], DAT[2,])
ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") 的{​​{1}}方法中存在所需的实现时,

可以工作,但是很难看。但是,如何从Namespace()开始获取该对象?只能从软件包外部通过inClusterClientConfig实例化。

我看到kubernetes #63707看上去很相关,但却被抛弃了。

答案 2 :(得分:0)

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

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

这是使用kubernetes downward api