Kubernetes 在K8s中运行的XDB 2.0每次缩减或重新调度StatefolSet pod时都会丢失数据
我已将XDB 2.0.0部署为带有EBS卷持久性的Statefulset。我注意到,如果由于某种原因,pod被重新调度到其他节点,或者即使我们缩小statefulset pod副本=0,然后再放大,对持久化数据的影响也是一样的:它们将丢失 最初,在pod被重新调度到其他节点的情况下,我认为问题在于EBS卷,它不会被卸载并装载到另一个运行pod副本的节点,但事实并非如此。存在EBS体积,存在相同的pv/pvc,但数据丢失 为了找出问题所在,我特意进行了XDB设置并添加了数据,然后执行了以下操作: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设置并添加了数据,然后执行了以下操作:
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
如果你不发布你使用的掌舵图,或者你的状态集描述符,或者不了解你的设置,那么在这个世界上任何人都无法帮助你你的持久卷是什么?