在Kubernetes中使用主公共IP访问Pod信息

在Kubernetes中使用主公共IP访问Pod信息,kubernetes,Kubernetes,我可以使用从集群内部获取的Pods信息 有没有办法通过使用来获取pod信息?默认情况下,主机只向公共internet公开HTTPS,而不是HTTP。您应该能够点击https://admin:password@主公共ip/api/v1/pods/,其中密码是为管理员用户生成的密码。这可以在您机器上的.kube/config文件中找到,也可以在主机上的/srv/kubernetes/known_tokens.csv文件中找到 例如,在主虚拟机上: $ cat /srv/kubernetes/know

我可以使用从集群内部获取的Pods信息


有没有办法通过使用来获取pod信息?

默认情况下,主机只向公共internet公开HTTPS,而不是HTTP。您应该能够点击
https://admin:password@主公共ip/api/v1/pods/
,其中
密码
是为管理员用户生成的密码。这可以在您机器上的
.kube/config
文件中找到,也可以在主机上的
/srv/kubernetes/known_tokens.csv
文件中找到

例如,在主虚拟机上:

$ cat /srv/kubernetes/known_tokens.csv 
mYpASSWORD,admin,admin
unused,kubelet,kubelet
...
或在您的计算机上:

$ cat ~/.kube/config
...
- name: my-cluster
  user:
    client-certificate-data: ...
    client-key-data: ...
    password: mYpASSWORD
    username: admin
...

$ curl --insecure https://admin:mYpASSWORD@master-public-ip/api/v1/pods/
...
为了避免使用
--unsecure
(即,实际验证您的主机所提供的服务器证书),您可以使用
--cacert
标志从
.kube/config
文件中指定群集证书颁发机构

$ cat ~/.kube/config
...
- cluster:
    certificate-authority-data: bIgLoNgBaSe64eNcOdEdStRiNg
    server: https://master-public-ip
  name: my-cluster
...

$ echo bIgLoNgBaSe64eNcOdEdStRiNg | base64 -d > ca.crt

$ curl --cacert=ca.crt https://admin:mYpASSWORD@master-public-ip/api/v1/pods/
...

它说-Unauthorized~/.kube/config文件看起来像–apiVersion:v1集群:[]上下文:[]当前上下文:“种类:配置首选项:{}用户:-名称:集群管理用户:客户端证书数据:(某些)客户端密钥数据:(某些)密码:pass用户名:adminhmm。听起来您的.kube/config文件可能不是当前集群的最新版本。
kubectl获取节点是否有效?您还可以查看主机上的
/srv/kubernetes/known_tokens.csv
文件。直接从本地计算机访问API的另一种方法是使用kubectl的proxy命令:
kubectl proxy
应在
http://localhost:8001
使用kubectl知道的所有凭证。然后你可以
curlhttp://localhost:8001/api/v1/pods
从您的本地计算机。我想从本地电脑的浏览器点击api并获取信息。但是,它仍然表示未经授权。在这种情况下,最简单的方法是使用kubectl代理方法。