Kubernetes。 HTTPS API返回“未经授权”

时间:2015-12-16 07:20:27

标签: curl docker kubernetes tls1.2

Kubernetes API请求curl https://192.168.0.139 --cacert /home/mongeo/ku-certs/ca.pem返回Unauthorized

请求curl localhost:8080运作良好。

我的kube-proxy和kube-apiserver standart(coreos+k8s tutorial

如何获取有关HTTPS的数据?

6 个答案:

答案 0 :(得分:6)

您是否指定了--token-auth-file=<file>和/或--basic-auth-file=<otherfile>或其他一种身份验证模式?我不知道https端点可以在没有这些端点的情况下工作(可能它应该,但它显然没有)。查看https://kubernetes.io/docs/admin/authentication/

答案 1 :(得分:2)

嗨,这就是我为令牌所做的,

  1. 查找地址服务器Api - 打开/etc/kubernetes/kubelet.conf - &gt;示例:server:https://10.1.32.120:6443
  2. 查找令牌,打开/etc/kubernetes/pki/tokens.csv ---&gt;示例:4c95a1a22d19b20811,kubeadm-node-csr,07ccbf35-e206-11e6-ab8f-0010184e550e,system:kubelet-bootstrap
  3. 在这种情况下,令牌是 - > 4c95a1a22d19b20811
  4. 如果使用邮递员,请添加标题 - &gt;授权:Bearer 4c95a1a22d19b20811

答案 2 :(得分:1)

从外部网络访问Kubernetes API的一种简单方法是创建SSH tunnel,例如

ssh -L 9000:localhost:8080 roto@master.node

这会将您本地端口9000的连接转发到服务器上的localhost:8080

只要SSH隧道处于打开状态,您就可以在计算机的端口9000上查询API。

答案 3 :(得分:0)

有几种方法可以在API中进行身份验证。获得授权的最简单方法是使用&#34; bearer TOKEN_VALUE&#34;发送身份验证标头。值。您可以查看服务器上的Kubernetes API配置以查找已定义的令牌。可以使用Web浏览器扩展名使用http请求发送标头。

答案 4 :(得分:0)

最后,我想出了这个:

lincai@pdbuddy:~/blackbox$ curl -v --cacert ./ca.pem --key ./admin-key.pem --cert ./admin.pem  https://xxxx/api/v1/
* Hostname was NOT found in DNS cache

> 
< HTTP/1.1 200 OK

答案 5 :(得分:-3)

curl https://192.168.0.139 —key ./admin-key.pem —cert ./admin.pem —cacert ./ca.pem