第一篇主要介绍了k8s的几个大的组件,kube-apiserver,scheduler,kubelet等,本文接着第一篇继续对kubernetes的一些组件进行介绍。
pod
kubernetes的基本管理单位,可以包含一个或多个container,pod运行在具体的node节点上,kubernetes通过scheduler模块来对
pod进行调度,已决定具体pod具体运行在那个节点上。具体调度算法后面通过一篇文章来具体介绍。在node节点上,kubelet负责具
体的pod创建,删除和更新。pod间的通信通过service和kube-proxy进行代理。
node
node可以理解为kubernetes管理的具体虚拟机,通过纳管流程,虚拟机注册到kubernetes,调度的时候只会调度这些纳管的节点。
纳管流程分为静态纳管和动态纳管两种方式,静态纳管是对已经存在的虚拟机进行纳管,动态纳管需要动态的通过具体的I层去创建
虚拟机,纳管节点主要是controller Manage远程登陆该虚拟机,从仓库中下载base_agent.sh脚本,然后在机器上执行
base_agent.sh脚本,该脚本主要实现下载agent包,安装kubelet,kube-proxy和monit,安装成功修改节点状态,纳管成功。
service
服务,是一个虚拟概念,逻辑上代理后端pod。众所周知,pod生命周期短,状态不稳定,pod异常后新生成的pod ip会发生变化,之前pod的访问方式均不可达。通过service对pod做代理,service有固定的ip和port,ip:port组合自动关联后端pod,即使pod发生改变,kubernetes内部更新这组关联关系,使得service能够匹配到新的pod。这样,通过service提供的固定ip,用户再也不用关心需要访问哪个pod,以及pod会否发生改变,大大提高了服务质量。如果pod使用rc创建了多个副本,那么service就能代理多个相同的pod,通过kube-proxy,实现负载均衡。
deployment
Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括:
- 定义Deployment来创建Pod和ReplicaSet
- 滚动升级和回滚应用
- 扩容和缩容
- 暂停和继续Deployment