具有hostPath卷的Kubernetes statefuleset

时间:2019-07-23 20:52:11

标签: kubernetes kubernetes-statefulset

我是Kubernetes的新手,所以也许是一个愚蠢的问题。
我正在尝试使用3个Pod副本部署ElasticSearch的statefulset。我在规范中用pvc定义了Statefulset。
该pvc具有由hostPath卷提供的存储类。

volumeClaimTemplates:
  - metadata:
      name: beehive-pv-claim
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "local-storage"
      resources:
        requests:
          storage: 1Gi

apiVersion: v1
kind: PersistentVolume
metadata:
  name: beehive-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  hostPath:
    path: /home/abc

我毫不怀疑。
1)在setup / pv上面是否可以在每个节点上分别提供/ host / abc目录?即每个Pod数据将存储在其相应的节点/主机路径上。另外,k8是否会显示一个卷绑定到多个pvc?
2)当我使用statefulset时,我假设曾经将pod- {i}安排在节点-{i}上,那么在任何情况下(例如重新启动)它总是会安排在那里。
3)以上设置正确的方式来实现我需要将数据存储在主机本地目录中的情况。还是本地持久卷更好?我无法获得两者之间的实际差异。 4)我需要手动创建本地存储存储类吗? (以上安装程序在docker中可以正常运行,而无需创建存储类的Windows安装程序) 5)我可能还有其他容器,这些容器仅需要将数据存储在/ home / abc目录下。因此,在将卷安装到容器中时将使用subPath。您在这里看到任何问题吗?

请帮助。

1 个答案:

答案 0 :(得分:2)

hostPath卷只有在多节点环境中才能在单节点群集上正常运行,那么您应该使用本地持久卷

这些博客文章解释了本地持久卷。

官方博客- https://kubernetes.io/blog/2019/04/04/kubernetes-1.14-local-persistent-volumes-ga/

另一个参考-https://vocon-it.com/2018/12/20/kubernetes-local-persistent-volumes/