Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Curl 库伯内特斯。HTTPS API返回`未经授权`_Curl_Docker_Kubernetes_Tls1.2 - Fatal编程技术网

Curl 库伯内特斯。HTTPS API返回`未经授权`

Curl 库伯内特斯。HTTPS API返回`未经授权`,curl,docker,kubernetes,tls1.2,Curl,Docker,Kubernetes,Tls1.2,Kubernetes API请求curlhttps://192.168.0.139 --cacert/home/mongeo/ku certs/ca.pem返回未经授权 请求curl本地主机:8080工作正常 我的kube代理和kube apiserver standart() 如何在HTTPS上获取数据?您是否指定了--token auth file=和/或--basic auth file=或其他身份验证模式之一?我不知道https端点在没有其中一个的情况下是否可以工作(也许应该,但显然不行

Kubernetes API请求
curlhttps://192.168.0.139 --cacert/home/mongeo/ku certs/ca.pem
返回
未经授权

请求
curl本地主机:8080
工作正常

我的kube代理和kube apiserver standart()


如何在HTTPS上获取数据?

您是否指定了
--token auth file=
和/或
--basic auth file=
或其他身份验证模式之一?我不知道https端点在没有其中一个的情况下是否可以工作(也许应该,但显然不行)。查看

在API中有几种验证方法。获得授权的最简单方法是发送带有“承载令牌值”值的身份验证头。您可以查看服务器上的Kubernetes API配置,以查找定义的令牌。标头可以使用web浏览器扩展与http请求一起发送。

从外部网络访问Kubernetes API的简单方法是创建一个

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


只要SSH隧道打开,您就可以在机器的端口
9000
上查询API。

嗨,这就是我为token所做的

  • 查找地址服务器Api

    • 打开
      /etc/kubernetes/kubelet.conf

      示例:
      服务器:https://10.1.32.120:6443

  • 查找令牌

    • 打开
      /etc/kubernetes/pki/tokens.csv

      示例:
      4c95a1a22d19b20811,kubeadm节点csr,07ccbf35-e206-11e6-ab8f-0010184e550e,系统:kubelet引导

  • 在这种情况下,令牌是
    4c95a1a22d19b20811
  • 如果使用邮递员,则添加标题
    授权:持票人4c95a1a22d19b20811

  • 最后,我发现:

    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
    
    lincai@pdbuddy:~/blackbox$curl-v--cacert./ca.pem--key./admin-key.pem--cert./admin.pemhttps://xxxx/api/v1/
    *在DNS缓存中找不到主机名
    > 
    
    为httpstry curl添加443端口地址——cacert/home/mongeo/ku certs/ca。pem@ShivSinghSingh它没有帮助它如何帮助在浏览器中打开页面?令牌必须在cheder页面请求中传递?为OP添加解释。这将帮助他更好地理解。太好了!如果要使用当前目录中的文件,请在其前面加“/”前缀,以避免与昵称混淆。我注意到,在我的环境中,如果不使用“/”前缀,则会出现未经授权的错误。我在有证书的文件夹中运行该命令,为什么它不起作用?这就是我正在尝试的,但它不起作用。
    curl https://x:x:x::6443/api/--key kubernetes.key--cert kubernetes.crt--cacert ca.crt
    ,而且它起作用。
    curl https://x:x:x::6443/api/--key./kubernetes.key--cert./kubernetes.crt--cacert./ca.crt
    kubectl proxy>是建立本地http隧道的更简单的方法API服务器。我在我的/etc/kubernetes/pki/目录中找不到token.csv。我们需要自己添加令牌文件吗??
    
    ssh -L 9000:localhost:8080 roto@master.node
    
    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