git客户端web(git客户端管理工具)

菲律宾亚星国际登录 14 2

  

  容器本身一般不会对数据进行持久化处理,同一个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、

  gcePersistentDisk GCE disk、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服务包

  yum install nfs

  yum install portmap

git客户端web(git客户端管理工具)-第1张图片-亚星国际官网

  注意:实际安装的是这个rpm包 rpcbind-0.2.0-33.el7_2.x86_64

  配置文件修改

  [root@tfg108 ~]# vi /etc/exports

  /home/nfs 172.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为允许读写访问

  重启服务

  systemctl start rpcbind

  systemctl start nfs

  虚拟机客户端

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp tmp108]$ showmount -e 10.43.166.108

  Export list for 10.43.166.108:

  /linuxinstall *

  /tftpboot *

  /home/install_share *

  /home/nfs 172.24.4.*

  挂载到虚机目录(tmp108为虚机上的目录)

  sudo mount 10.43.166.108:/home/nfs tmp108

  挂载后的nfs信息

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp tmp108]$ mount |grep nfs

  nfsd on /proc/fs/nfsd type nfsd (rw,relatime)

  sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)

  10.43.166.108:/home/nfs on /var/home/tmp108 type nfs4 (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-6cauagnxv5sp tmp108]$

  创建pv和pvc

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl create -f nfs-pv.yaml

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl create -f nfs-pvc.yaml

  创建pv和pvc信息查看

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl get persistentvolume

  NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE

  nfs <none> 1Mi RWX Bound default/nfs 2h

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl get persistentvolumeclaim

  NAME LABELS STATUS VOLUME CAPACITY ACCESSMODES AGE

  nfs <none> Bound nfs 1Mi RWX 2h

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$

  创建rc,rc中pod模板使用nfs volume

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl create -f nfs-web-rc.yaml

  rc和pod信息

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl get rc

  CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS AGE

  nfs-web web 10.43.166.108:5050/nginx role=web-frontend 2 28m

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl get pod

  NAME READY STATUS RESTARTS AGE

  nfs-web-68aa3 1/1 Running 1 28m

  nfs-web-pwyqj 1/1 Running 0 28m

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$

  mount信息

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ mount |grep nfs

  nfsd on /proc/fs/nfsd type nfsd (rw,relatime)

  sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)

  10.43.166.108:/home/nfs on /var/home/tmp108 type nfs4 (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)

git客户端web(git客户端管理工具)-第1张图片-亚星国际官网

  10.43.166.108:/home/nfs on /var/lib/kubelet/pods/d9760570-3aef-11e6-805e-fa163ee7798f/volumes/kubernetes.io~nfs/nfs type nfs4 (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/nfs on /var/lib/kubelet/pods/d9ad5c1f-3aef-11e6-805e-fa163ee7798f/volumes/kubernetes.io~nfs/nfs type nfs4 (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-6cauagnxv5sp test]$

  容器信息

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ sudo docker ps

  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

git客户端web(git客户端管理工具)-第1张图片-亚星国际官网

  4287e2d218a8 10.43.166.108:5050/nginx "nginx -g 'daemon off" 4 minutes ago Up 4 minutes k8s_web.661d1cf2_nfs-web-68aa3_default_d9ad5c1f-3aef-11e6-805e-fa163ee7798f_c5aa1fef

  93c909bab176 gcr.io/google_containers/pause:2.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD.6059dfa2_nfs-busybox-ir6vq_default_c149e5fd-3af0-11e6-805e-fa163ee7798f_0021cf86

  904c61de84b2 gcr.io/google_containers/pause:2.0 "/pause" 14 minutes ago Up 14 minutes k8s_POD.6059dfa2_nfs-busybox-i702s_default_c14990d0-3af0-11e6-805e-fa163ee7798f_1ad96206

  462078bc030f 10.43.166.108:5050/nginx "nginx -g 'daemon off" 19 minutes ago Up 19 minutes k8s_web.661d1cf2_nfs-web-pwyqj_default_d9760570-3aef-11e6-805e-fa163ee7798f_02fbd3ab

  验证nfs volume可用性

git客户端web(git客户端管理工具)-第1张图片-亚星国际官网

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ sudo docker inspect -f '{{.State.Pid}}' 462078bc030f

  1410

  [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ sudo nsenter -t 1410 -p -m -u -n -i

git客户端web(git客户端管理工具)-第1张图片-亚星国际官网

  root@nfs-web-pwyqj:/#

  root@nfs-web-pwyqj:/# mount |grep nfs

  10.43.166.108:/home/nfs on /usr/share/nginx/html type nfs4 (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.txt 2.txt 3.txt 4.txt index.html

git客户端web(git客户端管理工具)-第1张图片-亚星国际官网

  root@nfs-web-pwyqj:/usr/share/nginx/html#

  root@nfs-web-pwyqj:/usr/share/nginx/html# touch 222

  root@nfs-web-pwyqj:/usr/share/nginx/html# ls

  1.txt 2.txt 222 3.txt 4.txt index.html

  同一pod中容器与不同pod中容器的数据共享验证流程与验证nfs volume可用性类似,分别进入容器内部进行操作,查看本容器中的修改是否再另一个容器中可见。

  

  作者简介:冯圣琴,程序员,对OpenStack开源项目、虚拟化和容器技术等感兴趣。

标签: git客户端web

发表评论 (已有2条评论)

评论列表

2025-03-22 09:48:31

-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$ kubectl get persistentvolumeclaim   NAME LABELS S

2025-03-22 10:32:54

addr=10.0.0.5,local_lock=none,addr=10.43.166.108)   [minion@k8-i5tlcanyhw-0-woj4itjbwv6z-kube-master-6cauagnxv5sp test]$   容器信息  [minion@k8-i5tl