最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

k8s搭建nfs共享存儲實踐

 更新時間:2025年09月22日 16:31:39   作者:九制橘皮茶  
本文介紹NFS服務(wù)端搭建與客戶端配置,涵蓋安裝工具、目錄設(shè)置及服務(wù)啟動,隨后講解K8S中NFS動態(tài)存儲部署,包括創(chuàng)建命名空間、ServiceAccount、RBAC權(quán)限和StorageClass,實現(xiàn)存儲驗證

1. NFS搭建

nfs服務(wù)端nfs客戶端
192.168.48.19192.168.48.0/24

1.1 部署NFS服務(wù)端

NFS 是Network File System的縮寫,即網(wǎng)絡(luò)文件系統(tǒng)。英文Network File System(NFS),是基于TCP/IP協(xié)議的應(yīng)用,可以通過網(wǎng)絡(luò),讓不同的機器、不同的操作系統(tǒng)可以共享彼此的文件。

NFS在文件傳送或信息傳送過程中依賴于RPC服務(wù)。

RPC:遠(yuǎn)程過程調(diào)用 (Remote Procedure Call) 是能使客戶端執(zhí)行其他系統(tǒng)中程序的一種機制。

NFS服務(wù)器可以看作是一個FILE SERVER。它可以讓你的機器(客戶端)通過網(wǎng)絡(luò)將遠(yuǎn)端的NFS SERVER共享目錄MOUNT到自己的系統(tǒng)中。

1.1.1 下載nfs-utils和rpcbind

yum -y install nfs-utils rpcbind

1.1.2 創(chuàng)鍵共享目錄

mkdir -p /data/k8s_data
chmod 777 /data/k8s_data

1.1.3 修改配置文件

cat > /etc/exports <<'EOF'
/data/k8s_data 192.168.48.0/24(rw,sync,no_root_squash,no_subtree_check)
EOF

1.1.4 啟動nfs服務(wù)端

systemctl start rpcbind # 啟動rpc
systemctl start nfs-server #啟動nfs
exportfs -arv #使配置生效
systemctl enable rpcbind  #設(shè)置開機自啟
systemctl enable nfs-server #設(shè)置開機自啟

1.2 部署NFS客戶端

yum -y install nfs-utils rpcbind
systemctl start rpcbind # 啟動rpc
systemctl start nfs-server #啟動nfs
systemctl enable rpcbind  #設(shè)置開機自啟
systemctl enable nfs-server #設(shè)置開機自啟

1.3 檢測NFS是否正常

showmount -e 192.168.48.19

正常輸出:

[root@master1 k8s-nfs]# showmount -e 192.168.48.19
Export list for 192.168.48.19:
/data/k8s_data 192.168.48.0/24

2. K8S部署NFS Dynamic Provisioning

2.1 創(chuàng)建namespace

kubectl create namespace nfs-storageclass

2.2 創(chuàng)建SeviceAccount和RBAC權(quán)限

vim nfs-rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-storageclass
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: nfs-storageclass
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-storageclass
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-storageclass
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: nfs-storageclass
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io

2.3 部署NFS Provisioner

先拉取鏡像:

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2  registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2

vim nfs-deployment.yaml

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nfs-client-provisioner
  namespace: nfs-storageclass
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-client-provisioner
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: k8s-sigs.io/nfs-subdir-external-provisioner
            - name: NFS_SERVER
              # value: <YOUR NFS SERVER HOSTNAME>
              value: 192.168.48.19
            - name: NFS_PATH
              # value: /var/nfs
              value: /data/k8s_data
      volumes:
        - name: nfs-client-root
          nfs:
            # server: <YOUR NFS SERVER HOSTNAME>
            server: 192.168.48.19
            # share nfs path
            path: /data/k8s_data

2.4 創(chuàng)建StorageClass

vim nfs-sc.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-client
  namespace: nfs-storageclass
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:
  pathPattern: ${.PVC.namespace}/${.PVC.name}
  onDelete: delete

2.5 驗證NFS存儲

2.5.1 創(chuàng)建PVC

vim nfs-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
 name: nfs
spec:
 storageClassName: nfs-client
 accessModes:
   - ReadWriteMany
 resources:
   requests:
     storage: 1Mi

2.5.2 創(chuàng)建PV

vim nfs-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
  namespace: kube-system
spec:
  capacity:
    storage: 30Gi  # 存儲容量
  accessModes:
    - ReadWriteMany  # 支持多節(jié)點讀寫
  persistentVolumeReclaimPolicy: Retain  # 刪除PVC后保留PV數(shù)據(jù)
  storageClassName: nfs-client  # 指定存儲類名稱(可自定義)
  nfs:
    server: 192.168.48.19  # NFS服務(wù)器IP
    path: /data/k8s_data  # NFS共享路徑

