Kubernetes API server工做原理

做为Kubernetes的使用者,天天用得最多的命令就是kubectl XXX了。api

kubectl其实就是一个控制台,主要提供的功能:app

1. 提供Kubernetes集群管理的REST API接口,包括认证受权、数据校验以及集群状态变动;工具

2. 提供其余模块之间的数据交互和通讯的枢纽(其余模块经过API Server查询或修改数据,只有API Server才直接操做etcd)url

也就是说,咱们在终端里输入的每一个kubectl命令,实际上都是一个发往Kubernetes API server的Restful API调用。spa

咱们能够作个实验:操作系统

kubectl get secret -v=9, 经过-v=9设置最高级别的trace:命令行

从输出观察到为了取回全部的secret而进行的API server的调用url:https://xxxx/api/v1/namespaces/<own namespace>/secrets?limit=500:orm

这个HTTP请求的格式在Kubernetes官网能查到。router

那么kubectl命令怎么知道应该把请求发送到哪一个API server呢?server

运行命令kubectl config view, 显示内容里的server:后面的地址就是API server的url。

kubectl config view显示的内容来自配置文件: ~/.kube/config:

其实Kubernetes的kubectl工做原理和CloudFoundry的命令行工具cf同样。

设置操做系统的环境变量CF_TRACE = true

而后执行任意的cf 命令,能看到这些命令实际上也是发送一个HTTP请求到SAP Cloud Platform的某个endpoint上。

例子:cf logs connectvity-demo-approuter --recent

而后就能看到为了完成这个命令所发送的HTTP请求和响应的负载。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

相关文章
相关标签/搜索