DigitalOcean 上的 Kubernetes "shared" 持久卷
Kubernetes "shared" persistent volume on DigitalOcean
我有一个持久卷定义为
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ghost-cms-content
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: do-block-storage
部署定义为
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: ghost-cms
spec:
replicas: 4
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: ghost-cms
tier: frontend
template:
metadata:
labels:
app: ghost-cms
tier: frontend
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/region
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app: ghost-cms
tier: frontend
containers:
- name: ghost-cms
image: ghost:4.6-alpine
imagePullPolicy: Always
ports:
- containerPort: 2368
volumeMounts:
- mountPath: /var/lib/ghost/content
name: content
env:
- name: url
value: https://ghost.site
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
volumes:
- name: content
persistentVolumeClaim:
claimName: ghost-cms-content
但每个副本似乎都有一个不与其余副本共享的唯一卷。例如,当我在其中一个 pods 的 /var/lib/ghost/content
中创建一个文本文件时,我在另一个 pods 的卷中看不到它。我做错了什么?
获得许可的 PVC
accessModes:
- ReadWriteOnce
每个 pod 将获得一个卷或 PVC,因为它是可读写的。
如果你想跨副本保持共享卷,你可以使用 NFS 和 accessMode ReadWriteMany
accessModes:
- ReadWriteMany
阅读更多信息:https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
您还可以使用 Minio、GlusterFS 创建 NFS 或任何托管服务例如 GCP filestore 提供 NFS 并将其附加到 POD。
我有一个持久卷定义为
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ghost-cms-content
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: do-block-storage
部署定义为
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: ghost-cms
spec:
replicas: 4
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
selector:
matchLabels:
app: ghost-cms
tier: frontend
template:
metadata:
labels:
app: ghost-cms
tier: frontend
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/region
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app: ghost-cms
tier: frontend
containers:
- name: ghost-cms
image: ghost:4.6-alpine
imagePullPolicy: Always
ports:
- containerPort: 2368
volumeMounts:
- mountPath: /var/lib/ghost/content
name: content
env:
- name: url
value: https://ghost.site
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
volumes:
- name: content
persistentVolumeClaim:
claimName: ghost-cms-content
但每个副本似乎都有一个不与其余副本共享的唯一卷。例如,当我在其中一个 pods 的 /var/lib/ghost/content
中创建一个文本文件时,我在另一个 pods 的卷中看不到它。我做错了什么?
获得许可的 PVC
accessModes:
- ReadWriteOnce
每个 pod 将获得一个卷或 PVC,因为它是可读写的。
如果你想跨副本保持共享卷,你可以使用 NFS 和 accessMode ReadWriteMany
accessModes:
- ReadWriteMany
阅读更多信息:https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
您还可以使用 Minio、GlusterFS 创建 NFS 或任何托管服务例如 GCP filestore 提供 NFS 并将其附加到 POD。