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