如何使用 kubernetes client-go API 获取部署/服务的当前命名空间?它似乎不在客户端对象或配置中。
使用
ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")
Run Code Online (Sandbox Code Playgroud)
工作,但是难看,当期望的实施方式存在于Namespace()的方法inClusterClientConfig。但是你如何从 开始得到那个对象 rest.InClusterConfig()?它只能通过NewNonInteractiveDeferredLoadingClientConfig.
我看到kubernetes #63707看起来相关但被放弃了。
在部署配置中添加此环境变量。
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
Run Code Online (Sandbox Code Playgroud)
您始终可以为每个命名空间设置上下文,然后从 kubeconfig 读取您当前所在的上下文:
使用以下代码找出您所在的命名空间:
namespace, _, err := kubeconfig.Namespace()
if err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
这将返回您所在的名称空间。
欲了解更多信息,请参阅:
https://github.com/kubernetes/client-go/blob/master/tools/clientcmd/client_config.go
| 归档时间: |
|
| 查看次数: |
7255 次 |
| 最近记录: |