gpt4 book ai didi

kubernetes - 在 Minikube 上的 Kubernetes StatefulSet 中添加持久卷

转载 作者:行者123 更新时间:2023-12-02 12:39:58 26 4
gpt4 key购买 nike

我是 Kubernetes 新手,我正在尝试在 Minikube 上的 StatefulSet 中添加 PVC。PV 和 PVC 如下所示:

NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                      STORAGECLASS   REASON    AGE
neo4j-backups 5Gi RWO Retain Bound default/backups-claim manual 1h

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
backups-claim Bound neo4j-backups 5Gi RWO manual 51m

基本上,我希望 StatefulSet 的所有 pod 都能看到该卷的内容,因为备份文件存储在那里。

使用的StatefulSet可以找到here

Minikube 版本:minikube版本:v0.25.2
Kubernetes 版本:GitVersion:"v1.9.4"

最佳答案

如果您在 StatefulSet 中使用 volumeClaimTemplates,k8s 将会进行动态配置,并为每个 Pod 创建一个 PVC 和相应的 PV,因此每个 Pod 都会获得自己的存储。

您想要的是创建一个 PV 和一个 PVC 并在 Statefulset 的所有副本中使用它。

下面是 Kubernetes 1.10 上的示例,其中 /var/www/html 将由所有三个 Pod 共享,只需更改 /directory/on/host code> 到您计算机上的某个本地目录。我还在 minikube v0.26.0 上运行了这个示例

当然,下面只是一个示例来说明这个想法,但在真实的示例中,Pod 中的进程应该知道同步对共享存储的访问。

<小时/>
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 100Gi
# volumeMode field requires BlockVolume Alpha feature gate to be enabled.
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
local:
path: /directory/on/host
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minikube
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: example-local-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local-storage
---
apiVersion: "apps/v1beta1"
kind: StatefulSet
metadata:
name: nginx
spec:
serviceName: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: "nginx:1.12.2"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: localvolume
mountPath: /var/www/html
volumes:
- name: localvolume
persistentVolumeClaim:
claimName: example-local-claim

关于kubernetes - 在 Minikube 上的 Kubernetes StatefulSet 中添加持久卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49729461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com