Openshift 如果POD未处于运行状态,StatefSet无法回滚

Openshift 如果POD未处于运行状态,StatefSet无法回滚,openshift,okd,kubernetes-statefulset,Openshift,Okd,Kubernetes Statefulset,我已经部署了带有自动滚动策略的mongo状态吊舱,下面是它的模板。部署成功,吊舱处于运行状态 - apiVersion: apps/v1beta1 kind: StatefulSet metadata: name: mongo spec: serviceName: "mongo" podManagementPolicy: Parallel replicas: 3 strategy: type: Rolling templat

我已经部署了带有自动滚动策略的mongo状态吊舱,下面是它的模板。部署成功,吊舱处于运行状态

- apiVersion: apps/v1beta1
  kind: StatefulSet
  metadata:
    name: mongo
  spec:
    serviceName: "mongo"
    podManagementPolicy: Parallel
    replicas: 3
    strategy:
      type: Rolling
    template:
      metadata:
        labels:
          role: mongo
          environment: test
      spec:
        terminationGracePeriodSeconds: 10
        containers:
          - name: mongo
            image: mongo:4.0
            imagePullPolicy: Always
            command:
              - mongod
              - "--replSet"
              - rs0
              - "--bind_ip"
              - 0.0.0.0
              - "--smallfiles"
              - "--noprealloc"
            ports:
              - containerPort: 27017
            volumeMounts:
              - name: mongo-persistent-storage
                mountPath: /data/db
          - name: mongo-sidecar
            image: cvallance/mongo-k8s-sidecar
            env:
              - name: MONGO_SIDECAR_POD_LABELS
                value: "role=mongo,environment=test"
    updateStrategy:
      type: RollingUpdate
我正在尝试使用以下set命令更新mongo的图像

oc set image statefulset/mongo mongo=mongo:4.2 -n mongo-replica
在尝试更新映像时,POD出现“CrashLoopBackOff”错误。我希望吊舱自动回滚到以前的运行版本


但是这些吊舱是在“CrashLoopBackOff”错误状态下被击中的。我想把吊舱回滚到以前的运行版本。此处的任何建议都将不胜感激。

StatefolSet不幸没有回滚功能,但您可以使用探测器保证您的服务,具有良好的配置活动性和就绪性探测器更改后的版本将仅取代运行中的版本,探测器回复ok状态

这样,3个副本中只有一个会在故障时崩溃,您可以使用它来解决问题或手动回滚更改,但不会丢失服务

有关这方面的更多详细信息,请参见k8s文档:

关于探头,您可以在这里得到很好的解释: