在Kubernetes中,可以在Statefulset中添加hostPath存储。如果是这样,有人可以用一些例子来帮助我。
答案 0 :(得分:4)
是的,但绝对是出于测试目的。
首先,您需要根据需要创建尽可能多的持久卷
kind: PersistentVolume
apiVersion: v1
metadata:
name: hp-pv-001
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/tmp/data01"
kind: PersistentVolume
apiVersion: v1
metadata:
name: hp-pv-002
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/tmp/data02"
...
然后,将此VolumeClaimsTemplate添加到Statefulset
volumeClaimTemplates:
- metadata:
name: my-hostpath-volume
spec:
storageClassName: manual
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
selector:
matchLabels:
type: local
另一种解决方案是使用hostpath dynamic provisioner。您不必创建PV bin,但这仍然是“概念验证解决方案”,您必须在群集中构建和部署配置器。
答案 1 :(得分:0)
StatefulSet
的hostPath卷只能在单节点群集中使用,例如为发展。重新安排广告连播的时间将无效。
相反,考虑将Local Persistent Volume用于此类用例。
最大的区别是Kubernetes调度程序可以了解本地持久卷属于哪个节点。对于HostPath卷,调度程序可能会将引用HostPath卷的pod移到其他节点,从而导致数据丢失。但是,借助本地持久卷,Kubernetes调度程序可确保始终将使用本地持久卷的容器调度到同一节点。
考虑使用local static provisioner,Getting Started指南提供了有关如何在不同环境中使用的说明。