用户通过代理与API服务器交互
通常情况下,用户往往使用kubectl客户端与API服务器进行交互,而实际上,kubectl客户端是对Kubernetes的REST API进行封装,并加上了相关的验证操作(验证所需的配置文件在~/.kube/config中),保证用户可以省去验证等操作,直接对集群中的资源进行操作。
因此,用户同样可以直接调用Kubernetes的REST API与之进行交互,只是需要自行处理验证等相关操作。
幸运的是,我们可以通过执行kubectl proxy命令,通过代理与API服务器交互,从而,验证的相关操作由代理完成,不需要用户自行处理。
因此,用户想通过代理与API服务器交互,需要执行以下两步:
使用
kubectl proxy生成代理服务器;使用curl通过代理与Kubernetes的REST API交互;
生成代理
使用kubectl客户端建立代理的方式来与API服务器通信,因为它可以在用户的请求中添加授权令牌,从而令用户获得访问API服务器的权限,从而间接的与API服务器交互。开启代理的命令如下:
kubectl proxy --port 8080在本地的8080端口上开启kubectl proxy
生成代理后,用户的请求转发的过程如下图所示,当用户请求localhost:8080/api/v1/namespaces/default/pods/kubia-0/proxy/时,会被代理将地址进行转换为API服务器的地址,即192.168.99.106:8443,并且在请求中加入验证所需的授权令牌等信息,当API服务器收到请求后,再向后端的资源进行请求:

交互
当生成代理后,用户就可以通过代理间接的与API服务器进行交互。
假设代理监听的端口是8080,那么举几个例子,展示其用法:
Last updated
Was this helpful?