多个Pod删除后Kubernetes持久卷数据已损坏

时间:2018-08-07 11:05:44

标签: kubernetes kubectl get-event-store

我正在努力在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。你们有没有类似的经历?关于是否/如何删除的见解?预先感谢您的输入。

此致

奥斯卡

1 个答案:

答案 0 :(得分:3)

有人提到我在Github上的拉取请求,该请求指出过程未正确杀死:https://github.com/EventStore/eventstore-docker/pull/52

使用来自pull请求的Docker文件构建新映像后,将该映像放入部署中。我正在左右杀死Pod,不再有数据损坏问题。

希望这可以帮助面临相同问题的人。