日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8s nfs 挂载文件_Kubernetes集群使用网络存储NFS

發布時間:2024/7/23 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8s nfs 挂载文件_Kubernetes集群使用网络存储NFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NFS存儲

NFS即網絡文件系統Network File System,它是一種分布式文件系統協議,最初是由Sun MicroSystems公司開發的類Unix操作系統之上的一款經典網絡存儲方案,其功能是在允許客戶端主機可以像訪問本地存儲一樣通過網絡訪問服務端文件。

Kubernetes的NFS存儲用于將某事先存在的NFS服務器導出export的存儲空間掛載到Pod中來供Pod容器使用。與emptyDir不同的是,NFS存儲在Pod對象終止后僅是被卸載而非刪除。另外,NFS是文件系統及共享服務,它支持同時存在多路掛載請求。定義NFS存儲時,常用到以下字段。

?server:NFS服務器的IP地址或者主機名,必選字段。?path:NFS服務器導出(共享)的文件系統路徑,必選字段。?readOnly:是否以只讀掛載,默認為false。

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.241Export list for 192.168.31.241:/data/redis 192.168.31.0/24

2.創建Pod資源配置清單?Pod中使用Redis鏡像來運行容器,將Redis數據持久化至NFS服務器上,下面是簡單實用Redis的一個示例:

cat redis-nfs.yamlapiVersion: v1kind: Podmetadata: name: vol-nfs-pod labels: app: redisspec: containers: - name: redis image: redis:5.0 #鏡像版本 ports: - containerPort: 6379 #容器端口 name: redisport volumeMounts: - mountPath: /data #卷掛載到容器中的目錄 name: redisdata #卷名稱 volumes: - name: redisdata #卷名稱 nfs: #使用NFS網絡存儲卷 server: 192.168.31.241 #NFS服務器地址 path: /data/redis #NFS服務器共享的目錄 readOnly: false #是否為只讀

上面的示例定義在資源配置文件vol-nfs.yaml中,其中的Pod資源擁有一個關聯至NFS服務器192.168.31.241的存儲卷,Redis容器將其掛載到容器中的/data目錄上,它是運行于容器中的redis-server數據的持久保持位置。

提示:這里應確保事先要存在一個名為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=redisNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESvol-nfs-pod 1/1 Running 0 106s 172.20.3.31 k8s-node03 kubectl describe pods/vol-nfs-podName: vol-nfs-podNamespace: defaultPriority: 0Node: k8s-node03/192.168.31.233Start Time: Tue, 23 Jun 2020 13:47:29 +0800Labels: app=redisAnnotations: Status: RunningIP: 172.20.3.31IPs: IP: 172.20.3.31Containers: 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: 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 TrueVolumes: 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: falseQoS Class: BestEffortNode-Selectors: Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300sEvents: 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 dataFilesystem Type Size Used Avail Use% Mounted on192.168.31.241:/data/redis nfs4 59G 9.4G 47G 17% /data#查看/data目錄下的數據kubectl exec -it vol-nfs-pod -- ls /datadump.rdb

5.資源創建完成后,可通過其命令客戶端redis-cli創建測試數據,并手動觸發其同步于存儲系統中

kubectl exec -it vol-nfs-pod -- redis-cli127.0.0.1:6379> set mykey 'hello world'OK127.0.0.1:6379> get mykey"hello world"127.0.0.1:6379> BGSAVEBackground saving started127.0.0.1:6379> exit

6.測試數據持久化?為了測試數據持久化效果,下面刪除Pod資源vol-nfs-pod,然后再對該Pod重建查看數據是否能夠正常訪問

#刪除Podkubectl delete pods vol-nfs-pod#重建Podkubectl apply -f redis-nfs.yaml#連接到Redis容器并查看數據持久化效果kubectl exec -it vol-nfs-pod -- redis-cli127.0.0.1:6379> keys *1) "mykey"127.0.0.1:6379> get mykey"hello world"

如上所示可以看到,此前創建的mykey及其數據在Pod資源重建后依然存在。

☆ END ☆

總結

以上是生活随笔為你收集整理的8s nfs 挂载文件_Kubernetes集群使用网络存储NFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。