代码块
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
答案 0 :(得分:1)
首先,我不建议在Kubernetes平台上安装nfs,这有两个原因。从安全角度来看,另一个容器可以访问工作节点上的nfs安装。第二,从性能的角度来看,与其他解决方案相比,工作节点与存储之间的连接会更慢。如您所知,性能对于数据库连接至关重要。我认为您应该对此进行评估。
我建议您使用一种Cloud Native Storage。您可以在下面的链接中查看它们。 Ceph和Gluster是受欢迎的产品。
https://landscape.cncf.io/category=cloud-native-storage&format=card-mode&grouping=category
如果您真的想继续使用nfs解决方案,则可以检查两点:
1)您是否检查了存储设备上的访问列表?您应该会看到nfs安装的工作节点。
2)尝试在工作节点上挂载nfs存储后,可以尝试在kubernetes群集上导入部署。