如何从OpenShift中的pod中获取命名空间?

时间:2015-07-22 08:32:46

标签: kubernetes openshift-origin

我想从pod中访问OpenShift和Kubernetes API,以查询和修改pod所属应用程序中的对象。

在文档(https://docs.openshift.org/latest/dev_guide/service_accounts.html)中,我找到了关于如何访问api的描述:

$ TOKEN="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"

$ curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
"https://openshift.default.svc.cluster.local/oapi/v1/users/~" \
-H "Authorization: Bearer $TOKEN"

问题是当我想要访问一个pod时,我需要知道我所在的命名空间:

https://openshift.default.svc.cluster.local/oapi/v1/namespaces/${namespace}/pods

到目前为止,我找到的唯一方法是将命名空间作为环境变量提交,但我不想要求用户输入该信息。

3 个答案:

答案 0 :(得分:15)

至少在kubernetes 1.5.3中,我还可以在/var/run/secrets/kubernetes.io/serviceaccount/namespace中看到命名空间。

答案 1 :(得分:12)

您可以使用downward API自动将pod的命名空间填充为环境变量。

答案 2 :(得分:0)

我通过跟踪Web控制台的功能找到了解决方案。

我可以在以下网址上没有集群管理权限的情况下询问项目列表:

send()

仅列出我有权拥有的项目,然后可以确定当前项目的名称也是命名空间。

如果有更简单的解决方案,我会很高兴,但这很有效。