emptyDir
#定义yaml文件,创建容器[root@k8s-master-01 volumeTest]# cat podEmptyDir.yamlapiVersion: v1kind: Podmetadata: creationTimestamp: null labels: run: www04 name: www04spec: volumes: - name: v1 #定义的volume的名字 emptyDir: {} #随机定义宿主机中的挂载目录 containers: - image: nginx imagePullPolicy: IfNotPresent name: www04 resources: {} volumeMounts: - name: v1 #与预先定义的volumes名字相同 mountPath: /data #容器中的挂载点 dnsPolicy: ClusterFirst restartPolicy: Alwaysstatus: {}[root@k8s-master-01 volumeTest]# kubectl apply -f podEmptyDir.yamlpod/www04 created[root@k8s-master-01 volumeTest]# kubectl get podsNAME READY STATUS RESTARTS AGEwww04 1/1 Running 0 32s#在调度到的节点查看容器信息[root@k8s-node-01 ~]# docker ps -a | grep www044181d673e28b 605c77e624dd "/docker-entrypoint.…" 3 minutes ago Up 3 minutes k8s_www04_www04_app01_bb2ba6e3-a88b-4f94-8700-310c57a453f4_0c0d911e5b886 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 3 minutes ago Up 3 minutes k8s_POD_www04_app01_bb2ba6e3-a88b-4f94-8700-310c57a453f4_0[root@k8s-node-01 ~]# docker inspect 4181d673e28b | grep data "/var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1:/data", "Destination": "/data",[root@k8s-node-01 ~]# ls /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1[root@k8s-node-01 ~]# cd /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1[root@k8s-node-01 v1]# ls[root@k8s-node-01 v1]##主节点进入容器并在/data目录创建文件,之后再查看node节点文件情况[root@k8s-master-01 volumeTest]# kubectl exec -it www04 -- bashroot@www04:/# ls /dataroot@www04:/# cd /data/root@www04:/data# touch emptyDirTest.txtroot@www04:/data#[root@k8s-node-01 v1]# lsemptyDirTest.txt#删除pod查看文件情况,emptyDir是以内存为介质的存储方式,故删除容器后文件也会消失。[root@k8s-master-01 volumeTest]# kubectl delete pod www04pod "www04" deleted[root@k8s-node-01 v1]# cd /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1-bash: cd: /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1: 没有那个文件或目录
hostPath
#创建yaml文件并应用[root@k8s-master-01 volumeTest]# cat podHostPath.yamlapiVersion: v1kind: Podmetadata: creationTimestamp: null labels: run: www04 name: www04spec: volumes: - name: v1 hostPath: path: /hostPathTest containers: - image: nginx imagePullPolicy: IfNotPresent name: www04 resources: {} volumeMounts: - name: v1 mountPath: /data dnsPolicy: ClusterFirst restartPolicy: Alwaysstatus: {}[root@k8s-master-01 volumeTest]# kubectl apply -f podHostPath.yamlpod/www04 created[root@k8s-master-01 volumeTest]# kubectl get pods -owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESwww04 1/1 Running 0 20s 10.244.1.21 k8s-node-01 #在调度到的节点上可以看到/hostPathTest目录已被创建[root@k8s-node-01 v1]# cd /hostPathTest/[root@k8s-node-01 hostPathTest]#
NFS
#安装配置nfs[root@k8s-node-01 ~]# yum install nfs-utils -y[root@k8s-node-01 ~]# systemctl enable nfs-server.service --nowCreated symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.[root@k8s-node-01 ~]# mkdir -p /nfs[root@k8s-node-01 ~]# vim /etc/exports[root@k8s-node-01 nfs]# cat /etc/exports/nfs *(rw,no_root_squash) #不压缩root权限##刷新使nfs生效[root@k8s-node-01 nfs]# exportfs -arvexporting *:/nfs##在worker上也需要安装nfs-utils。安装完后查看是否可访问[root@k8s-node-01 nfs]# showmount -e 192.168.71.134Export list for 192.168.71.134:/nfs *##挂载与umount测试,无任何报错说明服务正常[root@k8s-node-01 nfs]# mount 192.168.71.134:/nfs /mnt ; umount /mnt#创建使用nfs的容器[root@k8s-master-01 volumeTest]# more podNfs.yamlapiVersion: v1kind: Podmetadata: creationTimestamp: null labels: run: www04 name: www04spec: volumes: - name: nfsv1 nfs: server: 192.168.71.134 path: /nfs containers: - image: nginx imagePullPolicy: IfNotPresent name: www04 resources: {} volumeMounts: - name: nfsv1 mountPath: /data dnsPolicy: ClusterFirst restartPolicy: Alwaysstatus: {}[root@k8s-master-01 volumeTest]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESwww04 1/1 Running 0 3m14s 10.244.1.41 k8s-node-01 #进入容器查看nfs挂在状况。挂载实际形式为宿主机挂载nfs目录后再在pod中挂载宿主机的目录。[root@k8s-master-01 volumeTest]# kubectl exec -it www04 -- bashroot@www04:/# lsbin boot data dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varroot@www04:/# df -hFilesystem Size Used Avail Use% Mounted onoverlay 17G 8.0G 9.1G 47% /tmpfs64M 0 64M 0% /devtmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup192.168.71.134:/nfs17G 8.0G 9.1G 47% /data/dev/mapper/centos-root 17G 8.0G 9.1G 47% /etc/hostsshm 64M 0 64M 0% /dev/shmtmpfs 7.6G 12K 7.6G 1% /run/secrets/kubernetes.io/serviceaccounttmpfs 3.9G 0 3.9G 0% /proc/acpitmpfs 3.9G 0 3.9G 0% /proc/scsitmpfs 3.9G 0 3.9G 0% /sys/firmware##在pod实际运行的worker节点查看挂载状态[root@k8s-node-01 nfs]# df -h | grep 192192.168.71.134:/nfs17G 8.0G 9.1G 47% /var/lib/kubelet/pods/6d388500-0e70-4991-82f9-d21b82faed01/volumes/kubernetes.io~nfs/nfsv1##进入容器创建文件后在nfs共享目录中查看[root@k8s-master-01 volumeTest]# kubectl exec -it www04 -- bashroot@www04:/# touch /data/test.txtroot@www04:/#[root@k8s-node-01 nfs]# lstest.txt
毒蛇网