最近被k8s概念撩动,所以准备了解k8s的原理。
在了解原理之前,先对k8s的几个概念进行整理归纳,做到知己知彼。
先放上参考链接 http://www.dockone.io/article/932 (十分钟带你理解Kubernetes核心概念),受益匪浅,十分感谢。
进入正题。
先放上链接中严谨的对kubernetes的描述:Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。也就是通过集合Docker、Rocket等容器技术为组件,来达到在一个平台上对容器的自动化控制,解放人力的同时提高业务系统强度与稳定性的目的。
链接里总结了k8s的能力:
- 自动化容器的部署和复制
- 随时扩展或收缩容器规模
- 将容器组织成组,并且提供容器间的负载均衡
- 很容易地升级应用程序容器的新版本
- 提供容器弹性,如果容器失效就替换它,等等...
(胡说)如果说docker等容器是手机上的app的话,那么k8s就是提供搭载app的手机。无论是什么环境,ios也好,安卓也好,塞班也罢,只要有需求,k8s都能提供,并且还装好了用户需要的一切app。奢侈地实现“一个手机挂qq,一个手机打电话”的目标(实际上k8s也鼓励用户这么做)
k8s需要搭建在集群之上,k8s集群中的每一个节点(物理机或者虚拟机)将会扮演不同的角色。先放一张图(转载于链接)
上图可以看到如下组件,使用特别的图标表示Service和Label:
- Pod
- Container(容器)
- Label()(标签)
- Replication Controller(复制控制器)
- Service()(服务)
- Node(节点)
- Kubernetes Master(Kubernetes主节点)
关于这些节点的描述各位务必直接参考开头链接,非常好懂,这里就不再重复了: http://www.dockone.io/article/932 (十分钟带你理解Kubernetes核心概念)
(胡说)我的理解中,Pod的k8s提供的环境,还是用手机的例子的话,Pod就是那些ios系统、安卓系统、塞班系统。而里面的Container就是安装在手机上的应用。Label是用户用来标记不同的Pod,方便管理,比如可以贴上“苹果Xs”、“华为mate20”这样的标签,或者是“看电影用的”,“这是聊天用的”,“这个上面有秘密”等等这样的标签。Replication Controller确保任意时刻都有足够的Pod,防止Pod挂了之后服务中断。Service提供一个服务的统一对象,这个对象可能包括多个Pod,但用户并不会关心具体是哪个Pod提供的服务,而只会通过Service来获取服务。Node是集群中的节点,没什么好说的。k8s Master是管理节点,负责Node以及平台层面的服务管理。
参考的链接里讲的非常细致且易懂,这里我只做一个自我理解的总结,如有错误,请各位指正。