Я борюсь с простым развертыванием одной реплики официального образа магазина событий на Кластер Kubernetes. Я использую постоянный том для хранения данных.
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-eventstore
spec:
strategy:
type: Recreate
replicas: 1
template:
metadata:
labels:
app: my-eventstore
spec:
imagePullSecrets:
- name: runner-gitlab-account
containers:
- name: eventstore
image: eventstore/eventstore
env:
- name: EVENTSTORE_DB
value: "/usr/data/eventstore/data"
- name: EVENTSTORE_LOG
value: "/usr/data/eventstore/log"
ports:
- containerPort: 2113
- containerPort: 2114
- containerPort: 1111
- containerPort: 1112
volumeMounts:
- name: eventstore-storage
mountPath: /usr/data/eventstore
volumes:
- name: eventstore-storage
persistentVolumeClaim:
claimName: eventstore-pv-claim
И это ямл для моего постоянного требования тома:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: eventstore-pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
Развертывания работают нормально. Когда я проверил на прочность, я начал сталкиваться с проблемой. Я удаляю под, чтобы заставить фактическое состояние перейти в желаемое, и смотрю, как отреагирует Kubernetes.
Он немедленно запустил новый модуль на замену удаленному. И пользовательский интерфейс администратора по-прежнему показывал те же данные. Но после удаления стручка во второй раз новый под не подошел. Я получил сообщение об ошибке, в котором говорилось, что «запись слишком велика», что указывает на поврежденные данные в соответствии с этим обсуждением. https://groups.google.com/forum/#!topic/event-store/gUKLaxZj4gw
Пару раз попробовал еще раз. Каждый раз результат один и тот же. После удаления модуля во второй раз данные повреждены. Это меня беспокоит, что реальный сбой приведет к аналогичному результату.
Однако при развертывании новых версий образа или масштабировании модулей в развертывании до нуля и обратно к единице повреждения данных не происходит. После нескольких попыток все в порядке. Что странно, так как это также полностью заменяет модули (я проверил идентификаторы модулей, и они изменились).
Это заставляет меня задуматься, является ли удаление модуля с помощью kubectl delete более действенным способом завершения работы модуля. Есть ли у кого-нибудь из вас подобный опыт? Понимания того, если / чем отличается удаление? Спасибо заранее за ваш вклад.
С уважением,
Оскар