執(zhí)行所有yaml文件:

kubectl apply -f ./

3. 驗證

[root@master1 k8s-nfs]# kubectl get all -n nfs-storageclass 
NAME                                         READY   STATUS    RESTARTS   AGE
pod/nfs-client-provisioner-c8b7f495d-b2zpk   1/1     Running   0          64m
?
NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nfs-client-provisioner   1/1     1            1           82m
?
NAME                                               DESIRED   CURRENT   READY   AGE
replicaset.apps/nfs-client-provisioner-c8b7f495d   1         1         1       82m
[root@master1 k8s-nfs]# kubectl get sc
NAME         PROVISIONER                                   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client   k8s-sigs.io/nfs-subdir-external-provisioner   Delete          Immediate           false                  83m
[root@master1 k8s-nfs]# kubectl get pvc
NAME   STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
nfs    Bound    nfs-pv   30Gi       RWX            nfs-client     <unset>                 83m
[root@master1 k8s-nfs]# kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM         STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
nfs-pv   30Gi       RWX            Retain           Bound    default/nfs   nfs-client     <unset>                          84m

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于Rancher部署并導(dǎo)入K8S集群的問題

    關(guān)于Rancher部署并導(dǎo)入K8S集群的問題

    這篇文章主要介紹了關(guān)于Rancher部署并導(dǎo)入K8S集群的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 詳解kubelet?創(chuàng)建pod流程代碼圖解及日志說明

    詳解kubelet?創(chuàng)建pod流程代碼圖解及日志說明

    這篇文章主要為大家介紹了詳解kubelet?創(chuàng)建pod流程代碼圖解及日志說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Windows下安裝并使用kubectl查看K8S日志的操作方法

    Windows下安裝并使用kubectl查看K8S日志的操作方法

    本文給大家介紹Windows下安裝并使用kubectl查看K8S日志的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友安康下吧
    2025-06-06
  • K8S下http請求在ingress和nginx間無限循環(huán)的問題及解決

    K8S下http請求在ingress和nginx間無限循環(huán)的問題及解決

    文章描述了UAT環(huán)境中因Nginx與IngressController代理循環(huán)導(dǎo)致400錯誤的排查過程,發(fā)現(xiàn)proxy_set_header Host配置引發(fā)Host頭攜帶Nginx域名,導(dǎo)致請求反復(fù)轉(zhuǎn)發(fā),最終X-Forwarded-For頭溢出,解決方法是移除該配置
    2025-07-07
  • kubernetes存儲之GlusterFS集群詳解

    kubernetes存儲之GlusterFS集群詳解

    最近工作中用到了GlusterFS作為Kubernetes的存儲,這篇文章主要給大家介紹了關(guān)于kubernetes存儲之GlusterFS集群的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • k8s使用rbd作為存儲的操作方法

    k8s使用rbd作為存儲的操作方法

    這篇文章主要介紹了k8s使用rbd作為存儲的操作方法,本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • K8S-ConfigMap實現(xiàn)應(yīng)用和配置分離詳解

    K8S-ConfigMap實現(xiàn)應(yīng)用和配置分離詳解

    這篇文章主要為大家介紹了K8S-ConfigMap實現(xiàn)應(yīng)用和配置分離詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • MinIO使用基礎(chǔ)教程(最新整理)

    MinIO使用基礎(chǔ)教程(最新整理)

    文章介紹了MinIO云存儲服務(wù)的快速安裝和使用,并通過SpringBoot實現(xiàn)文件上傳和查詢的功能,感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運行流程

    Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運行流程

    這篇文章主要為大家介紹了Rainbond使用Dockerfile構(gòu)建便捷應(yīng)用運行流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Kubernetes(k8s)常用yaml配置和注釋方式

    Kubernetes(k8s)常用yaml配置和注釋方式

    這篇文章主要介紹了Kubernetes(k8s)常用yaml配置和注釋方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評論

读书| 房产| 江孜县| 芜湖市| 甘孜| 黄梅县| 安阳县| 墨竹工卡县| 东乡族自治县| 同心县| 壤塘县| 会理县| 绵竹市| 巢湖市| 翁牛特旗| 鄯善县| 防城港市| 张家港市| 太谷县| 双流县| 敦煌市| 盐城市| 江口县| 河北省| 竹山县| 闽清县| 渝中区| 奉贤区| 桦川县| 建德市| 镶黄旗| 绥芬河市| 汉寿县| 富阳市| 孟州市| 湖北省| 峨边| 顺平县| 鹿邑县| 中牟县| 屏南县|