docker - 直接挂载的 NFS 卷上的 persistentVolumeReclaimPolicy - kubernetes
问题描述
- 我已经为 mysql 数据直接挂载了 NFS 卷,需要实施存储策略以跨 pod 删除保留数据,并避免任何损坏。请推荐一些有用的。
- 我没有找到启用persistentVolumeReclaimPolicy: Retain in directmounted volumes 的方法。我知道它可以通过创建 PV/PVC 来完成,但它是否可以通过 statefulset 卷来完成……在理解特定对象的 yaml 选项时需要一些指导方针,从哪里获取对象可用的所有选项(参数)。目前正在谷歌搜索每个选项并尝试 - 非常努力。
- 我无法将 configmap 文件 (my.cnf) 挂载到 pod 中的文件。它会删除挂载路径中的基础文件。想知道它通常是如何处理的,我们是否需要为每个配置文件单独安装路径。
代码块
apiVersion: v1
kind: Service
metadata:
name: mymariadb
labels:
app: mymariadb
spec:
ports:
- port: 3306
name: mysql
targetPort: mysql
nodePort: 30003
type: NodePort
selector:
app: mymariadb
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mymariadb
labels:
app: mymariadb
spec:
serviceName: "mymariadb"
selector:
matchLabels:
app: mymariadb
template:
metadata:
labels:
app: mymariadb
spec:
containers:
- name: mariadb
image: mariadb:10.3.7
env:
- name: MYSQL_ROOT_PASSWORD
value: xxxx
ports:
- name: mysql
containerPort: 3306
volumeMounts:
- name: data
mountPath: /data
subPath: mysql
- name: conf
mountPath: /etc/mysql # /conf.d removing files
resources:
requests:
cpu: 500m
memory: 2Gi
volumes:
- name: data
nfs:
server: 10.12.32.41
path: /data/mymariadb
spec:
persistentVolumeReclaimPolicy: Retain # not taking
- name: conf
configMap:
name: mycustconf
items:
- key: my.cnf
path: my.cnf
解决方案
首先,我不建议在 Kubernetes 平台上挂载 nfs,原因有两个。从安全角度来看,另一个容器可以访问工作节点上的 nfs 挂载。第二,从性能的角度来看,与其他解决方案相比,工作节点和存储之间的连接会更慢。如您所知,性能对于数据库连接至关重要。我认为你应该评估一下。
我建议您使用其中一种云原生存储。您可以在下面的链接中查看它们。Ceph 和 Gluster 是受欢迎的产品。
https://landscape.cncf.io/category=cloud-native-storage&format=card-mode&grouping=category
如果你真的想继续使用 nfs 解决方案,你可以检查两点:
1) 您是否检查了存储设备上的访问列表?您应该看到 nfs 挂载的工作程序节点。
2)尝试在工作节点上挂载nfs存储后,您可以尝试在您的kubernetes集群上导入部署。
推荐阅读
- maven - 为模式生成代码时出错,升级 jooq 3.11
- spring - 使用 Spring 在标题中显示用户信息
- element-ui - el-table 中的 el-table-column 数组是否有属性
- java - 无法从广播接收器获得响应
- c# - Microsoft.Bcl.Async 包和现代 csproj
- ios - 使用 UIView 水平裁剪图像
- javascript - d3 两级嵌套数据绑定
- java - 使用 SuperCSV 的一个单元格中的多个字段
- android - 验证 ListView 适配器中的 EditText
- automated-tests - AWS Device Farm 上的 Appium 测试未按指定顺序执行