k8s持久化存储PV&PVC部署
k8s持久化存储PV&PVC部署
基于NFS的PV
1.创建NFS服务
安装nfs-utils rpcbind
yum install nfs-utils rpcbind
? nfs-utils所有节点都需要安装
启动
systemctl restart rpcbind nfs
编辑共享配置文件 在主机节点编辑
vim /etc/exports
写入:/mnt/share *(rw)
(如果没有这个目录那就mkdir一下)
然后把权限给到最大
chmod 777 /mnt/share
在这里可能会出现关于NFS的问题 showmount -e nfs服务器ip
可查看挂载目录
更多关于nfs操作
https://www.xuebuyuan.com/1490537.html
遇到clnt_create: RPC: Program not registered
用这个方法重启可解决
解决办法:
1.在服务器上先停止rpcbind,
service rpcbind stop
- 然后在停止nfs
service nfs stop
- 最后在重启rpcbind和nfs,一定要按顺序启动和停止
service rpcbind start
service nfs start
Warning FailedMount 2m42s kubelet, k8s-node01 MountVolume.SetUp failed for v…
这个问题跟nfs有关,可能是挂载出现错误
2.创建PV
vim pv1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.134.131
path: "/mnt/share"
这里的server是服务器ip地址,即主机ip
应用
kubectl apply -f pv1.yaml
查看
kubectl get pv
kubectl describe pv nfs
3.创建PVC
vim pvc1.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: manual
resources:
requests:
storage: 1Gi
应用
kubectl apply -f pvc1.yaml
查看
kubectl get pvc
4.创建pod调用pvc
vim nginx-nfs.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-nfs
labels:
role: web-frontend
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
volumeMounts:
- name: nfs
mountPath: "/usr/share/nginx/html" #这个是挂载到pod里的某个目录
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs
5.验证
1.在nfs共享目录下创建一个文件
cd /mnt/share
vim test
2.进入到nginx-nfs这个pod里查看
kubectl exec -it nginx-nfs bsh
在挂载的目录里查看有没有那个文件
cat /usr/share/nginx/html/test
3.删除这个pod验证 删除这个pod,在master上查看是否还有这个文件。以此证明pvc不受pod的删除而受影响
kubectl delete pod nginx-nfs
4.重新创建这个pod
kubectl apply -f nginx-nfs.yaml
看看那个文件还存在
6.理解
对于这种基于NFS的持久化PV存储,就是在主机一端的本地目录里建立NFS远程目录,挂载到pod的目录里,然后pod被调度到某个节点上,从而实现无论在哪个节点里pod都能访问这个主机目录,并且能添加删除文件,即存储到远程主机的磁盘中,而且不会随着这个pod的存在与否影响这个文件目录,即实现持久化存储。
参考教程
【k8s持久化存储PV&PVC部署】https://my.oschina.net/u/3866149/blog/3056436
推荐阅读
- 云存储|ArcGIS与MINIO系列文章(1)-MINIO搭建
- 大数据|达梦数据库(DM8)存储过程函数使用
- 云原生系列|云原生系列番外篇---云原生网络趋势 | K8s托管整个基础设施、多云、边缘计算、安全等场景,将云原生网络带向新战场
- mysql视图,索引,存储过程,日志
- 【服务器数据恢复】断电导致存储raid6阵列瘫痪的数据恢复案例
- 阿里云|一个开发者自述(我是如何设计针对冷热读写场景的 RocketMQ 存储系统)
- 授人以渔-在|授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储
- K8s扩容
- docker|k8s学习笔记(缩扩容&更新)
- kubernetes|Kubernetes集群部署,基于kubeadm的快速搭建k8s集群模式。