Bha*_*sad 5 openshift kubernetes-statefulset okd
我已经使用自动滚动策略部署了 mongo 有状态 pod,下面是它的模板。部署成功,Pod 进入 Running 状态。
- 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
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下 set 命令更新 mongo 的图像,
oc set image statefulset/mongo mongo=mongo:4.2 -n mongo-replica
Run Code Online (Sandbox Code Playgroud)
在尝试更新图像时,pod 出现“CrashLoopBackOff”错误。我希望 Pod 自动回滚到之前运行的版本。
但是豆荚在“CrashLoopBackOff”错误状态下被击中。我希望 pod 回滚到之前运行的版本。任何建议在这里将不胜感激。
小智 1
遗憾的是,Statefulset 没有回滚功能,但您可以使用探针保证您的服务,配置良好的 Liveness 和 Readiness 探针后,更改后的版本将仅取代正在运行的版本,且探针回答 ok 状态。
这样,您的 3 个副本中只有一个会因故障而崩溃,您可以通过它来解决问题或手动回滚更改,但不会丢失服务的交付。
有关此内容的更多详细信息,您可以在 k8s 文档中查看: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#forced-rollback
关于探针,您可以在这里得到很好的解释: https://www.openshift.com/blog/liveness-and-readiness-probes
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |