Kubernetes教程-PVC
第十四章 存储之PV-PVC
#yum install -y nfs-common nfs-utils rpcbind #每台机器都需要执行包括harbor机器
#systemctl start rpcbind
#systemctl start nfs
在harbor机器上创建目录
#mkdir /data/nfs #chmod 777 /nfs #chown nfsnobody /nfs #vim /etc/exports /data/nfs *(rw,no_root_squash,no_all_squash,sync)
#showmount -e 192.168.0.82
#在master机器上运行
cd /
mkdir /nfstest chmod 777 /nfstest chown nfsnobody /nfstest
在master机器上,测试挂载目录的读写操作
#mkdir /nfstest
#mount -t nfs 192.168.0.82:/data/nfs /nfstest/ #挂载harbor机器的/data/nfs目录为本地目录 /data/nfstest/
cd /nfstest/ #测试一下 echo >> 2.html 随便写
cd .. #离开这个目录 umount /nfstest/ #才能解除挂载 rm -rf /nfstest/ #测试完毕
在haror机器上还有2.html文件
master机器上,挂载,保存文件
harbor机器上,查看文件内容
master机器
#master机器 #cd ~ #mkdir pv #cd pv #vim pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfspv spec: capacity: storage: 5Gi #卷大小 accessModes: - ReadWriteOnce #只允许有一个人读写 persistentVolumeReclaimPolicy: Retain storageClassName: nfs #随便写 nfs: path: /data/nfs #harbor机器磁盘目录 server: 192.168.0.82 kubectl apply -f pv.yaml
kubectl get pv #查看pv
在harbor机器,继续创建几个pv的宿主目录
#mkdir /data/nfs{1..3} #vim /etc/exports
/data/nfs *(rw,no_root_squash,no_all_squash,sync)
/data/nfs1 *(rw,no_root_squash,no_all_squash,sync)
/data/nfs2 *(rw,no_root_squash,no_all_squash,sync)
/data/nfs3 *(rw,no_root_squash,no_all_squash,sync)
#chmod 777 /data/nfs{1..3} #chown nfsnobody /data/nfs{1..3}
#systemctl restart rpcbind
#systemctl restart nfs
#showmount -e 192.168.0.82
在master机器上,测试挂载目录
#mkdir /nfstest1/ #mount -t nfs 192.168.0.82:/data/nfs1 /nfstest1/ #date >> /nfstest1/index.html
#umount /nfstest1/ #harbor机器上有了,就可以结束挂载了
#rm -rf /nfstest1/ #删除目录
在harbor机器上
#cd /data/nfs1 #cat index.html
在master机器上
#vim pv1.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfspv1 spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany => ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: nfs nfs: path: /data/nfs1 server: 192.168.0.82 --- apiVersion: v1 kind: PersistentVolume metadata: name: nfspv2 spec: capacity: storage: 5Gi accessModes: - ReadWriteMany => ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: slow => nfs nfs: path: /data/nfs2 server: 192.168.0.82 --- apiVersion: v1 kind: PersistentVolume metadata: name: nfspv3 spec: capacity: storage: 1Gi accessModes: - ReadOnlyMany => ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: nfs nfs: path: /data/nfs3 server: 192.168.0.82
#kubectl apply -f pv1.yaml
#kubectl get pv
在master机器上
#vim pod.yaml apiVersion: v1 kind: Service metadata: name: nginx #无头服务名 labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None #无头服务 selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx serviceName: "nginx" #使用上面的无头服务名 replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: hub.atguigu.com/library/nginx:latest ports: - containerPort: 80 name: web volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: www spec: accessModes: [ "ReadWriteOnce" ] #这个指标是必须符合下面的篮框里面的值 storageClassName: "nfs" #这个指标必须是符合下面的篮框里面的值 resources: requests: storage: 1Gi #必须小于pvc里面定义的大小 #kubectl apply -f pod.yaml #kubectl get pod
#kubectl get pv
#kubectl get pvc
#kubectl describe pv nfspv1 #查看某个nfspv1挂载到barbor机器里面的哪个目录
在harbor的机器里面
#cd /data/nfs1 #vim index.html aaaaaaa #cat index.html
#chmod 777 index.html
在master机器上
#kubectl get pod -o wide #curl 10.244.2.78 #访问pvc里面的harbor机器的磁盘文件
同理其他两个pvc也可以创建宿主卷上的文件,并通过pod访问
#kubectl describe pv nfspv2 #找到对应的harbor目录创建index.html文件 #curl 10.244.1.82 #kubectl describe pv nfspv3 #找到对应的harbor目录创建index.html文件 #curl 10.244.1.83
harbor机器,在挂载目录里面创建index.html文件
#kubectl delete pod web-0 #删掉pod web-0 #kubectl get pod -o wide #会自动重启,但是ip地址变了,服务名没有变
#cul 10.244.2.79
#kubectl exec web-0 -it -- /bin/sh #进入容器 #ping web-1.nginx #在容器里ping (podname).(headless server name)
#kubectl get pod -o wide -n kube-system #dig -t A nginx.default.svc.cluster.local. @10.244.0.4
如何彻底删掉pv
#kubectl get statefulset #kubectl delete statefulset --all #kubectl get svc #kubectl delete svc #kubectl get pod #kubectl delete pod --all #kubectl get pv nfspv1 -o yaml #查看谁在使用pv #kubectl edit pv nfspv1 #清除使用者 #kubectl get pv #kubectl delete pv --all #kubectl get pvc #kubectl delete pvc --all
删掉框里面的数据
这就可以删掉下面的绑定信息了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现