如何在kubernetes中为带有多个容器的单吊舱配置pv和pvc

如何在kubernetes中为带有多个容器的单吊舱配置pv和pvc,kubernetes,persistent-storage,persistent-volumes,kubernetes-pvc,Kubernetes,Persistent Storage,Persistent Volumes,Kubernetes Pvc,需要为MySQL、MongoDB、MySQL创建一个包含多个容器的pod。我的问题是,我是否需要为每个容器创建持久性卷和持久性卷声明,并指定pod配置中的卷或单个PV&PVC对于单个pod中的所有容器都足够,如下面的配置 您能否验证以下配置是否足够 PV: apiVersion: v1 kind: PersistentVolume metadata: name: mypod-pv labels: type: local spec: storageClassName:

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

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

PV:

    apiVersion: v1
kind: PersistentVolume
metadata:
  name: mypod-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
    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
PVC

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

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

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

考虑在单独的状态集中运行每个数据库

下面是mysql的参考资料


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

@p Ekambaram,我同意您的看法。另外,我将为所有容器提供一个副本。在这种情况下,是否使用pv和pvc设置或部署状态?哪一个适合我。statefulset是数据库的首选