常用的 API 对象

5. 任务(Job)

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

批处理业务与长期伺服业务的主要区别:

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

Job 会根据用户的设置管理 pod ,当任务成功完成后就会让 pod 自动退出。

Job 成功完成的标志会根据不同的 spec.completions 策略有所不同,主要有以下三种:

  • 单 pod 型任务有一个 pod 成功就标志完成;
  • 定数成功型任务保证有 N 个任务全部完成;
  • 工作队列型任务根据应用全局标识的成功而标志完成。

 6. 后台支持服务集(DaemonSet)

长期伺服型和批处理型服务的核心在业务应用,可能有些节点运行多个同类业务 pod,有些节点上又没有这类 pod 运行; 

而后台支撑型服务的核心关注点在 k8s 集群中的节点(物理机或虚拟机),要保证特定的节点上都有一个此类 pod 运行。

该特定的节点可能是集群中的每个节点,也可能是通过 nodeSelector 选定的一些特定节点。

典型的后台支撑型服务包括:存储、日志和监控。 

7. 有状态服务集(PetSet)

RC 和 RS 主要是控制提供无状态服务的,其所控制的 pod 的名字是随机设置的,一个 pod 出故障了被丢弃掉,在另一个地方重启一个新的 pod ,名字以及启动在哪都不重要,重要的是 pod 总数。 

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

 有状态服务和无状态服务最大区别,有状态服务需要挂载存储;无状态服务不挂载存储。

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

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

场景:

  1. 适合于 PetSet 的业务:数据库服务 MySQL 和 PostgreSQL,集群化管理服务 Zookeeper、etcd。
  2. PetSet 的另一种典型应用场景是作为一种比普通容器更稳定可靠的模拟虚拟机的机制。

8. 存储卷(Volume) 

k8s 存储卷的生命周期和作用范围是一个 Pod,每个 Pod 中声明的存储卷由 pod 中所有的容器共享。

9. 持久存储卷(Persistent Volume, PV) 和 持久存储声明(Persistent Volume Claim, PVC)

PV 和 PVC 技术使得 k8s 集群具备了存储的逻辑抽象能力,使得在配置 pod 的逻辑里可以忽略对实际后台存储技术的配置,而把这项配置的工作交给 PV 的配置者,即集群的管理者。

10. 节点(Node)

k8s 集群中的计算能力由 Node 提供,k8s 集群中的 Node 是所有 pod 运行时所在的工作主机,可以是物理机也可以是虚拟机。

不论是物理机还是虚拟机,工作主机的统一特征是上面要运行kubelet管理节点上运行的容器。

k8s 中最初 Node 称为 服务节点 Minion,后来改名为 Node。 

11. 密钥对象(Secret) 

Secret 是用来保存和传递密码、密钥、认证凭证这些敏感信息的对象。使用 Secret 的好处是可以避免把敏感信息明文写在配置文件里。

12.RBAC 访问授权 

k8s 在 1.3 版本中发布了 alpha 版的基于角色的访问控制(Role-based Access Control,RBAC)的授权模式。相对于基于属性的访问控制(Attribute-based Access Control,ABAC),RBAC主要是引入了角色(Role)和角色绑定(RoleBinding)的抽象概念。 

END

简要的介绍就是这么多了,如果不足以后再继续添加吧。然后各个 api 对象的详细用法,则在后文中慢慢逐个介绍。