容器本身一样平常不会对数据举行长期化处理惩罚,同一个Pod中运行多个容器,常常会必要在这些容器之间举行共享一些数据。Kuberenetes的Volume重要来办理数据存储和共享题目。
Docker也有Volume的概念,但是相对简单,但如今的支持有限。Kubernetes对Volume则有着清楚界说和广泛的支持。此中最核心的理念:Volume只是一个目次,并可以被在同一个Pod中的全部容器访问。而这个目次会是什么样,后端用什么介质和内里的内容则由利用的特定Volume范例决定。
创建一个带Volume的Pod:
spec.volumes指定这个Pod必要的volume信息spec.containers.volumeMounts指定哪些container必要用到这个Volume。Kubernetes对Volume的支持非常广泛,有很多贡献者为其添加差别的存储支持,也反映出Kubernetes社区的活泼程度。比如emptyDir、
gcePersistentDiskGCEdisk、nfs、Ceph、glusterfs、iscsi、gitRepo等。本文验证网络文件体系nfs作为k8s存储后端的可用性。
NFS环境搭建
NFS服务器环境搭建参考网页
https://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html
nfs服务器:10.43.166.108
环境必要安装nfs服务包
yuminstallnfs
yuminstallportmap
留意:实际安装的是这个rpm包rpcbind-0.2.0-33.el7_2.x86_64
设置文件修改
[root@tfg108~]#vi/etc/exports
/home/nfs172.24.1.0/24(rw)
/home/install_share*(ro,no_root_squash)
/tftpboot*(ro)
/linuxinstall*(ro)
此中/home/nfs为nfs服务器上共享目次,172.24.1.0/24为nfs客户端,该IP网段为k8s集群的假造机利用的IP,rw为答应读写访问
重启服务
systemctlstartrpcbind
systemctlstartnfs
假造机客户端
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptmp108]$showmount-e10.43.166.108
Exportlistfor10.43.166.108:
/linuxinstall*
/tftpboot*
/home/install_share*
/home/nfs172.24.4.*
挂载到虚机目次(tmp108为虚机上的目次)
sudomount10.43.166.108:/home/nfstmp108
挂载后的nfs信息
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptmp108]$mount|grepnfs
nfsdon/proc/fs/nfsdtypenfsd(rw,relatime)
sunrpcon/var/lib/nfs/rpc_pipefstyperpc_pipefs(rw,relatime)
10.43.166.108:/home/nfson/var/home/tmp108typenfs4(rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.5,local_lock=none,addr=10.43.166.108)
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptmp108]$
创建pv和pvc
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$kubectlcreate-fnfs-pv.yaml
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$kubectlcreate-fnfs-pvc.yaml
创建pv和pvc信息查察
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$kubectlgetpersistentvolume
NAMELABELSCAPACITYACCESSMODESSTATUSCLAIMREASONAGE
nfsnone1MiRWXBounddefault/nfs2h
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$kubectlgetpersistentvolumeclaim
NAMELABELSSTATUSVOLUMECAPACITYACCESSMODESAGE
nfsnoneBoundnfs1MiRWX2h
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$
创建rc,rc中pod模板利用nfsvolume
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$kubectlcreate-fnfs-web-rc.yaml
rc和pod信息
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$kubectlgetrc
CONTROLLERCONTAINER(S)IMAGE(S)SELECTORREPLICASAGE
nfs-webweb10.43.166.108:5050/nginxrole=web-frontend228m
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$kubectlgetpod
NAMEREADYSTATUSRESTARTSAGE
nfs-web-68aa31/1Running128m
nfs-web-pwyqj1/1Running028m
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$
mount信息
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$mount|grepnfs
nfsdon/proc/fs/nfsdtypenfsd(rw,relatime)
sunrpcon/var/lib/nfs/rpc_pipefstyperpc_pipefs(rw,relatime)
10.43.166.108:/home/nfson/var/home/tmp108typenfs4(rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.5,local_lock=none,addr=10.43.166.108)
10.43.166.108:/home/nfson/var/lib/kubelet/pods/d9760570-3aef-11e6-805e-fa163ee7798f/volumes/kubernetes.io~nfs/nfstypenfs4(rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.5,local_lock=none,addr=10.43.166.108)
10.43.166.108:/home/nfson/var/lib/kubelet/pods/d9ad5c1f-3aef-11e6-805e-fa163ee7798f/volumes/kubernetes.io~nfs/nfstypenfs4(rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.5,local_lock=none,addr=10.43.166.108)
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$
容器信息
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$sudodockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
4287e2d218a810.43.166.108:5050/nginx"nginx-g'daemonoff"4minutesagoUp4minutesk8s_web.661d1cf2_nfs-web-68aa3_default_d9ad5c1f-3aef-11e6-805e-fa163ee7798f_c5aa1fef
93c909bab176gcr.io/google_containers/pause:2.0"/pause"14minutesagoUp14minutesk8s_POD.6059dfa2_nfs-busybox-ir6vq_default_c149e5fd-3af0-11e6-805e-fa163ee7798f_0021cf86
904c61de84b2gcr.io/google_containers/pause:2.0"/pause"14minutesagoUp14minutesk8s_POD.6059dfa2_nfs-busybox-i702s_default_c14990d0-3af0-11e6-805e-fa163ee7798f_1ad96206
462078bc030f10.43.166.108:5050/nginx"nginx-g'daemonoff"19minutesagoUp19minutesk8s_web.661d1cf2_nfs-web-pwyqj_default_d9760570-3aef-11e6-805e-fa163ee7798f_02fbd3ab
验证nfsvolume可用性
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$sudodockerinspect-f'{{.State.Pid}}'462078bc030f
1410
[minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sptest]$sudonsenter-t1410-p-m-u-n-i
root@nfs-web-pwyqj:/#
root@nfs-web-pwyqj:/#mount|grepnfs
10.43.166.108:/home/nfson/usr/share/nginx/htmltypenfs4(rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.5,local_lock=none,addr=10.43.166.108
root@nfs-web-pwyqj:/usr/share/nginx/html#ls
1.txt2.txt3.txt4.txtindex.html
root@nfs-web-pwyqj:/usr/share/nginx/html#
root@nfs-web-pwyqj:/usr/share/nginx/html#touch222
root@nfs-web-pwyqj:/usr/share/nginx/html#ls
1.txt2.txt2223.txt4.txtindex.html
同一pod中容器与差别pod中容器的数据共享验证流程与验证nfsvolume可用性雷同,分别进入容器内部举行操纵,查察本容器中的修改是否再另一个容器中可见。
作者简介:冯圣琴,程序员,对OpenStack开源项目、假造化和容器技能等感爱好。
我要评论