【问题标题】:In Kubernetes Deployment, how not to start all the pods at once在 Kubernetes Deployment 中,如何不一次启动所有 pod
【发布时间】:2022-01-31 17:21:06
【问题描述】:

我正在使用 Kubernetes 部署。我希望一个一个地启动豆荚。不是一下子。有没有什么办法。我不想使用 statefulSet。

kind: Deployment
metadata:
  name: my-deployment
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-container-image
        ports:
        - name: https
          containerPort: 8443
        volumeMounts:
            - mountPath: /tmp
              name: app-vol
        restartPolicy: Always
      imagePullSecrets:
        - name: regcred
      volumes:
        - name: app-vol
          persistentVolumeClaim:
            claimName: app-vol

【问题讨论】:

  • 部署不保证有序启动。 StatefulSets 是实现您所需要的方法。您能解释一下为什么要避免使用 statefulsets 吗?
  • 这是部署的反模式。
  • 这里的要求很模糊,没有更多细节。但也许部署策略和 Lieveness/startuprobe 才是他们想要的?

标签: kubernetes


【解决方案1】:

我希望一个一个地启动 pod。不是一下子。有没有什么办法。我不想使用 statefulSet。

不幸的是,您正试图通过Deployment 完成一些可以通过Statefulset 实现的事情。是否可以通过部署达到预期的效果?可以得到一个类似的,但它需要creating a custom script,这将是一个非标准的解决方案。

但是,这不是推荐的解决方案。 Statefulset 非常适合在启动期间进行 feed 控制,你不应该在这里使用其他任何东西。

总结一下:你应该稍微改变一下假设并接受 statefulset,这样你就可以达到你想要的结果,或者你不应该控制 pod 的运行顺序。

正如评论中提到的rohatgisanat

部署不保证有序启动。 StatefulSet 是实现您所需的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多