shell编程
k8s的部署构架
kubernets中有两类资源,分别是master和nodes,master和nodes上跑的服务如下图
master:负责管理整个集群,例如,对应用进行调度(扩缩)、维护应用期望的状态,对应用进行发布等。
node:集群中的宿主机(可以是物理机也可以虚拟机),每个弄得上都有一个agent,名为kubelet,用于跟master通信。同时一个node需要有管理容器的工具包,用于管理在node上运行的容器(docker或rkt)。一个k8s集群至少要有3个节点。
kubelet通过master暴露的API与master通信,用户可以直接调用master的API做集群的管理。
k8s中的对象Objects
POD
k8s中的最小部署单元,不是一个程序/进程,而是一个环境(包括、存储、网络IP:port、容器配置)。其中可以运行一个或多个container(docker或其他的容器)
pod
k8s中的最小部署单元,不是一个程序/进程,而是一个环境(包括容器、存储、网络ip:port、容器配置)。其中可以运行1个或多个container(docker或其他容器),在一个pod内部的container共享所有资源,包括共享pod的ip:port和磁盘。
pod是临时性的,用完即丢弃的,当pod中的进程结束、node故障,或者资源短缺时,pod会被干掉。基于此,用户很少直接创建一个独立的pods,而会通过k8s中的controller来对pod进行管理。
controller通过pod templates来创建pod,pod template是一个静态模板,创建出来之后的pod就跟模板没有关系了,模板的修改也不会影响现有的pod。
service
由于pod是临时性的,pod的ip:port也是动态变化的。这种动态变化在k8s集群中就涉及到一个问题:如果一组后端pod作为服务提供方,供一组前端的pod所调用,那服务调用方怎么自动感知服务提供方。这就引入了k8s中的另外一个核心概念,services.
service是通过apiserver创建出来的对象实例,举例,