Добавление тома в Kubernetes StatefulSet с использованием патча kubectl - PullRequest
1 голос
/ 11 февраля 2020

Краткое описание проблемы:

Я следую инструкции Kubernetes, чтобы настроить образец кластера Cassandra . Кластер запущен и работает, и я хотел бы добавить второй том для каждого узла, чтобы попытаться включить резервные копии для Cassandra, которые будут храниться на отдельном томе.

Моя попытка найти решение :

Я попытался отредактировать мой файл cassandra-statefulset.yaml , добавив новую запись volumeMounts и volumeClaimTemplates и применив ее повторно, но получил следующее сообщение об ошибке:

$ 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)

My 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, поэтому мой подход может быть совершенно неверным. Любые комментарии или помощь очень приветствуются, заранее спасибо.

1 Ответ

1 голос
/ 12 февраля 2020

Ответ в вашем первом журнале:

The StatefulSet "cassandra" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy'

Вы не можете изменить некоторые поля в statefulset после создания. Скорее всего, вам придется удалить и заново создать statefulset, чтобы добавить новый volumeClaimTemplate.

...