近日以来,Kubernetes弃用Docker、不再维护与Docker之间的桥接关系已在Apache开源基金会公布,在技术圈内也传的风生水起,其实Docker的结局不是偶然,而是必然。自Google大举推出Kubernetes以来,快速的完善其能力,Docker的被抛弃已是必然,只是时间早晚问题。作为互联网研发运维同学,我们是时候好好了解下Kubernetes了~
什么是Kubernetes呢?一个自动化容器操作的开源平台,支持自动部署、调度节点、弹性伸缩。此外,它还是一个开放的开发平台,不局限于任何开发平台,不限定任何编程接口。无论是使用Java、python、golang、net编写的服务都可以映射为k8s的service,通过标准的tcp协议进行交互。并且由于k8s对开发框架、开发语言没有侵入性,所以即使应用原先部署在私有云、物理机平台都可以平滑地迁移到k8s平台。最后它还是一个分布式系统开发与支撑平台,提供灵活的服务注册和服务发现机制、强大的故障发现能力、自我修复能力、弹性扩容能力,涵盖了从开发到上线运维的全过程,让开发人员只聚焦于业务开发。
Kubernetes中有MasterNode、WorkNode两大技术概念。主节点masternode控制整个集群,是指挥中心,从节点worknode处理业务,是业务骨干。
MasterNode包括kubectl、Apiserver、Scheduler、Controller、Ectd,我们从数据流来看Kubernetes内部是如何运转。管理人员(一般为运维人员)通过kubetcl来执行资源的增、删、改、查等操作,而kubetcl是通过APIserver来去执行这一系列管理动作的,并在执行的过程中将所有资源对象的信息存在在etcd,Scheduler负责整个Pod资源的调度ÿ