k8s基础机制

k8s基础机制

无状态pod的特性

顾名思义,pod无状态即pod不保留任何状态,没有持久化存储,可以进行快速扩展,通过增加更多的pod副本来处理负载。任何一个pod失败,都不会导致数据的丢失。

有状态pod的特性

数据库都是有状态,因为其需要持久化数据。有状态pod,保留了状态,所以pod丢失并不会导致数据丢失。

Statefulset

k8s工作类型的控制器,用于有状态应用的部署,为每一个pod提供唯一的网络标识(稳定过的主机名和dns)

功能

  1. 为每一个pod提供唯一的网络标识: DNS和hostname

  2. 为每一个pod提供持久化存储:PV

  3. pod有序,创建、扩展、删除和网络标识都是有序的

    statefulset任务在启动pod时会按照pod的序号进行存储,序号较小的pod会优先启动。大多数策略都是根据顺序进行操作。

  4. 支持滚动更新
    statefulset的滚动更新是先从序号低的开始滚动更新

  5. StatefulSet通过.spec.podManagementPolicy字段支持两种Pod管理策略:OrderedReady和Parallel。
    默认策略是OrderedReady,Pod在启动或终止时遵循顺序。而Parallel策略则允许并行地启动或终止Pod,不等待其他Pod变成Running和Ready状态

适用场景

需要持久化存储,稳定网络标识,有序和扩展的应用,如数据库系统等。

Deployment

k8s工作类型的控制器,用于无状态应用的部署

功能

  1. 管理replicas对象来保证pod副本的数量
  2. 支持滚动更新,可以自动替换旧版本的pod以更新应用。在更新pod场景时,新的pod启动并经过健康检查(liveness和readness探针)之后,才会逐步停止旧的pod,然后更新新的pod,这样做的好处是能够保证服务不断。

适用场景

适合水平扩展,不需要持久化存储和唯一网络标识的应用。

posted @ 2024-11-03 23:25  LemHou  阅读(2)  评论(0编辑  收藏  举报