云計(jì)算
特別說(shuō)明:測(cè)試使用,不建議生產(chǎn)環(huán)境
1、在master節(jié)點(diǎn)配置(node1)
1)yum安裝nfs
# yum -y install nfs-utils
NFS的關(guān)鍵工具包括:
主要配置文件:/etc/exports;
NFS文件系統(tǒng)維護(hù)命令:/usr/bin/exportfs;
共享資源的日志文件: /var/lib/nfs/*tab;
客戶端查詢共享資源命令: /usr/sbin/showmount;
端口配置: /etc/sysconfig/nfs。
2)新建共享目錄
# mkdir -p /data/volunes
3)設(shè)置Nfs權(quán)限
# cat /etc/exports
權(quán)限參數(shù)說(shuō)明:
ro ?只讀訪問(wèn)
rw ?讀寫(xiě)訪問(wèn)
sync ? ?所有數(shù)據(jù)在請(qǐng)求時(shí)寫(xiě)入共享
async ? nfs在寫(xiě)入數(shù)據(jù)前可以響應(yīng)請(qǐng)求
secure ?nfs通過(guò)1024以下的安全TCP/IP端口發(fā)送
insecure ? ?nfs通過(guò)1024以上的端口發(fā)送
wdelay ?如果多個(gè)用戶要寫(xiě)入nfs目錄,則歸組寫(xiě)入(默認(rèn))
no_wdelay ? 如果多個(gè)用戶要寫(xiě)入nfs目錄,則立即寫(xiě)入,當(dāng)使用async時(shí),無(wú)需此設(shè)置
hide ? ?在nfs共享目錄中不共享其子目錄
no_hide 共享nfs目錄的子目錄
subtree_check ? 如果共享/usr/bin之類(lèi)的子目錄時(shí),強(qiáng)制nfs檢查父目錄的權(quán)限(默認(rèn))
no_subtree_check ? ?不檢查父目錄權(quán)限
all_squash ?共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄
no_all_squash ? 保留共享文件的UID和GID(默認(rèn))
root_squash root用戶的所有請(qǐng)求映射成如anonymous用戶一樣的權(quán)限(默認(rèn))
no_root_squash ?root用戶具有根目錄的完全管理訪問(wèn)權(quán)限(不安全)
anonuid=xxx 指定nfs服務(wù)器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定nfs服務(wù)器/etc/passwd文件中匿名用戶的GID
4)啟動(dòng)服務(wù)
# systemctl enable nfs.service
# systemctl start nfs.service
# exportfs ?-arv #不用重啟nfs服務(wù),配置文件就會(huì)生效
2、在節(jié)點(diǎn)node2和node3配置Nfs
1)安裝
yum -y install nfs-utils
2)在node3和node2上掛載:
# mount -t nfs 172.160.45.160:/data/volunes/ /mnt
3、檢查
1)#查看 RPC 服務(wù)的注冊(cè)狀況
rpcinfo -p localhost
2)#showmount測(cè)試
showmount -e 172.160.45.160
4、kubernetes使用NFS共享存儲(chǔ)有兩種方式:
#手動(dòng)方式靜態(tài)創(chuàng)建所需要的PV和PVC;
#通過(guò)創(chuàng)建PVC動(dòng)態(tài)地創(chuàng)建對(duì)應(yīng)PV,無(wú)需手動(dòng)創(chuàng)建PV;
################靜態(tài)創(chuàng)建#######################
1)靜態(tài)申請(qǐng)PV卷
PersistentVolumes,是k8s抽象化的存儲(chǔ)資源,主要包括存儲(chǔ)能力、訪問(wèn)模式、存儲(chǔ)類(lèi)型、回收策略等關(guān)鍵信息.PV是k8s實(shí)際對(duì)接存儲(chǔ)后端的真正入口;
#創(chuàng)建pv對(duì)應(yīng)目錄
# mkdir -p /data/volunes/v{1,2,3}
#配置exportrs
# cat /etc/exports
#立即生效
# exportfs ?-arv
2)創(chuàng)建pv文件
# vim nfs-pv1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv1
labels:
pv: nfs-pv1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
path: /data/volunes/v1
server: 172.160.45.160
nfs-pv2.yaml類(lèi)似
配置說(shuō)明:
① capacity 指定 PV 的容量為 1G。
② accessModes 指定訪問(wèn)模式為 ReadWriteOnce,支持的訪問(wèn)模式有:
ReadWriteOnce(RWO):讀寫(xiě)權(quán)限,但是只能被單個(gè)節(jié)點(diǎn)掛載;
ReadOnlyMany(ROX):只讀權(quán)限,可以被多個(gè)節(jié)點(diǎn)掛載;
ReadWriteMany(RWX):讀寫(xiě)權(quán)限,可以被多個(gè)節(jié)點(diǎn)掛載;
③ persistentVolumeReclaimPolicy 指定當(dāng) PV 的回收策略為 Recycle,支持的策略有:
Retain(保留)- 保留數(shù)據(jù),不會(huì)再分配給pvc,需要管理員手工清理數(shù)據(jù);
Recycle(回收)- 清除 PV 中的數(shù)據(jù),保留pv資源,可以留供其他pvc使用;
Delete(刪除)- 刪除整個(gè)pv資源及內(nèi)部的數(shù)據(jù);
④ storageClassName 指定 PV 的 class 為 nfs。相當(dāng)于為 PV 設(shè)置了一個(gè)分類(lèi),PVC 可以指定 class 申請(qǐng)相應(yīng) class 的 PV。
⑤ 指定 PV 在 NFS 服務(wù)器上對(duì)應(yīng)的目錄。
#創(chuàng)建pv的pod
# kubectl create-f nfs-pv1.yaml
# kubectl get pv
狀態(tài)Available,表示 pv就緒,可以被 PVC 申請(qǐng);
3)創(chuàng)建PVC
PersistentVolumeClaims,是對(duì)PV資源的一種聲明,pvc綁定實(shí)體資源pv后,pod通過(guò)綁定pvc來(lái)使用pv資源.PVC是k8s的一種抽象化的聲明式綁定存儲(chǔ)資源的管理模式的中間層,pod無(wú)法直接通過(guò)pv使用存儲(chǔ)資源,必須經(jīng)過(guò)pvc,而pvc必須要綁定pv實(shí)體后,才可被pod使用;
# vim nfs-pvc2.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc2
spec:
accessModes:
- eadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nfs
selector:
matchLabels:
pv: nfs-pv2
執(zhí)行yaml文件創(chuàng)建 pvc
# kubectl create -f nfs-pvc1.yaml
查看pv資源
備注:pv對(duì)應(yīng)綁定的PVC
4)創(chuàng)建pod
[root@node1 yaml]# vim nfs-nginx.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-test
labels:
name: nignx-test
spec:
replicas: 3
selector:
name: nginx-test
template:
metadata:
labels:
name: nginx-test
spec:
containers:
- name: web01
image: docker.io/nginx:1.14.2
volumeMounts:
- mountPath: /usr/share/nginx/html/
name: nfs-pv1
- mountPath: /var/log/nginx/
name: nfs-pv2
ports:
- containerPort: 80
volumes:
- name: nfs-pv1
persistentVolumeClaim:
claimName: nfs-pvc1
- name: nfs-pv2
persistentVolumeClaim:
claimName: nfs-pvc2
備注:
# nfs-pv1存儲(chǔ)網(wǎng)頁(yè)文件,nfs-pv2日志文件
#執(zhí)行文件
# kubectl create -f nfs-nginx.yaml
# kubectl get pods -o wide
#創(chuàng)建nfs-nginx-server文件
# cat nfs-nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-test
labels:
name: nginx-test
spec:
type: NodePort
ports:
- port: 80
protocol: TCP
targetPort: 80
name: http
nodePort: 30088
selector:
name: nginx-test
#執(zhí)行文件
# kubectl create -f nfs-nginx-svc.yaml
# kubectl get svc
5)驗(yàn)證 PV 是否可用
測(cè)試頁(yè)面:
#內(nèi)部
#外網(wǎng)
備注說(shuō)明: nfs自身沒(méi)有冗余能力,數(shù)據(jù)盤(pán)損壞易丟失數(shù)據(jù);建議使用:glusterfs或cephfs分布式存儲(chǔ);
當(dāng)前標(biāo)題:k8s共享存儲(chǔ)之nfs
網(wǎng)站URL:http://www.rwnh.cn/article20/cpodjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、Google、自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)