阿里P8架构师分享:从Docker到K8s的深入实践全接触

2019-07-02 23:51发布

1.什么是Docker?

Docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的是集装箱(Container),集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App(叫Payload)装在Container内,通过Linux Container技术的包装将App变成一种标准化的、可移植的、自管理的组件,这种组件可以在你的latop上开发、调试、运行,最终非常方便和一致地运行在production环境下。

相比官方解释,相信说Docker是一个轻量级的虚拟机更容易理解,接下来我们来看下docker与VM的区别。

2.Docker是怎么工作的?

Docker是一个的client -server架构,docker daemon在主机上面执行,负责容器的构建运行和分开,用户通过client与主机上的daemon通讯,也可以通过client来操作容器。Client和Daemon可以在同一台主机上面执行,也可以分开执行。本地的client可以连接远程的daemon,这就让docker使用起来更加方便快捷。

在我们了解完docker之后,我们来看下kubernetes工作原理

3.什么是Kubernetes?

Kubernetes是Google推出的一个用于容器集群的自动化部署、扩容以及运维的开源平台,就像一个智能的调度码头一样,他架构简洁功能清晰,核心理念就是对于资源和任务的理解和引入标签的设计,所以他具备,可移植,可扩展可自愈等特点.

4.Kubernetes 是怎么工作的?

Kubernetes是一个分布式的系统架构,APIserver作为集群的核心,负责集群的各功能模块之间的通信,就像智能码头的调度室,集群内的功能模块通过API sever将信息存入etcd,其他模块通过api server(用 git list 或者watch方式读取这些信息)从而实现模块之间的信息交互比如node节点上的kubelet每隔一个时间周期,通过apiserver报告自身状态apiserver接收到这些信息后,将节点状态信息保存到etcd中,controller manager 中的node controller通过api server定期读取这些节点状态信息并做相应处理

又比如 scheduler监听到某个pod创建的信息后检索所有符合该pod要求的节点列表,并将pod绑定到节点最符合要求的节点上如果schedule监听某个pod被删除则调用api server删除该pod资源对象 kubelet监听pod信息如果监听到pod对象修改信息则kubelet监听到变化后会相应的修改本地节点的pod实例为了缓解集群个模块对APIserver的访问压力各功能模块都采用缓存机制来缓存数据各功能模块定时从apiserver获取制定对象信息(通过list及watch方式)然后将这些信息保存到本地缓存功能模块在某些情况下不直接访问apiserver 而是通过访问缓存数据来间接访问api server。

在了解完docker与kubernetes的基本概念之后,我们来看下我们的应用实践。

基于Docker&K8S的深入实践

阅读目录:

最后:

从Docker到K8S的实践全接触PDF是可以免费送给想要学习的朋友的!

关注后私信【架构资料】即可免费获取!

文章来源: https://www.toutiao.com/group/6708998015429902852/