【发布时间】:2020-02-11 20:47:44
【问题描述】:
问题总结:
我正在关注Kubernetes guide to set up a sample Cassandra cluster。集群已启动并正在运行,我想为每个节点添加第二个卷,以便尝试为 Cassandra 启用备份,该备份将存储在单独的卷上。
我的解决方案尝试:
我尝试通过添加新的volumeMounts 和volumeClaimTemplates 条目来编辑我的cassandra-statefulset.yaml 文件,然后重新应用它,但收到以下错误消息:
$ kubectl apply -f cassandra-statefulset.yaml
storageclass.storage.k8s.io/fast unchanged
The StatefulSet "cassandra" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden
然后我尝试启用滚动更新并按照此处的文档修补我的配置: https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/
$ kubectl patch statefulset cassandra -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}'
statefulset.apps/cassandra patched (no change)
我的cassandra-backup-patch.yaml:
spec:
template:
spec:
containers:
volumeMounts:
- name: cassandra-backup
mountPath: /cassandra_backup
volumeClaimTemplates:
- metadata:
name: cassandra-backup
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: fast
resources:
requests:
storage: 1Gi
但是这导致了以下错误:
$ kubectl patch statefulset cassandra --patch "$(cat cassandra-backup-patch.yaml)"
The request is invalid: patch: Invalid value: "map[spec:map[template:map[spec:map[containers:map[volumeMounts:[map[mountPath:/cassandra_backup name:cassandra-backup]]]]] volumeClaimTemplates:[map[metadata:map[name:cassandra-backup] spec:map[accessModes:[ReadWriteOnce] resources:map[requests:map[storage:1Gi]] storageClassName:fast]]]]]": cannot restore slice from map
谁能指出为每个节点添加额外卷的正确方法或解释为什么补丁不起作用?这是我第一次使用 Kubernetes,所以我的方法可能完全错误。非常欢迎任何评论或帮助,在此先感谢。
【问题讨论】:
标签: kubernetes cassandra kubectl