我正在努力在Kubernetes群集上进行official event store image的简单一个副本部署。我正在使用永久卷进行数据存储。
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
这是我的永久批量声明的Yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: eventstore-pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
部署工作正常。当我测试耐久性时,我开始遇到问题。我删除了一个Pod,以强制将实际状态从所需状态转换为,并查看Kubernetes的反应。
它立即启动了一个新吊舱以替换已删除的吊舱。而且管理界面仍显示相同的数据。但是在第二次删除Pod之后,新的Pod没有出现。根据此讨论,我收到一条错误消息,指出“记录太大”,表明数据已损坏。 https://groups.google.com/forum/#!topic/event-store/gUKLaxZj4gw
我再次尝试了几次。每次相同的结果。第二次删除容器后,数据已损坏。这让我担心实际的失败会导致类似的结果。
但是,当部署映像的新版本或将部署中的Pod缩放为零然后再缩放为1时,不会发生数据损坏。经过几次尝试,一切都很好。这很奇怪,因为它也可以完全替换吊舱(我检查了吊舱ID并更改了它们)。
这让我想知道,使用kubectl delete删除Pod是否以某种方式更有效地终止了Pod。你们有没有类似的经历?关于是否/如何删除的见解?预先感谢您的输入。
此致
奥斯卡
答案 0 :(得分:3)
有人提到我在Github上的拉取请求,该请求指出过程未正确杀死:https://github.com/EventStore/eventstore-docker/pull/52
使用来自pull请求的Docker文件构建新映像后,将该映像放入部署中。我正在左右杀死Pod,不再有数据损坏问题。
希望这可以帮助面临相同问题的人。