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

Joh*_*lse 8 openshift-origin kubernetes

我想从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"
Run Code Online (Sandbox Code Playgroud)

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

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

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

ank*_*kon 21

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


Ale*_*son 13

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