首页 文章

多个pod删除后,Kubernetes持久性卷数据已损坏

提问于
浏览
1

我正在使用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 . 管理员UI仍然显示相同的数据 . 但在第二次删除一个吊舱后,新的吊舱没有出现 . 根据此讨论,我收到一条错误消息,表示"record too large"表示数据已损坏 . https://groups.google.com/forum/#!topic/event-store/gUKLaxZj4gw

我再次尝试了几次 . 每次都有相同的结果 . 第二次删除pod后,数据已损坏 . 这让我担心实际的失败会导致类似的结果 .

但是,在部署新版本的映像或将部署中的pod缩放为零并返回到一个时,不会发生数据损坏 . 几次尝试后一切都很好 . 这是奇怪的,因为它也完全取代了pods(我检查了pod id并且他们改变了) .

这让我想知道是否使用kubectl delete删除pod在某种程度上更有力地终止了pod . 你们有没有类似的经历?关于删除是否/如何不同的见解?提前感谢您的意见 .

问候,

奥斯卡

1 回答

  • 3

    我被提到Github上的这个拉动请求,说明过程未被正确杀死:https://github.com/EventStore/eventstore-docker/pull/52

    使用来自pull请求的Docker文件构建新映像后,将此映像放入部署中 . 我左右杀死了pod,没有数据损坏问题了 .

    希望这可以帮助面临同样问题的人 .

相关问题