kubernetes - 如何在 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
解决方案
您不应该在单个 pod 中运行多个数据库容器。
考虑在单独的 statefulset 中运行每个数据库。
按照下面的mysql参考
https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/
您也需要对 mongodb 或其他数据库采用类似的方法。
推荐阅读
- html - 当侧边栏中的文本过多时屏幕会破裂
- php - 如何显示无头 chrome 实例的控制台日志和错误?
- scala - 在 Apache Ignite 中,有没有办法让 @QuerySqlField 处理可选类型?
- python - 类上的函数调用返回对象引用而不是期望值
- python - “没有名为 'django_heroku' 的模块”应用程序无法在 Heroku 上启动
- r - nls 无法拟合指数曲线来完美数据
- python - 将 on_release 操作添加到循环中的按钮
- reactjs - TypeError:this.props.chooseVideo 不是函数
- java - 如何让一个订阅者在 Radisson(redis-java 客户端)中处理消息(考虑有多个)
- excel - 有没有办法在 excel vba 2010 中连接文件路径?