kubernetes 带有podManagementPolicy=Parallel的Statefulset在更新时忽略了minReadySeconds,

b4qexyjb  于 5个月前  发布在  Kubernetes
关注(0)|答案(8)|浏览(125)

发生了什么?
使用 podManagementPolicy: ParallelminReadySeconds: 15 部署了一个有状态集(statefulset),并等待所有 pods 就绪。然后,对 sts 发起了滚动重启操作。
你期望会发生什么?
期望滚动更新的过程与 podManagementPolicy: OrderedReady 相同,即最后一个 pod 被终止,然后重启,等待就绪,再等待额外的 minReadySeconds 通过,然后移动到下一个 pod。然而,一旦 pod 就绪,滚动更新过程立即移动到下一个 pod,忽略了 minReadySeconds 设置。
我们如何尽可能最小精确地重现它?
应用以下 sts:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  minReadySeconds: 10
  podManagementPolicy: Parallel
  replicas: 5
  selector:
    matchLabels:
      application: web
  serviceName: web
  template:
    metadata:
      labels:
        application: web
    spec:
      containers:
      - image: nginx
        name: web
  updateStrategy:
    type: RollingUpdate

等待所有 pod 就绪。然后,发起滚动重启操作:

$ kubectl rollout restart sts web

然后观察到,一旦一个 pod 进入就绪状态,升级过程就会移动到下一个 pod,忽略 minReadySeconds 值。
如果 sts 是使用默认的 podManagementPolicy 创建的,更新过程将按预期工作。
我们需要了解其他什么信息吗?

  • 无响应*

Kubernetes 版本:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.3", GitCommit:"25b4e43193bcda6c7328a6d147b1fb73a33f1598", GitTreeState:"clean", BuildDate:"2023-06-14T09:53:42Z", GoVersion:"go1.20.5", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1
Server Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.3", GitCommit:"25b4e43193bcda6c7328a6d147b1fb73a33f1598", GitTreeState:"clean", BuildDate:"2023-06-15T00:36:28Z", GoVersion:"go1.20.5", Compiler:"gc", Platform:"linux/amd64"}

云提供商:
OS 版本:

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ uname -a
Linux k-desktop 6.1.0-9-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.27-1 (2023-05-08) x86_64 GNU/Linux

安装工具:
kind
容器运行时(CRI)和版本(如适用)
相关插件(CNI、CSI 等)和版本(如适用)

fiei3ece

fiei3ece2#

翻译结果为:我可以使用以下配置在k8s版本1.25.6中重现。如果使用podManagementPolicy: ParallelminReadySeconds: 20,有状态集控制器将忽略minReadySeconds: 20并直接更新下一个pod。从minReadySeconds的文档来看,它应该在更新过程中同时适用于podManagementPolicy = OrderedReadyParallel。经过测试,只有podManagementPolicy = OrderedReady按预期工作。

$x_1a^0b^1^x$

dba5bblo

dba5bblo4#

关于这个有什么更新吗?

piv4azn7

piv4azn75#

Kubernetes项目目前缺乏足够的贡献者来充分应对所有问题。
此机器人根据以下规则对未分类的问题进行分级处理:

  • lifecycle/stale应用后的90天不活动后,将应用lifecycle/stale
  • lifecycle/stale应用后的30天不活动后,将应用lifecycle/rotten
  • lifecycle/rotten应用后的30天不活动后,该问题将被关闭

您可以:

  • 将此问题标记为新鲜的/remove-lifecycle stale
  • 使用/close关闭此问题
  • 提供帮助,请使用Issue Triage

请将反馈发送至sig-contributor-experience@kubernetes/community
/lifecycle stale

vtwuwzda

vtwuwzda6#

Kubernetes项目目前缺乏足够的活跃贡献者来充分应对所有问题。
此机器人根据以下规则对未分类的问题进行分级处理:

  • lifecycle/stale应用后的90天内无活动,将应用lifecycle/stale
  • lifecycle/stale应用后的30天内无活动,将应用lifecycle/rotten
  • lifecycle/rotten应用后的30天内无活动,将关闭该问题

您可以:

  • 使用/remove-lifecycle rotten标记此问题为新鲜
  • 使用/close关闭此问题
  • 提供帮助,使用Issue Triage

请将反馈发送至sig-contributor-experience@kubernetes/community
/lifecycle rotten

zyfwsgd6

zyfwsgd67#

/remove-lifecycle rotten

k0pti3hp

k0pti3hp8#

/triage accepted
/priority important-longterm

相关问题