首页 > 解决方案 > 如何在 kubernetes 中为具有多个容器的单个 pod 配置 pv 和 pvc

问题描述

需要为 MySQL、MongoDB、MySQL 创建具有多个容器的单个 pod。我的问题是我是否需要为每个容器创建持久性卷和持久性卷声明,并在 pod 配置中指定卷,或者单个 PV 和 PVC 对于单个 pod 中的所有容器就足够了,如下面的配置。

您能否验证以下配置是否足够?

光伏:

    apiVersion: v1
kind: PersistentVolume
metadata:
  name: mypod-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---

PVC

    apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypod-pvc
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
---

部署:

    apiVersion: apps/v1
kind: Deployment
metadata:
  name: mypod
  labels:
    app: mypod
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mypod
  template:
    metadata:
      labels:
        app: mypod
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: mypod-pvc
      containers:
        - name: mysql
          image: mysql/mysql-server:latest
          ports:
            - containerPort: 3306
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: "/var/lib/mysql"
              name: task-pv-storage
        - name: mongodb
          image: openshift/mongodb-24-centos7
          ports:
            - containerPort: 27017
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: "/var/lib/mongodb"
              name: task-pv-storage
        - name: mssql
          image: mcr.microsoft.com/mssql/server
          ports:
            - containerPort: 1433
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: "/var/opt/mssql"
              name: task-pv-storage
      imagePullSecrets:
        - name: devplat

标签: kubernetespersistent-storagepersistent-volumeskubernetes-pvc

解决方案


您不应该在单个 pod 中运行多个数据库容器。

考虑在单独的 statefulset 中运行每个数据库。

按照下面的mysql参考

https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/

您也需要对 mongodb 或其他数据库采用类似的方法。


推荐阅读