核心组件运行机制
Kubernetes API Server原理解析
总体来看,Kubernetes API Server的核心功能是提供Kubernetes各类资源对象(如Pod、RC、Service等)的增、删、改、查及Watch等HTTP Rest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。除此之外,它还有以下一些功能特性。
- 是集群管理的API入口。
- 是资源配额控制的入口。
- 提供了完备的集群安全机制。
Kubernetes API Server概述
Kubernetes API Server通过一个名为kube-apiserver的进程提供服务,该进程运行在Master上。在默认情况下,kube-apiserver进程在本机的8080端口(对应参数–insecure-port)提供REST服务。我们可以同时启动HTTPS安全端口(–secure-port=6443)来启动安全机制,加强REST API访问的安全性。
我们通常可以通过命令行工具kubectl来与Kubernetes API Server交互,它们之间的接口是RESTful API。为了测试和学习Kubernetes API Server所提供的接口,我们也可以使用curl命令行工具进行快速验证。
比如,登录Master并运行下面的curl命令,得到以JSON方式返回的Kubernetes API的版本信息:
curl localhost:8080/api
可以运行下面的命令查看Kubernetes API Server目前支持的资源对象的种类:
curl localhost:8080/api/v1
根据以上命令的输出,我们可以运行下面的curl命令,分别返回集群中的Pod列表、Service列表、RC列表等:
curl localhost:8080/api/v1/pods
curl localhost:8080/api/v1/services
curl localhost:8080/api/v1/replicationcontrollers
如果只想对外暴露部分REST服务,则可以在Master或其他节点上运行kubectl proxy进程启动一个内部代理来实现。
运行下面的命令,在8001端口启动代理,并且拒绝客户端访问RC的API: