——>实验专题:持久存储<——
一、持久存储-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.yamlapiVersion: apps/v1kind: Deployment #部署一个deploymentmetadata:name: nginx-dep1spec:replicas: 1 #副本只有一个selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts: #通过volumeMounts挂载镜像- name: wwwrootmountPath: /usr/share/nginx/html #挂载路径ports:- containerPort: 80volumes:- name: wwwrootnfs:server: 10.10.10.14 #nfs服务器地址path: /data/nfs[root@k8s-master pv]# kubectl apply -f nfs-nginx.yamldeployment.apps/nginx-dep1 created[root@k8s-master pv]#[root@k8s-master pv]# kubectl get podsnginx-dep1-64f6dc84c9-7jcpm 1/1 Running 0 8s#查看它的创建日志[root@k8s-master pv]# kubectl describe pod nginx-dep1-64f6dc84c9-7jcpmEvents:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 62s default-scheduler Successfully assigned default/nginx-dep1-64f6dc84c9-7jcpm to k8s-node2Normal 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 nginxNormal Started 56s kubelet, k8s-node2 Started container nginx//进入应用[root@k8s-master pv]# kubectl exec -it nginx-dep1-64f6dc84c9-7jcpm bashroot@nginx-dep1-64f6dc84c9-7jcpm:/# ls /usr/share/nginx/html/ #挂载目录下目前为空//在nfs服务端创建文件[root@k8s-nfs ~]# vim /data/nfs/index.htmlhello k8s-nfs server//进入k8s部署的持久应用服务查看挂载目录,可以查看到在k8s-nfs下创建的文件root@nginx-dep1-64f6dc84c9-7jcpm:/# ls /usr/share/nginx/html/index.htmlroot@nginx-dep1-64f6dc84c9-7jcpm:/# cat /usr/share/nginx/html/index.htmlhello k8s-nfs server//对外暴露端口[root@k8s-master pv]# kubectl expose deployment nginx-dep1 --port=80 --target-port=80 --type=NodePortservice/nginx-dep1 exposed[root@k8s-master pv]# kubectl get svcnginx-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.yamldeployment.apps "nginx-dep1" deleted#2、创建一个pvc和pvapiVersion: apps/v1kind: Deploymentmetadata:name: nginx-dep1spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: wwwrootmountPath: /usr/share/nginx/htmlports:- containerPort: 80volumes:- name: wwwrootpersistentVolumeClaim:claimName: my-pvc---apiVersion: v1kind: PersistentVolumeClaimmetadata:name: my-pvcspec:accessModes:- ReadWriteManyresources:requests:storage: 5Gi[root@k8s-master pv]# kubectl apply -f pvc.yaml #执行pvcdeployment.apps/nginx-dep1 createdpersistentvolumeclaim/my-pvc created[root@k8s-master pv]# kubectl get podsnginx-dep1-58b7bf955f-n2jn7 0/1 Running 0 34snginx-dep1-58b7bf955f-s4v79 0/1 Running 0 37snginx-dep1-58b7bf955f-tlprc 0/1 Running 0 34s[root@k8s-master pv]# kubectl apply -f pv.yamlpdeployment.apps/nginx-dep1 createdpersistentvolumeclaim/my-pvc created[root@k8s-master pv]# kubectl get pv,pvc #pv里面绑定了PVCNAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEpersistentvolume/my-pv 5Gi RWX Retain Bound default/my-pvc 44sNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEpersistentvolumeclaim/my-pvc Bound my-pv 5Gi RWX 2m7s#3、进入到服务查看[root@k8s-master pv]# kubectl exec -it nginx-dep1-58b7bf955f-n2jn7 bashroot@nginx-dep1-58b7bf955f-n2jn7:/# ls /usr/share/nginx/htmlindex.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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




