10

我想从 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

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

4

3 回答 3

35

至少在 kubernetes 1.5.3 中,我还可以在/var/run/secrets/kubernetes.io/serviceaccount/namespace.

于 2017-02-24T22:51:37.677 回答
14

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

于 2015-07-22T22:14:56.830 回答
0

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

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

https://openshift.default.svc.cluster.local/oapi/v1/projects

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

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

于 2015-07-22T13:04:45.797 回答