Kubernetes Proxy API接口
Kubernetes Proxy API接口的作用是代理REST请求,即Kubernetes API Server把收到的REST请求转发到某个Node上的kubelet守护进程的REST端口,由该kubelet进程负责响应。
Pod的Proxy接口的作用和意义:在Kubernetes集群之外访问某个Pod容器的服务(HTTP服务)时,可以用Proxy API实现,这种场景多用于管理目的,比如逐一排查Service的Pod副本,检查哪些Pod的服务存在异常。
关于Node的相关接口
该接口的REST路径为/api/v1/proxy/nodes/{name},其中{name}为节点的名称或IP地址,包括以下几个具体接口:
/api/v1/proxy/nodes/{name}/pods/ # 列出指定节点内所有Pod的信息
/api/v1/proxy/nodes/{name}/stats/ # 列出指定节点内物理资源的统计信息
/api/v1/proxy/nodes/{name}/spec/ # 列出指定节点的概要信息
注意:这里获取的Pod的信息数据来自Node而非etcd数据库,所以两者可能在某些时间点有所偏差。此外,如果kubelet进程在启动时包含--enable-debugging-handlers=true参数,那么Kubernetes Proxy API还会增加下面的接口:
/api/v1/proxy/nodes/{name}/run # 在节点上运行某个容器 /api/v1/proxy/nodes/{name}/exec # 在节点上的某个容器中运行某条命令 /api/v1/proxy/nodes/{name}/attach # 在节点上attach某个容器 /api/v1/proxy/nodes/{name}/portForward # 实现节点上的Pod端口转发 /api/v1/proxy/nodes/{name}/logs # 列出节点的各类日志信息 /api/v1/proxy/nodes/{name}/metrics # 列出和该节点相关的Metrics信息 /api/v1/proxy/nodes/{name}/runningpods # 列出节点内运行中的Pod信息 /api/v1/proxy/nodes/{name}/debug/pprof # 列出节点内当前Web服务的状态, # 包括CPU占用情况和内存使用情况等
关于Pod的相关接口
通过这些接口,我们可以访问Pod里某个容器提供的服务(如Tomcat在8080端口的服务):
/api/v1/proxy/namespaces/{namespace}/pods/{name}/{path:*} # 访问Pod的某个服务接口
/api/v1/proxy/namespaces/{namespace}/pods/{name} # 访问Pod
/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path:*} # 访问Pod的某个服务接口
/api/v1/namespaces/{namespace}/pods/{name}/proxy # 访问Pod
在上面的4个接口里,后面两个接口的功能与前面两个完全一样,只是写法不同。
关于Service的Proxy接口
Kubernetes Proxy API也有Service的Proxy接口,其接口定义与Pod的接口定义基本一样:/api/v1/proxy/namespaces/{namespace}/services/{name}。
比如,若我们想访问MyWeb这个Service,则可以在浏览器里输入http://192.168.18.131:8080/api/v1/proxy/namespaces/default/services/myweb/demo/。
最后更新于
这有帮助吗?