k8s数据挂载
Posted Dream_it_possible!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s数据挂载相关的知识,希望对你有一定的参考价值。
nfs挂载
将mysql-data挂载到/data/dev/mysql, 采用nfs的形式:
volumes: - name: mysql-data nfs: server: localhost path: /data/dev/mysql - name: mysql-dev-conf configMap: name: my.cnf
nfs出现挂载的问题
如果出现挂载的问题,参考我的另一篇文:
pvc挂载
pvc卷是k8s容器存储的另一种形式,全程persitVolumeClaim, 可声明指定容量的pv卷,然后与pvc卷绑定,服务在挂载的时候只需要指定对应的pvc即可。
比如我要声明一个pv和一个pvc,创建mysql-pvc.yaml, pvc通过storageClassName绑定pv
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-01-pvc
spec:
accessModes:
- ReadWriteOnce # 只能被一个容器访问,如果能被多个容器访问那么设置为ReadWriteMany
resources:
requests:
storage: 3Gi
storageClassName: standard
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: 3g-pv-1
spec:
capacity:
storage: 3Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: standard
cinder:
volumeID: a198bce4-ba0f-4d13-8f0c-55e31212a8c9 # 改路径为映射到本机的 /var/lib/kubelet/plugins/kubernetes.io/cinder/mounts
fsType: ext4
可通过storageclass来查看pvc对应的pv是哪个。
status字段为Bound时表示该pvc正在被某个服务所使用,使用我们刚创建的pvc方法很简单,只需要在volums属性里声明persistentVolumeClaim即可。
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-01
labels:
app: mysql-01
spec:
replicas: 1 # pod数量
selector:
matchLabels:
app: mysql-01
template:
metadata:
labels:
app: mysql-01
spec:
containers:
- name: mysql-01
image: mysql:5.7
imagePullPolicy: IfNotPresent
resources:
limits:
memory: "512Mi"
cpu: "1500m"
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
volumeMounts:
- name: mysql-01-persistent-storage
mountPath: /var/lib/mysql
- name: mysql-01-conf
mountPath: /etc/mysql
volumes:
- name: mysql-01-persistent-storage
persistentVolumeClaim:
claimName: mysql-01-pvc
- name: mysql-01-conf
configMap:
name: my.cnf
启动成功后,那么pvc那边会的status状态为显示为bound。
pvc挂载会出现的问题
centos 7 会出现声明的pv里的VolumeID在/var/lib/kubelet/plugins/kubernetes.io/cinder/mounts路径不存在的情况。
如果没有 /kubernetes.io/cinder/mounts目录,那么需要手动创建,然后创建的volumeID为mounts下的目录,该目录需要具备读写权限才行。
以上是关于k8s数据挂载的主要内容,如果未能解决你的问题,请参考以下文章