我们有一个节点比较多的k8s集群。现在想部署advanced daemonset 。希望能做到部署该daemonset时,分批分阶段创建pod,而不是一次全部创建完,这个需求OpenKruise 能支持到吗?目前看 只能通过node label做动作了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
OpenKruise 是一个针对 Kubernetes 的开源扩展,它提供了一些增强功能来简化工作负载的管理。根据您的需求,您希望在部署 Advanced DaemonSet 时能够分批分阶段创建 Pod。
OpenKruise 确实支持通过 Node label 进行操作,但它也提供了其他一些功能来满足您的需求。例如,您可以使用 OpenKruise 的 RollingUpdate 特性来实现分批更新 Pod。RollingUpdate 允许您逐步替换旧的 Pod,而不是一次性全部替换。这样可以减少对集群资源的影响,并确保在更新过程中服务的可用性。
要使用 OpenKruise 的 RollingUpdate 特性,您需要在部署 Advanced DaemonSet 时设置相应的参数。以下是一个示例:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
...
在这个示例中,updateStrategy
被设置为 RollingUpdate
,并且设置了 maxUnavailable
和 maxSurge
参数。这意味着在更新过程中,最多只能有一个 Pod 同时处于不可用状态,并且最多只能有一个新的 Pod 同时处于就绪状态。这样可以确保在更新过程中服务的可用性。
OpenKruise的Advanced DaemonSet确实支持分批分阶段创建Pod。你可以通过设置.spec.updateStrategy
字段来实现这个需求。
例如,你可以设置maxUnavailable
和maxSurge
来控制每次更新时Pod的最大不可用数量和最大超出期望数量。这样,在部署Advanced DaemonSet时,Kubernetes会根据这些参数逐步创建或销毁Pod,从而实现分批分阶段的效果。
以下是一个示例:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
在这个示例中,我们设置了maxUnavailable
为1,maxSurge
为1。这意味着在每次更新时,最多只有一个Pod处于不可用状态,同时最多有一个额外的Pod被创建。通过这种方式,我们可以实现分批分阶段创建Pod的需求。
试试 增加 annotations daemonset.kruise.io/progressive-create-pod='true',并且 与 partition一起使用。此回答整理自钉群“OpenKruise 社区交流群”