docker - 无法从 pod 容器内访问 kubernetes api
问题描述
我创建了一个 hashcorp vault 部署并配置了 kubernetes 身份验证。vault 容器从 pod 内部调用 kubernetes api 来进行 k8s 身份验证,该调用失败并显示 500 错误代码(连接被拒绝)。我正在为 windows kubernetes 使用 docker。
我将以下配置添加到 Kubernetes 身份验证机制的保险库中。
有效载荷.json
{
"kubernetes_host": "http://kubernetes",
"kubernetes_ca_cert": <k8s service account token>
}
curl --header "X-Vault-Token: <vault root token>" --request POST --data @payload.json http://127.0.0.1:8200/v1/auth/kubernetes/config
正如预期的那样,我得到了 204 响应。
我为 kubernetes auth 创建了一个角色,我正在尝试使用它登录到 vault:
有效载荷2.json
{
"role": "tanmoy-role",
"jwt": "<k8s service account token>"
}
curl --request POST --data @payload2.json http://127.0.0.1:8200/v1/auth/kubernetes/login
上面的 curl 给出了以下响应:
{“错误”:[“发布http://kubernetes/apis/authentication.k8s.io/v1/tokenreviews:拨打 tcp 10.96.0.1:80:连接:连接被拒绝”]}
下面是我的 kubernetes 服务启动并正常运行,我还可以使用代理访问 kubernetes 仪表板。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13d
我无法弄清楚为什么无法从容器内部访问“kubernetes”服务。任何帮助将不胜感激。
编辑 1.我的保管库 pod 和服务工作正常:
服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
vault-elb-int LoadBalancer 10.104.197.76 localhost,192.168.0.10 8200:31650/TCP,8201:31206/TCP 26h
荚
NAME READY STATUS RESTARTS AGE
vault-84c65db6c9-pj6zw 1/1 Running 0 21h
编辑 2. 正如约翰建议的那样,我将 payload.json 中的“kubernetes_host”更改为“ https://kubernetes ”。但是现在我收到了这个错误:
{"errors":["Post https://kubernetes/apis/authentication.k8s.io/v1/tokenreviews: x509: certificate signed by unknown authority"]}
解决方案
您的登录请求正在发送到tokenreview
端口 80 上的端点。我认为这是因为您kubernetes_host
指定了一个http
URL。500 响应是因为它不在端口 80 上侦听,而是在 443 上侦听(正如您在服务列表输出中看到的那样)。
配置auth的时候试试https
改成,即
payload.json
{
"kubernetes_host": "https://kubernetes",
"kubernetes_ca_cert": <k8s service account token>
}
推荐阅读
- java - JRE 如何为具有非有效最终局部变量的 lambda 主体创建并发问题?
- r - 使用 ggplot2 的 5 维堆叠条形图
- java - Android:如何使用 **Volley** 在导航视图中隐藏登录和注册选项并启用注销选项
- java - Java中的字符串列表
- python - Python S2 库中的多边形支持
- java - Eclipse 大小的 Maven 插件
- asp.net-mvc - ASP.NET MVC - 自定义身份验证不起作用
- variables - TFS/VSTS,在一个变量中引用一个变量
- java - 这是制作继承对象的唯一方法吗?
- mysql - 添加外键约束失败