StorageClass應用:NFS

閱讀時間約 10 分鐘

在建置完Kubernetes cluster之後,通常我會做的前幾件事之一就是建立一個StorageClass給應用服務使用,而NFS我認為是相對容易實現的做法。

透過網路取得共享的資料

接下來將分成幾個部分跟大家說明:

(1) StroageClass是什麼?

(2) 為什麼需要它?

(3) 運行的流程

(4) 部署NFS StorageClass

那就開始吧!!


1. StorageClass是什麼?

官方定義如下:
StorageClass提供了一種供管理員描述其提供的存儲類別的方式。不同的類別可能映射到服務品質水平、
備份策略,或由叢集管理員決定的任意策略。Kubernetes 本身對類別代表的內容保持中立。在儲存系統中
,一般可以被稱為"Profile"


StorageClass物件內將定義:

  • PV的屬性,包含儲存的類型,Volume Size…
  • 這個PV要用到那種Plugin

當描述了以上資訊後,Kubernetes就可以透過PVC找到對應的StorageClass,再由Kubernetes直接調用StorageClass內定義的plugin,再建立出相對應的PV資源。

2. 為什麼要使用StorageClass?

不想因為手動建立PV的失誤反而造成我的PVC無法綁定PV而造成應用服務失敗。只要我寫好PVC,直接讓Kubernetes來管理我的PV資源就好。

如果在大規模的Cluster環境之下,如果不使用StorageClass,就代表有1000個PVC,就要手動建立1000個PV,在管理上就會是一場容易知道儲存的需求。

儲存需求依照不同特性進行分類

3. 運行的流程

From: https://forum.huawei.com/enterprise/en/dynamic-provisioning-with-kubernetes-storage-classes-huawei-evs/thread/694728783145353216-667213860102352896

From: https://forum.huawei.com/enterprise/en/dynamic-provisioning-with-kubernetes-storage-classes-huawei-evs/thread/694728783145353216-667213860102352896

本文針對NFS provisioner還可以再簡化成下圖:

raw-image

建立NFS provisioner之後,當PVC進行宣告後,就會連接到storageclass自動產生以NFS協定為基礎的PV資源來提供儲存。

4. 部署StorageClass

(1) 建立nfs server

# cat >> /etc/fstab << EOF
/dev/vg00/nfs /var/nfsshare xfs defaults 0 0
EOF
// 安裝nfs-server

# yum install -y nfs-utils policycoreutils-python-utils policycoreutils-python
# mkdir /var/nfsshare
# chmod 777 /var/nfsshare
# cat > /etc/exports << EOF
/var/nfsshare *(rw,sync,no_wdelay,no_root_squash,insecure)
EOF

# systemctl start rpcbind nfs-server nfs-lock nfs-idmap
# systemctl enable rpcbind nfs-server nfs-lock nfs-idmap
# systemctl start rpcbind nfs-server nfs-lock nfs-idmap
//設定Firewalld放行規則

# export FIREWALLD_DEFAULT_ZONE=`firewall-cmd --get-default-zone`
# echo ${FIREWALLD_DEFAULT_ZONE}
public

# firewall-cmd --permanent --zone=${FIREWALLD_DEFAULT_ZONE} --add-service=rpc-bind
# firewall-cmd --permanent --zone=${FIREWALLD_DEFAULT_ZONE} --add-service=nfs
# firewall-cmd --permanent --zone=${FIREWALLD_DEFAULT_ZONE} --add-service=mountd
# firewall-cmd --reload ; firewall-cmd --list-all
//設定SELINUX

# setsebool -P nfs_export_all_rw 1
# setsebool -P nfs_export_all_ro 1
# semanage fcontext -a -t public_content_rw_t "/var/nfsshare(/.*)?"
# restorecon -R /var/nfsshare
//測試

# mount -t nfs nfs-server:/var/nfsshare /mnt
# touch /mnt/1 && rm -f /mnt/1

(2) 建立NFS provisioner in Kubernetes

//取得資源

# git clone https://github.com/kubernetes-incubator/external-storage.git kubernetes-incubator
// 建立namespace

# kubectl create namespace k8s-nfs-storage
// 更新 deployment與RBAC

# cd kubernetes-incubator/nfs-client/
# sed -i'' "s/namespace:.*/namespace: k8s-nfs-storage/g" ./deploy/rbac.yaml
# sed -i'' "s/namespace:.*/namespace: k8s-nfs-storage/g" ./deploy/deployment.yaml
# kubectl create -f rbac.yaml
// 更新權限

# kubectl adm policy add-scc-to-user hostmount-anyuid system:serviceaccount:k8s-nfs-storage:nfs-client-provisioner
// 修改deployment.yaml

containers:
- name: nfs-client-provisioner
image: groundhog2k/nfs-subdir-external-provisioner:v3.2.0
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: storage.io/nfs
- name: NFS_SERVER
value: 192.168.1.10
- name: NFS_PATH
value: /var/nfsshare
volumes:
- name: nfs-client-root
nfs:
server: 192.168.1.10
path: /var/nfsshare
// 更新class.yaml

# vim deploy/class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: managed-nfs-storage
provisioner: storage.io/nfs # or choose another name, must match deployment's env PROVISIONER_NAME'
parameters:
archiveOnDelete: "false"
// 部署

# kubectl create -f deploy/class.yaml
# kubectl create -f deploy/deployment.yaml
# kubectl get all -n k8s-nfs-storage
raw-image

後續使用資料夾內的test-pvc.yaml測試是否可以正確的自動產生對應的PV並且PVC有取得資源。

如果要修改預設的storageClass,可以使用以下方式實現:

# kubectl patch storageclass managed-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/managed-nfs-storage patched

以上就是基本的NFS storageclass的部署與StorageClass的說明,還有一些storageclass的操作後續文章再跟大家分享。


References:

14會員
40Content count
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
留言0
查看全部
發表第一個留言支持創作者!
超健忘閒人的沙龍 的其他內容
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
這次的話題,在有部分的自閉症者,因為照顧者的「給予」,變成不好教自閉症者如何拖地。 因為,重要的是,在照顧者的「傳遞」。 用自閉症者的興趣,做培養動機的媒介 對自閉症者而言,培養動機,需要有興趣和喜好的事物做媒介。 因此,自閉症者的理解速度,比較容易快又泛化。 提升模仿能力,做進一步的建立
Thumbnail
Hi,我是茶桁。 在过去的两讲中,我们已经使用 OpenAI 提供的 Embedding 接口完成了文本分类的功能。现在,我们回到 Completion 接口,这一讲将带你更深入地了解该接口的使用。除此之外,我们还将快速搭建一个有界面的聊天机器人,这将让你更好地理解 Completion 接口的应
剛才上網深入找資料,才知道懲罰的特性,是減少行為。 像是有自閉症者容易搶走他人的物品情況,就有必要改善。 具體說明 見到自閉症者的正懲罰,是以負面性質為主。 在自閉症者搶走他人物品,務必提出負面性質的刺激。 像是,在自閉症者有感官敏銳,就可以藉由〝正懲罰〞進行機會感官減敏。 簡單說,不但可以減少搶他
Thumbnail
FlowUs 使用攻略:如何快速制作 Web 应用(PWA) 最近在寻找 Notion 的替代品过程中,我发现了 FlowUs.虽然是后起之秀,但不是唯 Notion 亦步亦趋。 FLowUs 有两个很重要的特性打动了我。 2.2 选择右上角的 设置 → 更多工具 → 创建快捷方式 最终效果如图。
Thumbnail
这些应用程序可以使您的图像看起来令人难以置信。 我已经收集了一些我的首选,所以请阅读,泡杯茶,然后安顿下来进行晚上的编辑会议。您甚至可以将您最喜欢的照片变成相册。 如果您想拍摄和编辑新的东西,您还可以查看这些创意,以在家中锻炼您的摄影肌肉。 1. 快播 在 iOS 和 Android 上免费。
Thumbnail
  之前文章跟大家提到了NFT的应用和实物上的接轨,如果你能看懂了,那就不会迷茫跟风成为了发行方的接盘侠。按秦爷所说好像NFT并非能发展的一个领域。其实并非如此,元宇宙在不久来将走入NFT2.0时代。上两期有提到元宇宙属性就是权益的象征,要能真正体现出权益上的使用,唯有在虚拟世界里。
