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:

avatar-img
15會員
40內容數
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
超健忘閒人的沙龍 的其他內容
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
本文針對Kubernetes內最基本的資源(cpu, ram, disk)的計算單位與一些實務操作,分享給自已與大家做參考。
本次分享一個K8S網路的一個很重要的元件:Ingress。 有沒有ingress差別在那?
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
https://flipedu.parenting.com.tw/article/003994 [人間省思] [語文X數理] 昌平國小老師馬恬舒認為小孩寫數學應用題遭遇困難,原因有很多,可能是對應用題的情境不理解,也許是生活經驗不足、也許是閱讀理解能力不好、更也許是題目本身的問題、當然也有可能是
事實上,我目前有重覆看的〝寶貝上超市購物〞這部分,笑笑母就是用獎勵品,進行耍賄賂。 事實上,這是笑笑母的心疼,所導致。 而應用行為分析的活用,是如何改善呢? 在得到星星兒想要的目標物之前,可以把星星兒的目標物,做為獎勵品 就以我下個月的任務為主,就是以隨機性質,什麼時候準備好識別證和水,什麼
Thumbnail
所以2024年底,或是2025年6月,根據GEE的模型,將會是紅點的位置(和接續下一個點),分別是持平和大跌。我是統計人,我會做根據統計的事,我會根據:不可空手、不再多買的策略執行下去。
Thumbnail
Data Analyst 工作過程中所使用的預估方法,不只用在工作上,也可用於投資
Thumbnail
在建置完Kubernetes cluster之後,通常我會做的前幾件事之一就是建立一個StorageClass給應用服務使用,而NFS我認為是相對容易實現的做法。
這次的話題,在有部分的自閉症者,因為照顧者的「給予」,變成不好教自閉症者如何拖地。 因為,重要的是,在照顧者的「傳遞」。 用自閉症者的興趣,做培養動機的媒介 對自閉症者而言,培養動機,需要有興趣和喜好的事物做媒介。 因此,自閉症者的理解速度,比較容易快又泛化。 提升模仿能力,做進一步的建立
Thumbnail
Hi,我是茶桁。 在过去的两讲中,我们已经使用 OpenAI 提供的 Embedding 接口完成了文本分类的功能。现在,我们回到 Completion 接口,这一讲将带你更深入地了解该接口的使用。除此之外,我们还将快速搭建一个有界面的聊天机器人,这将让你更好地理解 Completion 接口的应
剛才上網深入找資料,才知道懲罰的特性,是減少行為。 像是有自閉症者容易搶走他人的物品情況,就有必要改善。 具體說明 見到自閉症者的正懲罰,是以負面性質為主。 在自閉症者搶走他人物品,務必提出負面性質的刺激。 像是,在自閉症者有感官敏銳,就可以藉由〝正懲罰〞進行機會感官減敏。 簡單說,不但可以減少搶他
Thumbnail
FlowUs 使用攻略:如何快速制作 Web 应用(PWA) 最近在寻找 Notion 的替代品过程中,我发现了 FlowUs.虽然是后起之秀,但不是唯 Notion 亦步亦趋。 FLowUs 有两个很重要的特性打动了我。 2.2 选择右上角的 设置 → 更多工具 → 创建快捷方式 最终效果如图。
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
https://flipedu.parenting.com.tw/article/003994 [人間省思] [語文X數理] 昌平國小老師馬恬舒認為小孩寫數學應用題遭遇困難,原因有很多,可能是對應用題的情境不理解,也許是生活經驗不足、也許是閱讀理解能力不好、更也許是題目本身的問題、當然也有可能是
事實上,我目前有重覆看的〝寶貝上超市購物〞這部分,笑笑母就是用獎勵品,進行耍賄賂。 事實上,這是笑笑母的心疼,所導致。 而應用行為分析的活用,是如何改善呢? 在得到星星兒想要的目標物之前,可以把星星兒的目標物,做為獎勵品 就以我下個月的任務為主,就是以隨機性質,什麼時候準備好識別證和水,什麼
Thumbnail
所以2024年底,或是2025年6月,根據GEE的模型,將會是紅點的位置(和接續下一個點),分別是持平和大跌。我是統計人,我會做根據統計的事,我會根據:不可空手、不再多買的策略執行下去。
Thumbnail
Data Analyst 工作過程中所使用的預估方法,不只用在工作上,也可用於投資
Thumbnail
在建置完Kubernetes cluster之後,通常我會做的前幾件事之一就是建立一個StorageClass給應用服務使用,而NFS我認為是相對容易實現的做法。
這次的話題,在有部分的自閉症者,因為照顧者的「給予」,變成不好教自閉症者如何拖地。 因為,重要的是,在照顧者的「傳遞」。 用自閉症者的興趣,做培養動機的媒介 對自閉症者而言,培養動機,需要有興趣和喜好的事物做媒介。 因此,自閉症者的理解速度,比較容易快又泛化。 提升模仿能力,做進一步的建立
Thumbnail
Hi,我是茶桁。 在过去的两讲中,我们已经使用 OpenAI 提供的 Embedding 接口完成了文本分类的功能。现在,我们回到 Completion 接口,这一讲将带你更深入地了解该接口的使用。除此之外,我们还将快速搭建一个有界面的聊天机器人,这将让你更好地理解 Completion 接口的应
剛才上網深入找資料,才知道懲罰的特性,是減少行為。 像是有自閉症者容易搶走他人的物品情況,就有必要改善。 具體說明 見到自閉症者的正懲罰,是以負面性質為主。 在自閉症者搶走他人物品,務必提出負面性質的刺激。 像是,在自閉症者有感官敏銳,就可以藉由〝正懲罰〞進行機會感官減敏。 簡單說,不但可以減少搶他
Thumbnail
FlowUs 使用攻略:如何快速制作 Web 应用(PWA) 最近在寻找 Notion 的替代品过程中,我发现了 FlowUs.虽然是后起之秀,但不是唯 Notion 亦步亦趋。 FLowUs 有两个很重要的特性打动了我。 2.2 选择右上角的 设置 → 更多工具 → 创建快捷方式 最终效果如图。