gpt4 book ai didi

kubernetes - 像部署一样在不停机的情况下更新 DaemonSet

转载 作者:行者123 更新时间:2023-12-04 00:22:05 24 4
gpt4 key购买 nike

我想在任何节点上运行一个应用程序。每个节点应该始终至少有一个实例,但允许更多实例,主要是在更新期间以防止该 pod(和节点)停机。

Kubernetes 部署更新通常通过启动新的 pod 来工作,一旦可用,旧的 pod 就会终止。这很完美,但在我的例子中,我需要一个 DaemonSet 来始终在所有节点上启动特定的应用程序。然而,当更新这个 DaemonSet 时,Kubernetes 会一个接一个地(即逐个节点)杀死一个 pod,然后然后启动一个新的 pod,这意味着在更新期间的任何给定时间 pod 可能没有运行在一个节点上。

与 Deployment 相比,DaemonSet 似乎是正确的方法,但我找不到任何方法来防止更新 DaemonSet 时出现停机。有什么办法吗?我还考虑过使用 Deployments 并手动更新副本数量和 antiPodAffinity,这样每个节点只部署一个 pod,但这有点 hacky。

最佳答案

关于添加此功能的讨论很长。你可以看到他们herehere

长话短说,这真的不可能。您可以尝试在 updateStrategy 中组合使用 maxUnavailable: 0type: rollingUpdate,但我认为这不受正式支持。

例子:

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
labels:
service: my-daemonset
spec:
selector:
matchLabels:
service: my-daemonset
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
template:
metadata:
labels:
service: my-daemonset
spec:
containers:
- name: daemonset-update
image: my-image:latest

关于kubernetes - 像部署一样在不停机的情况下更新 DaemonSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54116493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com