簡體   English   中英

多次 pod 刪除后 Kubernetes 持久卷數據損壞

[英]Kubernetes persistent volume data corrupted after multiple pod deletions

我正在努力在 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

這是我的持久卷聲明的 yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: eventstore-pv-claim
spec:
  accessModes:
    - ReadWriteOnce
 resources:
    requests:
      storage: 1Gi

部署工作正常。 當我測試耐用性時,我開始遇到問題。 我刪除了一個 pod 以強制實際狀態從所需狀態,並查看 Kubernetes 的反應。

它立即啟動了一個新的 pod 來替換已刪除的 pod。 並且管理 UI 仍然顯示相同的數據。 但是第二次刪除一個pod后,新的pod沒有出現。 根據此討論,我收到一條錯誤消息,指出“記錄太大”,表明數據已損壞。 https://groups.google.com/forum/#!topic/event-store/gUKLaxZj4gw

我又試了幾次。 每次結果都一樣。 第二次刪除 pod 后,數據已損壞。 這讓我擔心實際失敗會導致類似的結果。

但是,在部署新版本的映像或將部署中的 pod 縮放到零並返回到 1 時,不會發生數據損壞。 經過多次嘗試,一切正常。 這很奇怪,因為它也完全取代了 pod(我檢查了 pod id,它們改變了)。

這讓我想知道使用 kubectl delete 刪除一個 pod 是否在某種程度上更強制終止 pod。 大家有沒有類似的經歷? 關於是否/如何刪除不同的見解? 預先感謝您的意見。

問候,

奧斯卡

我在 Github 上提到了這個拉取請求,它指出進程沒有正確終止: https : //github.com/EventStore/eventstore-docker/pull/52

使用來自拉取請求的 Docker 文件構建新映像后,將此映像放入部署中。 我正在左右殺死豆莢,不再有數據損壞問題。

希望這可以幫助面臨同樣問題的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM