Kubernetes 在副本之间共享存储

时间:2021-07-08 09:47:19

标签: kubernetes

我们在自己的服务器上运行 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个副本在该文件夹中存储数据时,其他副本看不到该文件,因此不共享。

我有哪些选择?

1 个答案:

答案 0 :(得分:2)

您可以使用 PVC 在 Pod 之间共享数据。然后,您可以设置一个 preStop lifecycle hook 让 pod 在 pod 被删除时清理数据。

这里是在 pod 上添加 preStop 钩子的示例:https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/