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

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



紫衣仙女
浏览 212回答 3
3回答

炎炎设计

使用ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")有效但很丑陋,当所需的实现存在Namespace()于inClusterClientConfig. 但是你如何从 开始得到那个对象 rest.InClusterConfig()呢?它只能通过包外部实例化NewNonInteractiveDeferredLoadingClientConfig。我看到kubernetes #63707看起来相关但已被放弃。

一只甜甜圈

您始终可以为每个命名空间设置上下文,然后从 kubeconfig 中读取您当前所在的上下文:使用以下代码找出您所在的名称空间:namespace, _, err := kubeconfig.Namespace()     if err != nil {                 panic(err)     }这将返回您所在的名称空间。

扬帆大鱼

在您的部署配置中添加此环境变量。 - name: POD_NAMESPACE           valueFrom:             fieldRef:               fieldPath: metadata.namespace这是使用kubernetes downward api
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go