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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【Kubernetes存储篇】StorageClass存储类动态生成PV详解

發(fā)布時間:2024/1/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Kubernetes存储篇】StorageClass存储类动态生成PV详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 一、StorageClass存儲類理論
    • 二、案例:Storageclass存儲類實戰(zhàn)演示
      • 1、搭建NFS服務(wù)端
      • 2、搭建NFS供應(yīng)商(provisioner)
      • 3、創(chuàng)建StorageClass存儲類
      • 4、創(chuàng)建PVC,通過StorageClass動態(tài)生成PV
      • 5、創(chuàng)建Pod掛載PVC
    • 三、步驟總結(jié)

一、StorageClass存儲類理論

StorageClass的作用主要有以下幾個方面:

  • 動態(tài)存儲卷分配:StorageClass可以根據(jù)定義的屬性動態(tài)地創(chuàng)建存儲卷,無需手動創(chuàng)建和管理存儲卷。
  • 存儲卷的屬性管理:StorageClass可以定義存儲卷的屬性,如存儲類型、存儲容量、訪問模式等,從而更好地滿足應(yīng)用程序的存儲需求。
  • 存儲資源的管理:StorageClass可以將存儲資源進行分類管理,方便開發(fā)者根據(jù)應(yīng)用程序的需求進行選擇。

每個 StorageClass 都有一個供應(yīng)商(Provisioner),用來決定使用哪個卷插件制備 PV。 該字段必須指定,官網(wǎng)提供供應(yīng)商如下表:

卷插件內(nèi)置制備器配置示例
AWSElasticBlockStore?AWS EBS
AzureFile?Azure File
AzureDisk?Azure Disk
CephFS--
Cinder?OpenStack Cinder
FC--
FlexVolume--
GCEPersistentDisk?GCE PD
iSCSI--
NFS-NFS
RBD?Ceph RBD
VsphereVolume?vSphere
PortworxVolume?Portworx Volume
Local-Local

本文章以NFS為例,要想使用NFS,我們需要一個nfs-client的自動裝載程序,稱之為provisioner,這個程序會使用我們已經(jīng)配置好的NFS服務(wù)器自動創(chuàng)建持久卷,也就是自動幫我們創(chuàng)建PV。

二、案例:Storageclass存儲類實戰(zhàn)演示

1、搭建NFS服務(wù)端

注意:K8S集群所有Node節(jié)點都需要安裝 nfs-utils 包

yum -y install nfs-utils mkdir /data/nfs_pro -p vim /etc/exports /data/nfs_pro *(rw,no_root_squash)

加載生效 && 啟動NFS服務(wù)

exportfs -arv systemctl enable nfs --now

2、搭建NFS供應(yīng)商(provisioner)

第一步:創(chuàng)建運行nfs-provisioner需要使用的SA賬號

cat nfs-serviceaccount.yaml --- apiVersion: v1 kind: ServiceAccount metadata:name: nfs-provisioner

執(zhí)行 YAML 文件 && 查看創(chuàng)建的 SA 賬號:

kubectl apply -f nfs-serviceaccount.yaml kubectl get sa nfs-provisioner

第二步:針對SA賬號進行授權(quán):

kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:nfs-provisioner

第三步:安裝nfs-provisioner程序 YAML 如下:

cat nfs-deployment.yaml --- kind: Deployment apiVersion: apps/v1 metadata:name: nfs-provisioner spec:selector:matchLabels:app: nfs-provisionerreplicas: 1strategy: # 更新策略type: Recreatetemplate:metadata:labels:app: nfs-provisionerspec:serviceAccount: nfs-provisioner # 指定SA賬號containers:- name: nfs-provisionerimage: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0imagePullPolicy: IfNotPresentvolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: example.com/nfs # NFS供應(yīng)商名稱- name: NFS_SERVERvalue: 16.32.15.200 # NFS服務(wù)端地址- name: NFS_PATH value: /data/nfs_pro/ # NFS共享目錄volumes:- name: nfs-client-rootnfs:server: 16.32.15.200 # NFS服務(wù)端地址path: /data/nfs_pro/ # NFS共享目錄

執(zhí)行YAML 文件 && 查看 Pod狀態(tài):

kubectl apply -f nfs-deployment.yaml kubectl get pods

3、創(chuàng)建StorageClass存儲類

cat nfs-storageclass.yaml --- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata:name: nfs provisioner: example.com/nfs # 指定NFS供應(yīng)商名稱,和上面對應(yīng)上

注意:provisioner處寫的 example.com/nfs應(yīng)該跟安裝nfs provisioner時候的env下的PROVISIONER_NAME的value值保持一致。

執(zhí)行YAML文件 && 查看storageclass 狀態(tài):

kubectl apply -f nfs-storageclass.yaml kubectl get sc nfs

4、創(chuàng)建PVC,通過StorageClass動態(tài)生成PV

cat nfs-pvc.yaml --- kind: PersistentVolumeClaim apiVersion: v1 metadata:name: storageclass-pvc-demo spec:accessModes: ["ReadWriteMany"]resources:requests:storage: 1GistorageClassName: nfs # 指定使用storageclass的名稱,來自動生產(chǎn)PV

執(zhí)行YAML 文件 && 查看是否自動生成PV

kubectl apply -f nfs-pvc.yaml kubectl get pvc

如上圖已經(jīng)自動創(chuàng)建PV,并綁定上PVC了

5、創(chuàng)建Pod掛載PVC

cat nfs-pod-demo.yaml --- apiVersion: v1 kind: Pod metadata:name: nfs-pod-demolabels:type: nfs spec:volumes:- persistentVolumeClaim: claimName: storageclass-pvc-demo # 指定PVCname: nfs-storage # 卷名稱containers:- name: nfs-pod-demoimage: nginximagePullPolicy: IfNotPresentvolumeMounts:- name: nfs-storage # 指定上面卷名稱mountPath: /usr/share/nginx/html # 容器掛載目錄

執(zhí)行 YAML 文件 && 查看Pod狀態(tài):

kubectl apply -f nfs-pod-demo.yaml kubectl get pods nfs-pod-demo

在 PVC 綁定宿主機目錄,創(chuàng)建 index.html 文件

echo "storageclass demo successd...." > /data/nfs_pro/default-storageclass-pvc-demo-pvc-d4e47c42-d969-44d5-983d-bf36994b6c86/index.html

獲取Pod IP訪問網(wǎng)站:

kubectl get pods nfs-pod-demo -o wide

三、步驟總結(jié)

1、搭建NFS服務(wù)端

2、搭建NFS供應(yīng)商,指定NFS服務(wù)端IP地址及共享目錄

3、創(chuàng)建StorageClass資源,指定使用NFS供應(yīng)商

4、創(chuàng)建PVC,使用storageClassName 自動指定使用StorageClass

5、創(chuàng)建Pod,使用PVC

總結(jié)

以上是生活随笔為你收集整理的【Kubernetes存储篇】StorageClass存储类动态生成PV详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。