Deployment、StatefulSet和DaemonSet的更新策略

总结

下面是一个关于 Kubernetes 中 Deployment、StatefulSet 和 DaemonSet 的更新策略的比较表格:

特性 / 更新策略DeploymentStatefulSetDaemonSet
升级策略滚动升级(Rolling Update)有序升级(Ordered Update)全局升级(Global Update)
更新时的可用性部分中断,Pod 逐步替换部分中断,按顺序更新 Stateful Pod无中断,每个节点一个 Pod
稳定的网络标识不保证,Pod 可能会有不同的 IP保证,每个 Pod 都有稳定的标识不保证,每个节点一个 Pod
持久化存储的支持通常与 PVC 配合使用有 PVC 支持,每个 Pod 有唯一的 PV通常与 PVC 配合使用
更新时的顺序并行更新多个 Pod,按副本数比例按顺序更新,一个一个更新并行更新,每个节点一个 Pod
是否支持无状态 Pod

这张表格总结了 Deployment、StatefulSet 和 DaemonSet 在更新策略方面的一些关键差异。在选择适合您应用需求的控制器类型和更新策略时,考虑这些差异非常重要。请注意,每个控制器类型都有其适用的使用场景和优劣势,根据实际需求做出选择。

稳定的网络标识是指在 Kubernetes 集群中,每个 Pod 在其生命周期内都拥有一个不变的网络标识,使其能够通过固定的网络地址和主机名进行识别和访问。这样的网络标识对于应用程序的可靠性、网络通信以及基于服务的架构非常重要。

在 Kubernetes 中,Pod 默认情况下没有稳定的网络标识。这是因为在一些场景下,Pod 可能会被删除、重新创建或重新调度到不同的节点上,导致其**网络标识(如 IP 地址和主机名)**发生变化。

然而,有些应用场景中,稳定的网络标识是必需的。这时就可以使用 StatefulSet 控制器来确保每个 Pod 都有稳定的网络标识。StatefulSet 会为每个 Pod 分配一个稳定的网络标识,通常通过设置 DNS 子域名来实现。这样,无论 Pod 被重新创建或重新调度到哪个节点,它都会保持相同的 DNS 名称和网络标识。

StatefulSet 的稳定网络标识特性对于需要保持持久化存储、有序启动和关闭、节点有限制的应用程序非常有用,例如数据库集群或消息队列系统。

总之,稳定的网络标识确保在 Kubernetes 集群中每个 Pod 都有一个不变的网络标识,从而使得应用程序能够以可靠的方式进行通信和访问。这对于某些应用场景非常关键。

下面是有关Deployment、StatefulSet和DaemonSet的更新策略的详细说明:

Deployment 更新策略:

更新Deployment的注意事项

在Deployment对象中,可以使用.spec.strategy.type字段来定义更新策略。以下是几种常见的更新策略:

  1. RollingUpdate(默认):这是默认的更新策略。在进行滚动更新时,Deployment会逐步升级或回滚Pods。新的Pods会被创建并且在它们就绪后,旧的Pods会被逐个删除。您可以通过.spec.strategy.rollingUpdate.maxUnavailable字段指定允许的不可用Pods的最大数量。

  2. Recreate:此策略会将所有旧的Pods一次性删除,然后创建新的Pods。在这种情况下,会有一个短暂的应用程序中断期。该策略通常用于无状态应用程序,对于有状态应用程序可能导致数据丢失。

StatefulSet 更新策略:

StatefulSet更新策略

StatefulSet具有两个更新策略,即.spec.updateStrategy.type字段:

  1. OnDelete:这是默认值,StatefulSet在手动触发更新时遵循此策略。当您手动删除StatefulSet控制器时,控制器将按顺序删除每个Pod,并创建新的Pod以替换它们。

  2. RollingUpdate:您可以将此策略用于自动滚动更新。它使用两个参数:.spec.updateStrategy.rollingUpdate.partition.spec.updateStrategy.rollingUpdate.maxUnavailable。Partition指定在升级期间要同时删除的Pods数量,而maxUnavailable则定义了允许的不可用Pods的最大数量。

DaemonSet 更新策略:

更新和回滚DaemonSet

DaemonSet通常用于在集群中的每个节点上运行一个Pod副本。由于每个节点只有一个副本,所以更新策略相对简单。DaemonSet的更新策略可以通过.spec.updateStrategy.type字段进行控制:

  1. RollingUpdate:这是默认值,表示使用滚动更新策略。在这种策略下,新的Pods会被创建并且在就绪后旧的Pods会被逐个删除。

  2. OnDelete:该策略将在手动触发更新时使用。当您手动删除DaemonSet时,Kubernetes将按顺序删除每个Pod,并创建新的Pod以替换它们。

注意:更新策略可能因Kubernetes版本或集群配置而有所不同。请查阅Kubernetes文档以获取更多详细信息。

ks rollout restart ds cilium

在给定的上下文中,updateStrategy 是一个用于控制 Kubernetes DaemonSet 的更新策略的部分。DaemonSet 是一种 Kubernetes 控制器,用于确保集群中的每个节点都运行一个实例副本。

rollingUpdate 是其中的一种更新策略类型,通过逐步更新 DaemonSet 的实例来实现滚动更新。它具有以下参数:

  • maxUnavailable:指定在进行滚动更新时可以同时不可用的最大实例数。在这里,设置为2,表示在进行滚动更新过程中,最多允许同时有2个实例不可用。

type 指定了更新策略的类型,这里设置为 RollingUpdate,表示使用滚动更新策略。

综合起来,该配置指示 Kubernetes 使用滚动更新策略来更新 DaemonSet。通过在更新期间最多允许2个实例不可用,Kubernetes 将逐步更新 DaemonSet 的实例,以确保高可用性和服务的持续运行。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值