云計算
特別說明:測試使用,不建議生產(chǎn)環(huán)境
1、在master節(jié)點配置(node1)
1)yum安裝nfs
# yum -y install nfs-utils
NFS的關(guān)鍵工具包括:
主要配置文件:/etc/exports;
NFS文件系統(tǒng)維護命令:/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ù)說明:
ro ?只讀訪問
rw ?讀寫訪問
sync ? ?所有數(shù)據(jù)在請求時寫入共享
async ? nfs在寫入數(shù)據(jù)前可以響應(yīng)請求
secure ?nfs通過1024以下的安全TCP/IP端口發(fā)送
insecure ? ?nfs通過1024以上的端口發(fā)送
wdelay ?如果多個用戶要寫入nfs目錄,則歸組寫入(默認)
no_wdelay ? 如果多個用戶要寫入nfs目錄,則立即寫入,當使用async時,無需此設(shè)置
hide ? ?在nfs共享目錄中不共享其子目錄
no_hide 共享nfs目錄的子目錄
subtree_check ? 如果共享/usr/bin之類的子目錄時,強制nfs檢查父目錄的權(quán)限(默認)
no_subtree_check ? ?不檢查父目錄權(quán)限
all_squash ?共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄
no_all_squash ? 保留共享文件的UID和GID(默認)
root_squash root用戶的所有請求映射成如anonymous用戶一樣的權(quán)限(默認)
no_root_squash ?root用戶具有根目錄的完全管理訪問權(quán)限(不安全)
anonuid=xxx 指定nfs服務(wù)器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定nfs服務(wù)器/etc/passwd文件中匿名用戶的GID
4)啟動服務(wù)
# systemctl enable nfs.service
# systemctl start nfs.service
# exportfs ?-arv #不用重啟nfs服務(wù),配置文件就會生效
2、在節(jié)點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ù)的注冊狀況
rpcinfo -p localhost
2)#showmount測試
showmount -e 172.160.45.160
4、kubernetes使用NFS共享存儲有兩種方式:
#手動方式靜態(tài)創(chuàng)建所需要的PV和PVC;
#通過創(chuàng)建PVC動態(tài)地創(chuàng)建對應(yīng)PV,無需手動創(chuàng)建PV;
################靜態(tài)創(chuàng)建#######################
1)靜態(tài)申請PV卷
PersistentVolumes,是k8s抽象化的存儲資源,主要包括存儲能力、訪問模式、存儲類型、回收策略等關(guān)鍵信息.PV是k8s實際對接存儲后端的真正入口;
#創(chuàng)建pv對應(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類似
配置說明:
① capacity 指定 PV 的容量為 1G。
② accessModes 指定訪問模式為 ReadWriteOnce,支持的訪問模式有:
ReadWriteOnce(RWO):讀寫權(quán)限,但是只能被單個節(jié)點掛載;
ReadOnlyMany(ROX):只讀權(quán)限,可以被多個節(jié)點掛載;
ReadWriteMany(RWX):讀寫權(quán)限,可以被多個節(jié)點掛載;
③ persistentVolumeReclaimPolicy 指定當 PV 的回收策略為 Recycle,支持的策略有:
Retain(保留)- 保留數(shù)據(jù),不會再分配給pvc,需要管理員手工清理數(shù)據(jù);
Recycle(回收)- 清除 PV 中的數(shù)據(jù),保留pv資源,可以留供其他pvc使用;
Delete(刪除)- 刪除整個pv資源及內(nèi)部的數(shù)據(jù);
④ storageClassName 指定 PV 的 class 為 nfs。相當于為 PV 設(shè)置了一個分類,PVC 可以指定 class 申請相應(yīng) class 的 PV。
⑤ 指定 PV 在 NFS 服務(wù)器上對應(yīng)的目錄。
#創(chuàng)建pv的pod
# kubectl create-f nfs-pv1.yaml
# kubectl get pv
狀態(tài)Available,表示 pv就緒,可以被 PVC 申請;
3)創(chuàng)建PVC
PersistentVolumeClaims,是對PV資源的一種聲明,pvc綁定實體資源pv后,pod通過綁定pvc來使用pv資源.PVC是k8s的一種抽象化的聲明式綁定存儲資源的管理模式的中間層,pod無法直接通過pv使用存儲資源,必須經(jīng)過pvc,而pvc必須要綁定pv實體后,才可被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對應(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存儲網(wǎng)頁文件,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)驗證 PV 是否可用
測試頁面:
#內(nèi)部
#外網(wǎng)
備注說明: nfs自身沒有冗余能力,數(shù)據(jù)盤損壞易丟失數(shù)據(jù);建議使用:glusterfs或cephfs分布式存儲;
當前標題:k8s共享存儲之nfs
網(wǎng)站URL:http://chinadenli.net/article20/cpodjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、Google、自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)