我们在自己的服务器上运行 Kubernetes。对于持久存储,我们有一个 NFS 服务器。这很好用。
现在我们要部署一个具有多个副本的应用程序,这些副本应该在它们之间共享存储,但存储不应该是持久的。删除 Pod 后,数据也应该消失。
我希望我可以通过以下方式实现它
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: nginx
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: nginx
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
image: nginx:latest
imagePullPolicy: IfNotPresent
name: nginx
volumeMounts:
- name: shared-data
mountPath: /shared-data
resources:
limits:
memory: 500Mi
所有副本都有/shared-data,但是当1个副本在该文件夹中存储数据时,其他副本看不到该文件,因此不共享。
我有哪些选择?
答案 0 :(得分:2)
您可以使用 PVC 在 Pod 之间共享数据。然后,您可以设置一个 preStop
lifecycle hook
让 pod 在 pod 被删除时清理数据。
这里是在 pod 上添加 preStop
钩子的示例:https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/