创建一个Replication和Service后k8s内所有组件
作者:
崔天浩 | 来源:发表于
2019-10-25 10:08 被阅读0次
假如我在kubernetes集群中创建一个Replication,k8s内所有组件的工作流程
- 当以yanl文件创建一个资源,kubectl通过一个http post请求将文件发布到api server
- API SERVER需要通过“认证插件”认证客户端是谁发来的请求,再通过“授权插件”来决定客户端是否有创建修改资源的权限,然后会通过“准入控制插件”验证AND/OR修改资源请求,最后API SERVER会验证存储到etcd中,然后返回一个响应给客户端
- controller-manager 会通过“监听机制”订阅监控API SERVER控制器副本集或者符合条件pod数量的变更事件,任何该类型的变化,将触发“控制器”重新检查“期望”的以及“实际”的副本数量,假如当前pod实例少于期望副本数时,控制器会创建新的pod清单,发布到API SERVER让“调度器”进行调度pod
- scheduler (调度器)也是通过“监听机制”订阅监控 API SERVER 等待新创建pod事件,收到事件后 scheduler会通过“调度算法”为每个节点下发一组配置好预置函数(资源,标签,污点,亲和性等条件的匹配)查找可用节点,最后通过API SERVER更新pod的定义,然后API SERVER去通知kubelet
- kubelet 也是通过“监听机制”订阅监控 API SERVER 发现有pod被调度到本节点,它会调用本节点容器引擎(docker,coreos等)创建pod所需容器,最后完成创建pod,kubelet随后持续监控允许的容器,向API SERVER报告它们的状态,事件,和消耗的资源
然后我为这个Replication创建一个service,k8s内所有组件的工作流程
- 从kubectl到API SERVER提交请求和上面相同,这里不在赘述
- kube-proxy 接收到api server上的创建server事件后,会创建同名的server和endpoint控制器资源,endpoint控制器会作活动的组件,定期根据匹配标签选择器的pod的ip,端口进行更新“端点列表”,最后kube-proxy 通过定义iptable或者lvs规则把流量代理到这些“端点列表”中的pod上
- DNS组件会利用api SERVER监听机制来订阅Service,Endpoint控制器的变动生成对应dns记录以及更新dns记录,所以总能获取到最新dns记录
本文标题:创建一个Replication和Service后k8s内所有组件
本文链接:https://www.haomeiwen.com/subject/vhxsvctx.html
网友评论