当前位置: 首页 > 面试题库 >

无法从Pod容器内部访问Kubernetes API

司徒胤
2023-03-14
问题内容

我已经创建了hashicorp保管库部署并配置了kubernetes auth。保管库容器从Pod内部调用kubernetes
api进行k8s身份验证,并且该调用失败,并显示500个错误代码(连接被拒绝)。我正在将docker用于Windows kubernetes。

我将以下配置添加到Vault中以进行kubernetes身份验证机制。

payload.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:

payload2.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

上面的卷曲给出以下响应:

{“错误”:[[张贴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. 我的保管箱和服务运行正常:

服务

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"]}

问题答案:

终于,我找出了出问题的地方:

我的payload.json内容错误

应该是这样的:

{
      "kubernetes_host": "https://kubernetes",
      "kubernetes_ca_cert": <kubectl exec to vault pod and cat  /var/run/secrets/kubernetes.io/serviceaccount/ca.crt, now make the cert one line by following this answer: https://stackoverflow.com/a/14580203/2054147>
}

现在在端点下面可以正常工作并返回愿望client_token

curl --request POST --data @payload2.json http://127.0.0.1:8200/v1/auth/kubernetes/login

感谢@John帮助我弄清楚kubernetes_host的最初问题。



 类似资料:
  • 我在Amazon linux ec2上安装了dd-agent。如果我直接在主机上运行我的python脚本(我使用了名为"dogstatsd-python"的SDK),所有指标都可以发送到datadog(我登录到datadoghq.com并在那里看到了指标)。脚本类似: 然而,我启动了一个docker容器,并从容器内部运行相同的脚本: '172.14.0.1'是主机的IP,它是用命令提取的 根本没有

  • tl;如果在Docker容器中运行,一个RestController正确回答,另一个则不正确。 该服务有两个API 和。 它们都是通过docker compose运行的。 返回。 返回一个空的200响应。正如预期的那样。 应该返回一个200响应和一个每次调用API时都会增加的数字。可悲的是,事实并非如此。 在本地运行该服务可以提供预期的结果。 maven spotify插件用于从以下创建图像。 我

  • 当我的吊舱试图查询任何kubeletendpoint(任何端口)时,它们立即得到一个。 编辑:以上情况发生在任何端口上,而不仅仅是4194 ServiceMonitor:

  • 我可以对Docker API进行cUrl调用,但是如果我从容器(docker-comals)运行相同的脚本,我就无法到达任何API终结点。 我的请求如下: 原因可能是使用了localhost,但我现在还找不到解决方案。有什么建议吗? 编辑:下面是我正在使用的堆栈(Api平台)的简要摘要https://api-platform.com/).每个容器都连接到“api_默认”网桥网络: 基于php=Sy

  • 我试图访问kubernetes集群中的pod的日志,但在发送以下rest请求时获得: 获取api/名称空间/myNamespace/pods/myPod/log 当我试图查看pod的状态时,我得到以下信息: 为什么我拿不到日志?

  • 问题内容: 如何在使用Vagrant / Virtualbox的2 centos VM与使用docker for mac的docker容器之间设置网络。他们都需要能够相互访问。 目前,我无法从Docker容器中访问虚拟机。 流浪汉设置: 虚拟机可以互相访问,但Docker容器无法访问虚拟机 问题答案: 您需要连接运行docker容器的网络和将无业游民的VM引导到主机上同一桥设备的网络: 1. 创建