开发者社区 > 云原生 > 容器服务 > 正文

OpenKruise中有什么办法能暂停statefulset吗?

问题1:OpenKruise中有什么办法能暂停statefulset吗?
问题2:默认的statfulset支持暂停吗?这个吗?288e2dc34399dd5206173fa4092f39ce.png
https://kubernetes.io/zh-cn/docs/tutorials/stateful-application/basic-stateful-set/#phased-roll-outs

展开
收起
小易01 2023-07-26 08:57:10 98 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 OpenKruise 中,可以通过以下方式暂停或恢复 StatefulSet:

    使用 kubectl pause 和 kubectl resume 命令。您可以使用 Kubernetes 的 kubectl pause 命令暂停 StatefulSet 的所有 Pod,并使用 kubectl resume 命令恢复它们的运行。例如,使用以下命令暂停 StatefulSet:

    Copy
    kubectl pause statefulset
    使用以下命令恢复 StatefulSet:

    Copy
    kubectl resume statefulset
    这种方式可以暂停 StatefulSet 的所有 Pod,但无法暂停或恢复单个 Pod。

    使用 Kruise 的 CloneSet 对象。Kruise 的 CloneSet 对象可以创建多个 Pod,类似于 Kubernetes 的 Deployment 对象。您可以使用 CloneSet 创建一个与 StatefulSet 相同的 Pod 集合,并暂停或恢复其中的一个或多个 Pod,而不影响其他 Pod。例如,使用以下 YAML 文件创建一个 CloneSet:

    yaml
    Copy
    apiVersion: apps.kruise.io/v1alpha1
    kind: CloneSet
    metadata:
    name: my-clone-set
    spec:
    replicas: 3
    template:
    metadata:
    labels:
    app: my-app
    spec:
    containers:

      - name: my-container
        image: my-image
    

    然后,您可以使用 kubectl scale 命令增加或减少 CloneSet 的副本数量,以暂停或恢复其中的一个或多个 Pod。例如,使用以下命令将 CloneSet 副本数量减少到 2,以暂停其中的一个 Pod:

    Copy
    kubectl scale cloneset my-clone-set --replicas=2
    使用以下命令将 CloneSet 副本数量增加到 3,以恢复其中的所有 Pod:

    2023-07-29 09:03:26
    赞同 展开评论 打赏
  • 在 OpenKruise 中,你可以使用 PauseStatefulSet 功能来暂停 StatefulSet 的更新和扩缩容操作。通过暂停 StatefulSet,你可以阻止对其关联的 Pod 进行更新,以便执行其他操作或进行故障排查。

    要暂停一个 StatefulSet,你可以执行以下步骤:

    1. 安装 OpenKruise:首先,确保你已经安装了 OpenKruise,并且版本符合要求。

    2. 创建 PauseStatefulSet:创建一个新的 PauseStatefulSet 对象,该对象与要暂停的 StatefulSet 相关联。你可以通过 YAML 文件或命令行参数来指定相应的配置信息。

    3. 暂停 StatefulSet:将 StatefulSet 切换到暂停状态。这可以通过修改 PauseStatefulSet 对象的 spec.pausable 字段为 true 来实现。OpenKruise 会监控该字段并相应地暂停 StatefulSet。

    4. 执行所需操作:一旦 StatefulSet 被暂停,你可以进行其他操作,如故障排查、调整资源配额等。此时,任何对 StatefulSet 的更新和扩缩容操作都将被阻止。

    5. 恢复 StatefulSet:当完成需要的操作后,你可以将 StatefulSet 恢复到正常状态。这可以通过将 PauseStatefulSet 的 spec.pausable 字段设置为 false 来实现。

    请注意,暂停 StatefulSet 只会阻止对其关联的 Pod 的更新操作,而不会影响任何与 StatefulSet 相关的其他资源。另外,暂停和恢复 StatefulSet 需要在 OpenKruise 环境中进行,而非原生 Kubernetes。

    2023-07-27 22:47:10
    赞同 展开评论 打赏
  • 意中人就是我呀!

    "回答1:是指这个吗? https://openkruise.io/docs/user-manuals/advancedstatefulset#paused-update
    回答2:支持的,是的。此回答整理至钉群“OpenKruise 社区交流群”。"

    2023-07-26 12:37:25
    赞同 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载