我试图将MongoDB的图表版本从10.1.0升级到11.2.0,因为之前的版本已经过时了。在早期版本中未启用身份验证。但我在升级时设置了root用户密码。然而,仲裁者keep抛出身份验证错误,mongopods崩溃循环。
正如我所研究的,这是因为PVC(persistence:true
(,所以当我将其设置为false
并删除helm版本时,安装成功,pod正在运行。
但当使用helm3 upgrade
时,出现了以下错误:
Error: UPGRADE FAILED: cannot patch with kind StatefulSet: StatefulSet.apps is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden
我正在设法保留persistence:true
并为MongoDB设置身份验证。
值.yaml
mongodb:
architecture: replicaset
replicaCount: 2
podAntiAffinityPreset: hard
auth:
enabled: false
useStatefulSet: true
persistence:
enabled: true
size: 1Gi
resources:
limits:
cpu: 1
memory: 2Gi
requests:
cpu: 100m
memory: 1Gi
metrics:
enabled: true
livenessProbe:
enabled: true
readinessProbe:
enabled: true
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
gitlab CI
script:
- helm3 install
--namespace="$NAMESPACE"
--wait
--timeout $HELM_TIMEOUT
..some other stuff..
--set mongodb.auth.enabled="true"
--set mongodb.auth.rootPassword="$MONGO_ROOT_PWD_STAGE"
--set mongodb.auth.replicaSetKey="$MONGO_REPLICA_SET_KEY_STAGE"
--values ${!HELM_VALUES}
--kube-context stage
"$RELEASE_NAME" chart/
感谢的帮助
在K8S Statefulset中,与Deployment不同,有些字段在创建后无法更改,您只需更改副本数量、pod模板和updateStrategy。
因此,如果你在中更改某些内容,就会出现此错误
persistence:
enabled: true
size: 1Gi
因为它改变了PVC的配置。
绕过问题:
- 创建一个新的Statfulset并删除旧的(您可以在删除之前复制数据(
- 尝试手动修补PVC(或尝试更改的任何其他资源(,然后应用
helm upgrade
命令
您可以使用helm-diff插件将当前修订版与您试图创建的新修订版进行比较,以了解发生了什么。