理论
当您修改了DaemonSet的/args参数时,DaemonSet控制器会自动触发Pod的滚动更新。滚动更新的过程是逐个将旧的Pod删除并创建新的Pod,以确保应用程序的高可用性和稳定性。
在进行滚动更新时,DaemonSet控制器会按照以下步骤逐个重启Pod:
- DaemonSet控制器会
逐个选择
需要更新的Pod,然后将其标记为“待删除”状态。 - 控制器会等待一段时间,以确保新的Pod已经准备好并正常运行。
- 控制器会检查旧的Pod是否已经终止,如果没有,则等待一段时间再检查。
- 控制器会删除旧的Pod,并创建新的Pod。
- 控制器会等待一段时间,以确保新的Pod已经准备好并正常运行。
- 控制器会继续进行上述步骤,直到所有Pod都已经更新完成。
在进行滚动更新时,DaemonSet控制器会尽可能地保持应用程序的可用性和稳定性,因此它会在更新每个Pod之前等待一段时间,以确保新的Pod已经准备好并正常运行。如果您修改的参数不影响应用程序的可用性和稳定性,则可以通过更改DaemonSet的更新策略来加快更新速度。
一段时间的长短取决于DaemonSet控制器的配置和当前集群的负载情况。在默认情况下,DaemonSet控制器会在删除旧Pod之前等待30秒,以确保新Pod已经准备好并正常运行。这个等待时间可以通过DaemonSet的.spec.minReadySeconds
字段进行配置。
此外,控制器还会根据当前集群的负载情况自动调整滚动更新的速度。如果集群中的负载较高,则控制器会减慢滚动更新的速度,以避免影响应用程序的可用性和稳定性。如果集群中的负载较低,则控制器会加快滚动更新的速度,以更快地将应用程序更新到最新版本。
总之,一段时间的长短是动态变化的,取决于多种因素,包括控制器的配置、集群的负载情况和应用程序的特性等。
实验
这个更新策略指定了一个 Kubernetes 部署的滚动更新。滚动更新将确保在更新过程中最多有 2 个副本不可用,而其余的副本将逐个更新。这有助于确保在更新过程中没有停机时间。更新策略的类型是 RollingUpdate,这是 Kubernetes 部署的默认策略。