用户通过代理与API服务器交互

通常情况下,用户往往使用kubectl客户端与API服务器进行交互,而实际上,kubectl客户端是对Kubernetes的REST API进行封装,并加上了相关的验证操作(验证所需的配置文件在~/.kube/config中),保证用户可以省去验证等操作,直接对集群中的资源进行操作。

因此,用户同样可以直接调用Kubernetes的REST API与之进行交互,只是需要自行处理验证等相关操作。

幸运的是,我们可以通过执行kubectl proxy命令,通过代理与API服务器交互,从而,验证的相关操作由代理完成,不需要用户自行处理。

因此,用户想通过代理与API服务器交互,需要执行以下两步:

  1. 使用kubectl proxy生成代理服务器;

  2. 使用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服务器收到请求后,再向后端的资源进行请求:

使用kubectl proxy转发请求至Pod

交互

当生成代理后,用户就可以通过代理间接的与API服务器进行交互。

假设代理监听的端口是8080,那么举几个例子,展示其用法:

Last updated

Was this helpful?