加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 云计算 > 正文

Kubernetes集群借助网络存储NFS

发布时间:2022-07-18 12:35:27 所属栏目:云计算 来源:互联网
导读:NFS存储 NFS即网络文件系统Network File System,它是一种分布式文件系统协议,最初是由Sun MicroSystems公司开发的类Unix操作系统之上的一款经典网络存储方案,其功能是在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件。 1.部署一个NFS服务
  NFS存储
  NFS即网络文件系统Network File System,它是一种分布式文件系统协议,最初是由Sun MicroSystems公司开发的类Unix操作系统之上的一款经典网络存储方案,其功能是在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件。
 
  1.部署一个NFS服务 在集群之外的节点192.168.31.241
 
  #ubuntu部署
  sudo apt install nfs-kernel-server
 
  #centos部署
  yum -y install rpcbind nfs-utils
 
  #创建要共享的目录
  mkdir /data/redis -p
 
  #编辑NFS配置并加入以下内容
  vim /etc/exports
  /data/redis 192.168.31.0/24(rw,sync,no_all_squash,no_subtree_check)
 
  #载入配置
  exportfs -rv
  •/data/redis:NFS服务要共享的目录
 
  •192.168.31.0/24:允许访问NFS服务器的网段,也可以写 * ,表示所有地址都可以访问NFS服务
 
  •rw:访问到此目录的服务器都具备读写权限
 
  •sync:数据同步写入内存和硬盘
 
  •no_all_squash:所有用户对根目录具备完全管理访问权限
 
  •no_subtree_check:不检查父目录的权限
 
  启动NFS服务
 
  #ubuntu启动
  systemctl start nfs-kernel-server
 
  #centos启动
  systemctl start rpcbind nfs
  服务检查
 
  #查看NFS配置是否生效
  cat /var/lib/nfs/etab
  /data/redis    192.168.31.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
 
  #通过showmount命令查看NFS共享情况
  showmount -e 192.168.31.241
  Export list for 192.168.31.241:
  /data/redis 192.168.31.0/24
  2.创建Pod资源配置清单 Pod中使用Redis镜像来运行容器,将Redis数据持久化至NFS服务器上,下面是简单实用Redis的一个示例:
 
  cat redis-nfs.yaml
  apiVersion: v1
  kind: Pod
  metadata:
    name: vol-nfs-pod
    labels:
      app: redis
  spec:
 
  提示:这里应确保事先要存在一个名为192.168.31.241的NFS服务器,其输出了/data/redis目录,并授权给Kubernetes集群中的节点访问。主机和目录都可以按需进行调整。
  3.创建Pod对象并查看配置信息
 
  kubectl apply -f redis-nfs.yaml
  如下vol-nfs-pod被调度到了k8s-node03上
 
  kubectl get pods -o wide -l app=redis
  NAME          READY   STATUS    RESTARTS   AGE    IP            NODE         NOMINATED NODE   READINESS GATES
  vol-nfs-pod   1/1     Running   0          106s   172.20.3.31   k8s-node03   <none>           <none>
  kubectl describe pods/vol-nfs-pod
  Name:         vol-nfs-pod
  Namespace:    default
  Priority:     0
  Node:         k8s-node03/192.168.31.233
  Start Time:   Tue, 23 Jun 2020 13:47:29 +0800
  Labels:       app=redis
  Annotations:  Status:  Running
  IP:           172.20.3.31
  IPs:
    IP:  172.20.3.31
  Containers:
    redis:
      Container ID:   docker://dfa1a8202b39460db9e1d9849d6a4d416ab50a33e48fae556d1248a8efb3193b
      Image:          redis:5.0
      Image ID:       docker-pullable://redis@sha256:faea2a6e7fbd7e144cdb15e12ff16c24a5b8d9469e25796ec6d3b7a82a817e1b
      Port:           6379/TCP
      Host Port:      0/TCP
      State:          Running
        Started:      Tue, 23 Jun 2020 13:47:30 +0800
      Ready:          True
      Restart Count:  0
      Environment:    <none>
      Mounts:
        /data from redisdata (rw)             #挂载到容器中的路径
        /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxqkj (ro)
  Conditions:
    Type              Status
    Initialized       True
    Ready             True
    ContainersReady   True
    PodScheduled      True
  Volumes:
    redisdata:
      Type:      NFS (an NFS mount that lasts the lifetime of a pod)      #NFS类型挂载
      Server:    192.168.31.241               #Server是192.168.31.241
      Path:      /data/redis                  #Server的路径
      ReadOnly:  false                        #不是只读
    default-token-xxqkj:
      Type:        Secret (a volume populated by a Secret)
      SecretName:  default-token-xxqkj
      Optional:    false
  QoS Class:       BestEffort
  Node-Selectors:  <none>
  Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                   node.kubernetes.io/unreachable:NoExecute for 300s
  Events:
    Type    Reason     Age    From                 Message
    ----    ------     ----   ----                 -------
    Normal  Scheduled  2m29s  default-scheduler    Successfully assigned default/vol-nfs-pod to k8s-node03
    Normal  Pulled     2m28s  kubelet, k8s-node03  Container image "redis:5.0" already present on machine
    Normal  Created    2m28s  kubelet, k8s-node03  Created container redis
    Normal  Started    2m28s  kubelet, k8s-node03  Started container redis
  4.查看容器挂载情况
 
  kubectl exec -it vol-nfs-pod -- df -hT | grep data
  Filesystem                 Type     Size  Used Avail Use% Mounted on
  192.168.31.241:/data/redis nfs4      59G  9.4G   47G  17% /data
 
  #查看/data目录下的数据
  kubectl exec -it vol-nfs-pod -- ls /data
  dump.rdb

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读