任务(Job)

Job是k8s用来控制批处理型任务的API对象。

批处理型业务的运行是有头有尾的,而长期伺服型业务在用户不停止的情况下永远运行。

Job管理的Pod根据用户的设置把任务成功完成就自动退出。成功完成的标识根据不同的spec.completions策略而不同。

单Pod型任务有一个Pod成功就标识完成;定数成功型任务需要保证N个任务全部成功;工作队列型任务根据应用确认的全局成功标识成功。

后台支撑服务集(DaemonSet)

长期伺服型和批处理型服务的核心在业务应用,可能有些节点运行多个同类业务的Pod,而有些节点又没有这类Pod运行;而后台支撑型服务的核心关注点在k8s集群中的节点,保证每个节点都有一个此类Pod运行。

节点可能是所有集群节点,也可能是通过nodeSelector选定的一些节点。

典型的后台支撑型服务包括存储、日志和监控等在每个节点上支持k8s集群运行的服务。

有状态服务集(PetSet)

k8s在1.3版本发布Alpha版的PetSet功能。

RC和RS主要是控制提供无状态的服务,其所控制的Pod的名字是随机设置的,重要的是Pod总数。

PetSet所示用来控制有状态服务的,每个Pod的名字都是事先确定的,不能更改。

对于RC和RS中的Pod,一般不挂在存储或挂载共享存储,保存的是所有Pod共享的状态。

而PetSet中的Pod,每个Pod都挂载自己独立的存储,如果一个Pod出现故障,从其他节点启动一个同样名字的Pod,要挂载上原有的Pod存储并继续以它的状态提供服务。

PetSet适用的业务包括数据库服务MySQL和PostgreSQL,集群化管理服务Zookeeper、etcd等有状态服务。

PetSet的另一种典型应用场景是作为一种比普通容器更稳定可靠的模拟虚拟机的机制。实际上,传统的虚拟机正是一种有状态的Pet。

集群联邦(Federation)

k8s在1.3版本发布beta版的Federation功能。

在云计算环境中,服务的作用距离范围从近到远一般可以有:同主机(Host,Node)、跨主机同可用区(Available Zone)、跨可用区同地区(Region)、跨地区同服务商(Cloud Service Provider)、跨云平台。

k8s设计定位是单一集群在同一个地域内,因为同一个地区的网络性能才能满足k8s调度和计算存储连接要求。

而Federation是为提供跨Region、跨服务商的k8s集群服务而设计的。

每个k8s Federation都有自己的分布式存储、API Server和Controller Manager。

用户可以通过Federation的API Server注册该Federation的成员k8s Cluster。

当用户通过Federation的API Server创建、更改API对象时,Federation API Server会在自己所有注册的子k8s cluster创建一份对应的API对象。

在提供业务请求服务时,k8s Federation会先在自己的各个子cluster之间做负载均衡,而对于发送到某个具体k8s cluster的业务请求,会按照这个k8s cluster独立提供服务时的调度模式做k8s cluster内部的负载均衡。

cluster之间的负载均衡是通过域名服务的负载均衡来实现的。

results matching ""

    No results matching ""