Thumbnail
原文連結:https://zb.house/五分钟速览-cake-生态最新进展与应用潜力/ 【本文章轉載自鑄幣局 - 提供專業的加密貨幣行業的研究成果的分析平台。】
Thumbnail
原文連結:https://zb.house/nft-投资宝典:什么样的游戏应用值得参与和投资?/ 【本文章轉載自鑄幣局 - 提供專業的加密貨幣行業的研究成果的分析平台。】 "由于Cryptoblade是币安链上的Dapp,加上其庞大的交易量,Skill代币上架币安交易所是有很大可能的。" 角色
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
這次的話題,在有部分的自閉症者,因為照顧者的「給予」,變成不好教自閉症者如何拖地。 因為,重要的是,在照顧者的「傳遞」。 用自閉症者的興趣,做培養動機的媒介 對自閉症者而言,培養動機,需要有興趣和喜好的事物做媒介。 因此,自閉症者的理解速度,比較容易快又泛化。 提升模仿能力,做進一步的建立
Thumbnail
Hi,我是茶桁。 在过去的两讲中,我们已经使用 OpenAI 提供的 Embedding 接口完成了文本分类的功能。现在,我们回到 Completion 接口,这一讲将带你更深入地了解该接口的使用。除此之外,我们还将快速搭建一个有界面的聊天机器人,这将让你更好地理解 Completion 接口的应
剛才上網深入找資料,才知道懲罰的特性,是減少行為。 像是有自閉症者容易搶走他人的物品情況,就有必要改善。 具體說明 見到自閉症者的正懲罰,是以負面性質為主。 在自閉症者搶走他人物品,務必提出負面性質的刺激。 像是,在自閉症者有感官敏銳,就可以藉由〝正懲罰〞進行機會感官減敏。 簡單說,不但可以減少搶他
Thumbnail
FlowUs 使用攻略:如何快速制作 Web 应用(PWA) 最近在寻找 Notion 的替代品过程中,我发现了 FlowUs.虽然是后起之秀,但不是唯 Notion 亦步亦趋。 FLowUs 有两个很重要的特性打动了我。 2.2 选择右上角的 设置 → 更多工具 → 创建快捷方式 最终效果如图。
Thumbnail
这些应用程序可以使您的图像看起来令人难以置信。 我已经收集了一些我的首选,所以请阅读,泡杯茶,然后安顿下来进行晚上的编辑会议。您甚至可以将您最喜欢的照片变成相册。 如果您想拍摄和编辑新的东西,您还可以查看这些创意,以在家中锻炼您的摄影肌肉。 1. 快播 在 iOS 和 Android 上免费。
Thumbnail
  之前文章跟大家提到了NFT的应用和实物上的接轨,如果你能看懂了,那就不会迷茫跟风成为了发行方的接盘侠。按秦爷所说好像NFT并非能发展的一个领域。其实并非如此,元宇宙在不久来将走入NFT2.0时代。上两期有提到元宇宙属性就是权益的象征,要能真正体现出权益上的使用,唯有在虚拟世界里。
Thumbnail
原文連結:https://zb.house/五分钟速览-cake-生态最新进展与应用潜力/ 【本文章轉載自鑄幣局 - 提供專業的加密貨幣行業的研究成果的分析平台。】
Thumbnail
原文連結:https://zb.house/nft-投资宝典:什么样的游戏应用值得参与和投资?/ 【本文章轉載自鑄幣局 - 提供專業的加密貨幣行業的研究成果的分析平台。】 "由于Cryptoblade是币安链上的Dapp,加上其庞大的交易量,Skill代币上架币安交易所是有很大可能的。" 角色