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 (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |