博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
k8s-API server原理分析
阅读量:6573 次
发布时间:2019-06-24

本文共 1473 字,大约阅读时间需要 4 分钟。

我们都知道, k8s的API server核心功能是提供了k8s各类资源对象(Pod,RC,service)的增,删,改,查及HTTP REST接口。

server是通过一个名为kube-apiserver的进程提供服务。该进程运行在master节点上,默认情况下,在本机8080端口提供REST服务。

通常我们可以通过命令行工具kubectl来与API server交互。它们之间的接口是REST调用。为了测试和学习API server所提供的接口,也可以使用curl命令行工具进行快速验证。

比如我们登录master节点,运行下面的curl命令,得到以json方式返回的API的版本信息:

curl localhost:8080/api

可以运行下面命令,查看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进程启动一个内部代理来实现。

kubectl proxy --reject-paths="^/api/v1/replicationcontrollers" --port=8001 --v=2

然后运行下面命令验证:

curl localhost:8080/api/v1/replicationcontrollers

会显示如下:

也就是说可以通过proxy提供简单有效的安全机制。

最后一种方式是可以通过编程的方式调用API server。

集群功能模块之间的通细腻

如下图所示:

API server作为集群的核心,负责各个功能模块之间的通信。集群中各个模块通过API server将信息存入etcd,当需要获取和操作这些数据时,则通过API server提供的REST接口来实现,从而实现各模块之间的信息交互。

常见的一个交互场景是kubelet与API server交互。每个node节点上的kubelet每隔一个时间周期,会调用一次API server的REST接口报告自身状态。API server接受到这些信息,更新至etcd中,此外,kubelet也通过server的watch接口监听pod信息,若监听到新的pod副本被调度绑定到本节点,则执行pod对应的容器创建和启动。如果监听到pod对象被删除,则删除本节点上对应的pod容器。

另一个交互场景是kube-controller-manager进程与API server的交互。前者的Node controller模块通过API server提供的watch接口。实时监控Node的信息。

还有一个比较重要的交互场景就是kube-scheduler与api server交互,当前者通过server的watch接口监听到新建pod副本的信息后,它会检索所有符合该pod要求的Node列表,开始执行pod调度逻辑,调度成功后将pod绑定到目标节点上。

转载于:https://www.cnblogs.com/sichenzhao/p/9320112.html

你可能感兴趣的文章
c++类的嵌套(1)
查看>>
Android SqlLite数据库的创建、增、删、改、查、使用事务
查看>>
phpStorm无法使用svn1.8的解决办法
查看>>
Talk is cheap,show me the code
查看>>
[Java]知乎下巴第3集:来人啊快把知乎的答案装到篮子里去
查看>>
解决中文乱码的问题
查看>>
前端异常测试
查看>>
JSON与localStorage的爱恨情仇
查看>>
input验证码框,输入非数字或非12位时,红框提示;每4位加一个空格
查看>>
IOS上iframe的滚动条失效的解决办法
查看>>
C++_012C++11的语法新特性
查看>>
Git学习笔记:常用命令总结
查看>>
iOS - OC 与 Swift 互相操作
查看>>
sort、qsort排序
查看>>
修改时无论改成什么,值总是默认为1
查看>>
Android自动化测试01-环境安装连接问题及解决
查看>>
zencart后台修改首页meta_title、meta_keywords、meta_description
查看>>
SecureCRT 常用命令大全
查看>>
Android 通过触摸动态地在屏幕上画矩形
查看>>
序列化 反序列化
查看>>