K8S核心对象概念

基本对象

  1. Pod
    Pod是最小部署单元, 一个Pod由一个或多个容器组成, Pod中容器共享存储和网络, 再同一台Docker主机上运行.
  2. Service
    Service是一个应用服务抽象, 定义了Pod逻辑集合和访问这个Pod集合的策略.
    Service代理Pod集合对外表现为一个访问入口, 分配一个集群IP地址, 来自这个IP的请求将负载均衡转发后端Pod中的容器
    Service通过Label Selector选择一组Pod提供服务
  3. Volume
    数据卷, 共享Pod中容器使用的数据
  4. Namespace
    命名空间将对象逻辑上分配到不同namespace, 可以是不同的项目、用户等区分管理, 并设定控制策略, 从而实现多租户.
    命名空间也称为虚拟集群.
  5. Label
    标签用于区分对象(比如Pod、service), 键/值对存在, 每个对象可以有多个标签, 通过标签关联对象.

基础基本对象更高层次抽象

  1. ReplicaSet
    下一代Replication Controller, 确保任何给定时间指定的Pod副本数量, 并提供声明式更新等功能.
    RC与RS的唯一区别就是label selector支持不同, RS支持新的基于集合的标签, RC仅支持基于等式的标签.
  2. Deployment
    Deployment是一个更高层次的API对象, 它管理ReplicaSet和Pod, 并提供声明式更新等功能.
    官方建议使用Deployment管理ReplicaSet, 而不是直接使用RS.
  3. StatefulSet
    StatefulSet适合持久性的应用程序, 有唯一的网络标识符(IP), 持久存储、有序的部署、扩展、删除和滚动更新
  4. DaemonSet
    DaemonSet确保所有(或一些)节点运行同一个Pod. 当节点加入Kubernetes集群中, Pod会被调度到该节点上运行, 当节点从集群中移除, DaemonSet的Pod会被删除, 删除DaemonSet会清理它所有创建的Pod.
  5. Job
    一次性任务, 运行完成后Pod销毁, 不再重新启动新容器, 还可以任务定时运行.