【问题标题】:Data is lost after changes are applied to the image对图像应用更改后数据丢失
【发布时间】:2020-03-02 15:56:25
【问题描述】:

我正在尝试将 Elasticsearch 添加到 EKS 集群。但是每当我应用更改时,我的数据都会丢失。我附加的卷似乎已被更改和回收。

metadata:
  name: elasticsearch-uat
  labels:
    component: elasticsearch-uat
spec:
  replicas: 1
  serviceName: elasticsearch-uat
  template: 
    metadata:
      ...
    spec:
      initContainers: 
      - name: init-sysctl
        ...
      containers:
      - name: es 
        securityContext:
          capabilities:
            add:
              - IPC_LOCK
        image: 559076975273.dkr.ecr.us-west-2.amazonaws.com/elasticsearch-s3:v2
        env:
        ...
        ports:
        - containerPort: 9200
          name: http
          protocol: TCP
        - containerPort: 9300
          name: transport
          protocol: TCP
        volumeMounts: 
        - mountPath: /data
          name: es-storage-uat
  updateStrategy:
    type: RollingUpdate
  volumeClaimTemplates:
  - metadata:
      namespace: k8
      name: es-storage-uat
    spec:
      storageClassName: gp2
      accessModes: [ ReadWriteOnce ]
      resources:
        requests:
          storage: 2Gi

这是一个状态集

请帮助我理解这个概念。我不希望我的数据在任何情况下都会丢失。

提前致谢。

【问题讨论】:

  • 是 Deployment 还是 StatefulSet?
  • 完全正确。你不是说这是什么类型的物体。将其设为StatefulSet,它会起作用。
  • 它是 StatefulSet @PEkambaram
  • 分享来自 kubectl get pv 和 kubectl get pvc 的输出
  • @PEkambaram 截图附加到问题。

标签: elasticsearch kubernetes amazon-eks


【解决方案1】:

从 pv 输出中可以清楚地看出,PersistentVolume 回收策略设置为删除。这意味着如果 pvc 被删除,则 PersistentVolume 会自动删除。如果 pvc 被删除,您会丢失数据。

在您的情况下,使用“保留”政策是合适的。使用“保留”策略,如果用户删除 PersistentVolumeClaim,则不会删除相应的 PersistentVolume。

除此之外,如果您使用动态存储,请将存储类的 reclaimPolicy 字段设置为适当的值。如果在创建 StorageClass 对象时未指定 reclaimPolicy,则默认为 Delete。

【讨论】:

  • 如何为 volumeClaimTemplates 做到这一点?
  • 您正在使用 gp2 存储类。将存储类的 reclaimPolicy 字段设置为“保留”
  • kubernetes.io/docs/concepts/workloads/controllers/statefulset/…。根据这个“当 Pod 或 StatefulSet 被删除时,与 Pod 的 PersistentVolume 声明相关的 PersistentVolume 不会被删除。”我正在使用 volumeClaimTemplates
  • 您正在使用 gp2 存储类将数据存储到外部存储。它没有存储在本地
  • 还有一点,statefulsets不要滚动升级,建议部署和无状态服务
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2018-12-10
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多