暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

原创|NO.A.0007|专题|——|云计算|K8S|持久存储-nfs网络存储|持久存储-PV/PVC|

Java BBS 2021-05-05
186

——>实验专题:持久存储<——

一、持久存储-nfs

1、配置volumes

#1、找一台新的服务器作为nfs服务器,
[root@k8s-nfs ~]# yum install -y nfs-utils
#设置挂载的目录
[root@k8s-node2 ~]# vim /etc/exports
/data/nfs *(rw,no_root_squash)
[root@k8s-node2 ~]# mkdir -p /data/nfs #挂载的路径必须手动创建,若是不创建,后期挂载时挂载不成功的
#2、在k8snode节点上安装上nfs服务
#两个k8s-node节点上都需要部署nfs服务,执行第一步操作
[root@k8s-node1 ~]# yum install -y nfs-utils #安装上之后,它会自动帮你挂载
[root@k8s-node2 ~]# yum install -y nfs-utils
#3、在nfs服务端启动nfs
[root@k8s-nfs ~]# systemctl restart rpcbind
[root@k8s-nfs ~]# systemctl start nfs
#4、在k8s集群部署应用使用nfs持久网络存储
[root@k8s-master ~]# mkdir pv
[root@k8s-master ~]# cd pv
[root@k8s-master pv]# vim nfs-nginx.yaml
apiVersion: apps/v1
kind: Deployment #部署一个deployment
metadata:
name: nginx-dep1
spec:
replicas: 1 #副本只有一个
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
        volumeMounts:                                    #通过volumeMounts挂载镜像
- name: wwwroot
          mountPath: /usr/share/nginx/html               #挂载路径
ports:
- containerPort: 80
volumes:
- name: wwwroot
nfs:
server: 10.10.10.14 #nfs服务器地址
path: /data/nfs
[root@k8s-master pv]# kubectl apply -f nfs-nginx.yaml
deployment.apps/nginx-dep1 created
[root@k8s-master pv]#
[root@k8s-master pv]# kubectl get pods
nginx-dep1-64f6dc84c9-7jcpm 1/1 Running 0 8s
#查看它的创建日志
[root@k8s-master pv]# kubectl describe pod nginx-dep1-64f6dc84c9-7jcpm
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 62s default-scheduler Successfully assigned default/nginx-dep1-64f6dc84c9-7jcpm to k8s-node2
Normal Pulling 57s kubelet, k8s-node2 Pulling image "nginx"
Normal Pulled 57s kubelet, k8s-node2 Successfully pulled image "nginx"
Normal Created 56s kubelet, k8s-node2 Created container nginx
Normal Started 56s kubelet, k8s-node2 Started container nginx
//进入应用
[root@k8s-master pv]# kubectl exec -it nginx-dep1-64f6dc84c9-7jcpm bash
root@nginx-dep1-64f6dc84c9-7jcpm:/# ls /usr/share/nginx/html/ #挂载目录下目前为空
//在nfs服务端创建文件
[root@k8s-nfs ~]# vim /data/nfs/index.html
hello k8s-nfs server
//进入k8s部署的持久应用服务查看挂载目录,可以查看到在k8s-nfs下创建的文件
root@nginx-dep1-64f6dc84c9-7jcpm:/# ls /usr/share/nginx/html/
index.html
root@nginx-dep1-64f6dc84c9-7jcpm:/# cat /usr/share/nginx/html/index.html
hello k8s-nfs server
//对外暴露端口
[root@k8s-master pv]# kubectl expose deployment nginx-dep1 --port=80 --target-port=80 --type=NodePort
service/nginx-dep1 exposed
[root@k8s-master pv]# kubectl get svc
nginx-dep1 NodePort 10.99.50.53 <none> 80:30769/TCP 4s
//通过Chrome访问持久化地址+端口号访问网页页面:http://10.10.10.14:30769/
service/nginx-dep1 exposed #访问到该内容

==================================END=================================

二、持久化存储pv/pvc


1、删除历史创建

#1、删除历史创建
[root@k8s-master pv]# kubectl delete -f nfs-nginx.yaml
deployment.apps "nginx-dep1" deleted
#2、创建一个pvc和pv
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dep1
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
volumes:
- name: wwwroot
persistentVolumeClaim:
claimName: my-pvc


---


apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
[root@k8s-master pv]# kubectl apply -f pvc.yaml #执行pvc
deployment.apps/nginx-dep1 created
persistentvolumeclaim/my-pvc created
[root@k8s-master pv]# kubectl get pods
nginx-dep1-58b7bf955f-n2jn7 0/1 Running 0 34s
nginx-dep1-58b7bf955f-s4v79 0/1 Running 0 37s
nginx-dep1-58b7bf955f-tlprc 0/1 Running 0 34s
[root@k8s-master pv]# kubectl apply -f pv.yaml
pdeployment.apps/nginx-dep1 created
persistentvolumeclaim/my-pvc created
[root@k8s-master pv]# kubectl get pv,pvc #pv里面绑定了PVC
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/my-pv 5Gi RWX Retain Bound default/my-pvc 44s


NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/my-pvc Bound my-pv 5Gi RWX 2m7s
#3、进入到服务查看
[root@k8s-master pv]# kubectl exec -it nginx-dep1-58b7bf955f-n2jn7 bash
root@nginx-dep1-58b7bf955f-n2jn7:/# ls /usr/share/nginx/html
index.html

END





声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!



推荐阅读

Recommended reading

 







JavaBBS



Git











  






https://www.javabbs.cn/git






  JavaBBS大数据






→ 






https://www.javabbs.cn





/dsj





  JavaBBS云存储






→  https://www.javabbs.cn






/ycc







  JavaBBS数据库













  https://www.javabbs.cn






/sjk







  JavaBBS云计算













  https://www.javabbs.cn






/yjs







  JavaBBSIT.Log













https://www.javabbs.cn






/itl






  JavaBBSNginx













  https://www.javabbs.cn






/ngx






  JavaBBSzabbix













https://www.javabbs.cn






/zbx






  JavaBBSJavaSE













https://www.javabbs.cn






/jse







  JavaBBS社区文章













https://www.javabbs.cn






/bwz






  JavaBBS社区资料













https://www.javabbs.cn






/bzl







文章转载自Java BBS,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论