Kubernetes 在K8s中运行的XDB 2.0每次缩减或重新调度StatefolSet pod时都会丢失数据

Kubernetes 在K8s中运行的XDB 2.0每次缩减或重新调度StatefolSet pod时都会丢失数据,kubernetes,influxdb,amazon-eks,influxdb-2,Kubernetes,Influxdb,Amazon Eks,Influxdb 2,我已将XDB 2.0.0部署为带有EBS卷持久性的Statefulset。我注意到,如果由于某种原因,pod被重新调度到其他节点,或者即使我们缩小statefulset pod副本=0,然后再放大,对持久化数据的影响也是一样的:它们将丢失 最初,在pod被重新调度到其他节点的情况下,我认为问题在于EBS卷,它不会被卸载并装载到另一个运行pod副本的节点,但事实并非如此。存在EBS体积,存在相同的pv/pvc,但数据丢失 为了找出问题所在,我特意进行了XDB设置并添加了数据,然后执行了以下操作:

我已将XDB 2.0.0部署为带有EBS卷持久性的Statefulset。我注意到,如果由于某种原因,pod被重新调度到其他节点,或者即使我们缩小statefulset pod副本=0,然后再放大,对持久化数据的影响也是一样的:它们将丢失

最初,在pod被重新调度到其他节点的情况下,我认为问题在于EBS卷,它不会被卸载并装载到另一个运行pod副本的节点,但事实并非如此。存在EBS体积,存在相同的pv/pvc,但数据丢失

为了找出问题所在,我特意进行了XDB设置并添加了数据,然后执行了以下操作:

kubectl scale statefulsets influxdb --replicas=0
...
kubectl scale statefulsets influxdb --replicas=1
其效果与XDB pod重新调度时一样。数据丢失

为什么会发生这样的事情

我的环境:
我将EKS k8s环境与控制平面/workers的1.15k8s版本一起使用。

幸运的是,问题在于XDB 1.x和2.0.0 beta版本之间在实际数据持久化的位置上发生了巨大变化

在1.x版本中,数据保存在:

/var/lib/influxdb
在2.x版本上,默认情况下,数据将在以下位置持久化:

/root/.influxdbv2
我的EBS卷安装在1.x版本的位置上,每次重新启动pod(由缩小规模或调度到其他节点引起),EBS卷都会定期连接,但位置错误。这就是为什么没有数据的原因

另外,我看到的一个区别是,无法通过配置文件为2.x版本提供配置参数(就像在1.x上一样,我将配置文件作为configmap装入容器中)。我们必须提供额外的内联配置参数。此链接说明了如何:

最后,这是Statefulset的工作版本:

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: influxdb
  name: influxdb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: influxdb
  serviceName: influxdb
  template:
    metadata:
      labels:
        app: influxdb
    spec:
      containers:
        - image: quay.io/influxdb/influxdb:2.0.0-beta
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /ping
              port: api
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 5
          name: influxdb
          ports:
            - containerPort: 9999
              name: api
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /ping
              port: api
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources:
            limits:
              cpu: "800m"
              memory: 1200Mi
            requests:
              cpu: 100m
              memory: 256Mi
          volumeMounts:
            - mountPath: /root/.influxdbv2
              name: influxdb-data
  volumeClaimTemplates:
    - metadata:
        name: influxdb-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        volumeMode: Filesystem

如果你不发布你使用的掌舵图,或者你的状态集描述符,或者不了解你的设置,那么在这个世界上任何人都无法帮助你你的持久卷是什么?