前言 K8S现在是面试一项必会的技能,它为软件工程师提供了强大的原理也容器编排能力,模糊了开发和运维之间的花分后再边界,让我们开发、钟总管理和维护一个大型的结下分布式系统和项目变得更加容易,并且每次面试多多少少都会问到,面试笔者也是原理也被问到了很多次。本文就准备用最短的花分后再篇幅来介绍下K8S的工作过程。 K8S架构组成 Kubernetes最初源于谷歌内部的钟总Borg,提供了面向应用的结下容器集群部署和管理系统。Kubernetes借鉴了Borg的面试设计理念,比如Pod、原理也Service、花分后再Labels和单Pod单IP等。钟总 Kubernetes主要由以下几个核心组件组成: 除了核心组件,还有一些推荐的Add-ons: k8s各组件间工作流程 ①运维人员向kube-apiserver发出指令(我想干什么,我期望事情是什么状态) (以下kube-apiserver简称apiserver、kube-controller-manager简称controller、kube-scheduler简称scheduler) ②api响应命令,通过一系列认证授权,把pod数据存储到etcd,创建deployment资源并初始化。(期望状态) ③controller通过list-watch机制,监测发现新的deployment,将该资源加入到内部工作队列,发现该资源没有关联的pod和replicaset,启用deployment controller创建replicaset资源,再启用replicaset controller创建pod。 ④所有controller被创建完成后.将deployment,replicaset,pod资源更新存储到etcd。 ⑤scheduler通过list-watch机制,监测发现新的pod,经过主机过滤、主机打分规则,将pod绑定(binding)到合适的主机。 ⑥将绑定结果存储到etcd。 ⑦kubelet每隔 20s(可以自定义)向apiserver通过NodeName 获取自身Node上所要运行的站群服务器pod清单.通过与自己的内部缓存进行比较,新增加pod。 ⑧kubelet创建pod。 ⑨kube-proxy为新创建的pod注册动态DNS到CoreOS。给pod的service添加iptables/ipvs规则,用于服务发现和负载均衡。 ⑩controller通过control loop(控制循环)将当前pod状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则controller会将pod修改为用户期望状态,实在不行会将此pod删掉,然后重新创建pod。 总结 Kubernetes的架构设计,理清楚之后,其实还是很简单的。面试的时候问到K8S原理,对于大部分人来说能答出这些,基本上就差不多了。Kubernetes深入的实现原理,还需要单独分析,本文只是一个抛砖引玉,如果有错误,欢迎大家批评指正。网站模板大家一起努力进步!K8S
K8S架构图
K8S工作过程
K8S