linuxea:kubernetes 共享存储-nfs(21)

共享存储特性是不管node是否挂掉,pod中容器是否在同一个节点,数据都不丢失,数据不存放在某一个单独的node之上。这和之前的主机存储卷hostPathempryDir在持久化存储上效果更好。在yml配置文件中定义,且被volumeMounts挂载即可,如下:

  - name: linuxea-image
    nfs:
      path: PATH
      server:  Server

以nfs为例做共享存储测试

安装nfs

安装并且配置nfs访问(10.0.1.61)

[root@Linuxea-VM-Node_10_0_1_61 ~]# yum install nfs-utils -y
[root@Linuxea-VM-Node_10_0_1_61 ~]# mkdir /data/linuxea-volumes
[root@DS-VM-Node_10_0_1_61 ~]# cat /etc/exports
/data/linuxea-volumes 10.0.0.0/8(rw,no_root_squash)
[root@DS-VM-Node_10_0_1_61 ~]# systemctl start nfs

在每台挂载节点安装

[root@DS-VM-Node_10_10_240_202 ~]# yum install nfs-utils -y
[root@DS-VM-Node203 ~]# yum install nfs-utils -y
[root@DS-VM-Node146 ~]# yum install nfs-utils -y

手动尝试挂载一次

[root@Linuxea-VM-Node_10_10_240_202 ~]# mount -t nfs 10.0.1.61:/data/linuxea-volumes /mnt
[root@Linuxea-VM-Node_10_10_240_202 ~]# mount|grep linuxea
10.0.1.61:/data/linuxea-volumes on /mnt type nfs4 (rw,relatime,vers=4.1,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.240.202,local_lock=none,addr=10.0.1.61)
[root@Linuxea-VM-Node_10_10_240_202 ~]# umount /mnt/
  • yaml

yaml配置文件在红定义linuxea-image被volumeMounts挂载到特定的位置。在volumes中写明server和共享的目录路径即可,如下:

[root@linuxea volume]# cat nfs-pod-hostPath.yaml 
apiVersion: v1
kind: Pod
metadata: 
  name: linuxea-nfs
  namespace: default
spec:
  containers:
  - name: linuxea-pod1-com
    image: "marksugar/nginx:1.14.a"
    ports:
      - containerPort: 88
    volumeMounts:
    - name: linuxea-image
      mountPath: /data/wwwroot/

  volumes:
  - name: linuxea-image
    nfs :
      path: /data/linuxea-volumes
      server: 10.0.1.61
[root@linuxea volume]# kubectl apply -f nfs-pod-hostPath.yaml 
pod/linuxea-nfs created
[root@linuxea volume]# kubectl get pods
NAME                                     READY     STATUS    RESTARTS   AGE
linuxea-nfs                              1/1       Running   0          2s
[root@linuxea volume]# kubectl exec -it linuxea-nfs -c linuxea-pod1-com -- /bin/sh
/ # ls /data/wwwroot/
index.html    linuxea.html
  • 返回nfs server,在nfs server机器上的nfs data目录中。原本容器内的html文件已经被映射到nfs中
[root@DS-VM-Node_10_0_1_61 /data/linuxea-volumes]# ll
总用量 8
-rw-r--r-- 1 400 400 50 9月  20 21:04 index.html
-rw-r--r-- 1 400 400 64 9月  20 21:04 linuxea.html

追加一条信息到index.html中验证下效果

[root@Linuxea-VM-Node_10_0_1_61 /data/linuxea-volumes]# echo $(date) and nfs server node.linuxea.com >> index.html 

在集群内通过IP访问测试

[root@linuxea volume]# curl 172.16.4.6
linuxea-linuxea-nfs.com-127.0.0.1/8 172.16.4.6/24
2018年 09月 20日 星期四 21:07:52 CST and nfs server node.linuxea.com

此刻无论pod中的任意一个容器挂载都可以获得相同的数据,且容器或者pod删除更新,亦或者node主机故障,数据仍然可以用。基本实现数据持久能力。但是唯独nfs是单独的单点,并且效率并不如意,如下:

0 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2018-10-16分类: kubernetes

标签: kubernetes

发表评论