0%

如何从Pod容器中访问Kubernetes API服务

问题描述

我之前可以使用curl执行如下命令:

1
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1beta3/namespaces/default/

但在kubernetes 0.18.0中它提示“unauthorized”。奇怪的是,如果我使用外部IP地址(http://172.17.8.101:8080/api/v1beta3/namespaces/default/)是可以访问的。

高票回答

在官方文档中我发现了这个

显然,我没有在之前版本的Kubernetes中使用安全令牌。从那时起,我设计了一个比运行代理或在容器上安装golang更简单的解决方案。请参阅此示例,该示例从api获取当前容器的信息:

1
2
3
KUBE_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
curl -sSk -H "Authorization: Bearer $KUBE_TOKEN" \
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/default/pods/$HOSTNAME

我还使用包含一个简单的二进制文件jq来解析json以用于bash脚本。

原文链接

How do I access the Kubernetes api from within a pod container?