我有一个小问题,需要知道解决这个问题/解决我的问题的最佳方法是什么。
我已经在 Kubernetes 上部署了几个 pod,到目前为止,我很享受学习 Kubernetes 和使用 Kubernetes 的乐趣。是否所有持久卷、卷声明...等。并且可以在主机上查看我的数据,因为我需要这些文件进行进一步处理。
现在的问题是共享相同卷声明的 2 个 pod(2 个副本)正在写入主机上的相同位置,这是意料之中的,但不幸的是导致数据在输出文件中重复。
我需要的是:
请注意,我有一个节点部署,这就是我目前使用主机路径的原因。
创建光伏:
kind: PersistentVolume
apiVersion: v1
metadata:
name: ls-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/ls-data/my-data2"
Run Code Online (Sandbox Code Playgroud)
索赔-光伏:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: ls-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
Run Code Online (Sandbox Code Playgroud)
我如何在部署中使用我的 pv:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: logstash
namespace: default
labels:
component: logstash
spec:
replicas: 2
selector:
matchLabels:
component: logstash
#omitted
ports:
- containerPort: 5044
name: logstash-input
protocol: TCP
- containerPort: 9600
name: transport
protocol: TCP
volumeMounts:
- name: ls-pv-store
mountPath: "/logstash-data"
volumes:
- name: ls-pv-store
persistentVolumeClaim:
claimName: ls-pv-claim
Run Code Online (Sandbox Code Playgroud)
根据您想要实现的具体目标,您可以使用Statefulsets而不是 Deployments。从 Statefulset 的 Pod 模板生成的每个 Pod 都可以拥有自己单独的 PersistentVolumeClaim,该 PersistentVolumeClaim 是从 volumeClaimTemplate 创建的(请参阅链接以获取示例)。您需要为此设置一个StorageClass。
如果你正在寻找更简单的东西,你可以/mnt/volume/$HOSTNAME从每个 Pod写入。这也将确保他们使用单独的文件,因为 Pod 的主机名是唯一的。
| 归档时间: |
|
| 查看次数: |
7426 次 |
| 最近记录: |