国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s~動態(tài)生成pvc和pv

這篇具有很好參考價值的文章主要介紹了k8s~動態(tài)生成pvc和pv。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

有時,我們不想手動建立pv和pvc,這時,我們可以通過strongClass存儲類來幫我們實現(xiàn),動態(tài)建立pvc,并動態(tài)為它分配pv存儲空間,我們以nfs為例,說一下動態(tài)分配在nfs存儲截至上建立pv的方式。

本文導讀

  • StorageClass和PVC及PV
  • 集群權(quán)限與綁定rbac.yaml
  • 建立動態(tài)pvc的provisioner.yaml
  • 建立strongClass的strongclass.yaml
  • 在有狀態(tài)服務StatefulSet中使用strongClass
  • 遇到的問題與解決

StorageClass和PVC及PV

當使用StorageClass創(chuàng)建PersistentVolumeClaim(PVC)時,它們之間的關(guān)系可以用以下文字圖示表示:

           +------------------+
           |   StorageClass   |
           +------------------+
                     |
                     |  +------------------+
                     |  |       PVC        |
                     |  +------------------+
                     |         |
                     |         |
                     |  +------------------+
                     |  |        PV        |
                     |  +------------------+

在這個圖示中:

  • StorageClass是用于定義動態(tài)卷分配的規(guī)則和配置的對象。
  • PVC是用來請求存儲資源的聲明,它指定了所需的存儲容量、訪問模式等。
  • PV是實際的持久化存儲資源,它是由集群管理員預先創(chuàng)建并配置好的。

當一個PVC被創(chuàng)建時,它會根據(jù)所指定的StorageClass進行動態(tài)分配,并綁定到一個可用的PV上。這樣,PVC就可以通過PV來獲取所需的存儲資源。PVC和PV之間的綁定關(guān)系是自動完成的,不需要用戶手動干預。

集群權(quán)限與綁定rbac.yaml

首先,你要在k8s中添加pvc,pv這些資源,你需要有自己的sa(service account),然后把你的pod(建立pvc和pv)去分配這個有權(quán)限的sa,這個pod就可以像人一樣,為你在k8s中創(chuàng)建資源了。

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner
  namespace: elk
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
   name: nfs-provisioner-runner
rules:
   -  apiGroups: [""]
      resources: ["persistentvolumes"]
      verbs: ["get", "list", "watch", "create", "delete"]
   -  apiGroups: [""]
      resources: ["persistentvolumeclaims"]
      verbs: ["get", "list", "watch", "update","create"]
   -  apiGroups: ["storage.k8s.io"]
      resources: ["storageclasses"]
      verbs: ["get", "list", "watch"]
   -  apiGroups: [""]
      resources: ["events"]
      verbs: ["list", "watch", "create", "update", "patch"]
   -  apiGroups: [""]
      resources: ["services", "endpoints"]
      verbs: ["get","create","list", "watch","update"]
   -  apiGroups: ["extensions"]
      resources: ["podsecuritypolicies"]
      resourceNames: ["nfs-provisioner"]
      verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-provisioner
roleRef:
  kind: ClusterRole
  name: nfs-provisioner-runner
  apiGroup: rbac.authorization.k8s.io

在Kubernetes中,ClusterRole和ClusterRoleBinding都是一種用于定義集群級別權(quán)限的資源,它與特定的命名空間無關(guān)。因此,在創(chuàng)建ClusterRole時,不需要為它指定namespace。
ClusterRole的權(quán)限范圍覆蓋整個集群,可以被任何命名空間中的對象引用和使用。這使得ClusterRole能夠控制跨多個命名空間的資源和操作。

建立動態(tài)pvc的provisioner.yaml

---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: nfs-client-provisioner
  namespace: elk
  labels:
    app: nfs-client-provisioner
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccount: nfs-provisioner
      containers:
        - name: nfs-client-provisioner
          image: easzlab/nfs-subdir-external-provisioner:v4.0.1 #quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: nfs-provisioner # 指定分配器的名稱,創(chuàng)建storageclass會用到
            - name: NFS_SERVER
              value: 192.168.1.x
            - name: NFS_PATH
              value: /mnt/disk/nfs_data #這個nfs服務器上的目錄
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.1.x
            path: /mnt/disk/nfs_data #這個nfs服務器上的目錄

建立strongClass的strongclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: elk-nfs
provisioner: nfs-provisioner # 必須與provisioner.yaml中PROVISIONER_NAME的值一致
parameters:
  archiveOnDelete: "true"  # 刪除pv的時候,pv的內(nèi)容是否要備份
allowVolumeExpansion: true  #如果對PVC擴容,則其對應的"storage class"中allowVolumeExpansion字段需要設置成true

在Kubernetes中,建立StorageClass時不需要指定命名空間(namespace)。StorageClass是一種用于定義持久卷的存儲類別的資源,它是集群級別的。

在有狀態(tài)服務StatefulSet中使用strongClass

在Kubernetes中,StatefulSet是一種用于管理有狀態(tài)應用的控制器。它可以確保Pod按照指定的順序和唯一標識符進行創(chuàng)建、更新和刪除。StatefulSet通常與PersistentVolumeClaim(PVC)一起使用,以為每個Pod提供持久化存儲。

要動態(tài)創(chuàng)建PVC并將其綁定到StatefulSet的Pod上,你可以使用volumeClaimTemplates字段。這個字段允許你定義一個模板,用于創(chuàng)建PVC。

下面是一個示例StatefulSet配置文件,其中包含了volumeClaimTemplates字段:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: example-statefulset
spec:
  serviceName: "example"
  replicas: 3
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example-app
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: data
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: elk-nfs
      resources:
        requests:
          storage: 1Gi

在上述配置中,我們定義了一個StatefulSet,它由3個Pod組成。每個Pod都會自動創(chuàng)建一個名為"data"的PVC,并將其掛載到/data路徑上。你需要將elk-nfs替換為實際的存儲類名稱。

遇到的問題與解決

最近把kubernetes集群從1.18升級到1.20以后,新建pvc一直處于pending狀態(tài),查看nfs-client-provisioner日志,提示:

unexpected error getting claim reference: selfLink was empty, can't  make reference

主要原因是kubernetes 1.20版本 禁用了 selfLink導致。

網(wǎng)上大部分文檔的解決方法都是修改kube-apiserver.yaml,添加- --feature-gates=RemoveSelfLink=false,然后重新部署。

spec:
  containers:
  - command:
    - kube-apiserver
    - --feature-gates=RemoveSelfLink=false

但是根據(jù)github的issues,直接更改nfs-subdir-external-provisioner為v4.0.0以上的版本就可以了。

相關(guān)文檔:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/issues/25

網(wǎng)上找了一個可以下載的鏡像easzlab/nfs-subdir-external-provisioner:v4.0.1,pull以后測試,發(fā)現(xiàn)pvc申請正常了。

k8s~動態(tài)生成pvc和pv文章來源地址http://www.zghlxwxcb.cn/news/detail-776274.html

到了這里,關(guān)于k8s~動態(tài)生成pvc和pv的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • K8s基礎(chǔ)10——數(shù)據(jù)卷、PV和PVC、StorageClass動態(tài)補給、StatefulSet控制器

    K8s基礎(chǔ)10——數(shù)據(jù)卷、PV和PVC、StorageClass動態(tài)補給、StatefulSet控制器

    為什么需要數(shù)據(jù)卷? 容器中的文件在磁盤上是臨時存放的,這給容器中運行比較重要的應用程序帶來一些問題。 當容器升級或者崩潰時,kubelet會重建容器,容器內(nèi)文件會丟失。 一個Pod中運行多個容器時,需要共享文件。 而K8s 數(shù)據(jù)卷就可以解決這兩個問題。 Volume概念: V

    2024年02月05日
    瀏覽(19)
  • k8s pv與pvc

    k8s pv與pvc

    1.前言 PV 是 Kubernetes 集群中的一種資源對象,它代表著一塊物理存儲設備,例如磁盤、網(wǎng)絡存儲或云存儲等。PV 可以被多個 Pod 共享,并且可以獨立于 Pod 存在。PV 可以配置不同的訪問模式 (Access Modes),例如 ReadWriteOnce 、 ReadOnlyMany 或 ReadWriteMany ,以確定 PV 可以被多少個 Pod 同

    2024年01月21日
    瀏覽(20)
  • PV & PVC in K8s

    在Kubernetes中,PV(Persistent Volume)和PVC(Persistent Volume Claim)是用于管理持久化存儲的重要資源對象。PV表示存儲的實際資源,而PVC表示對PV的聲明性要求。當應用程序需要使用持久化存儲時,它可以通過創(chuàng)建PVC來請求和使用PV。以下是使用PV和PVC時的一些注意事項: 定義存儲類

    2024年02月09日
    瀏覽(24)
  • k8s ------存儲卷(PV、PVC)

    k8s ------存儲卷(PV、PVC)

    目錄 一:為什么需要存儲卷? 二:emptyDir存儲卷? ?三:hostPath存儲卷? 四:nfs共享存儲卷? ?五:PVC 和 PV 1、PVC 和 PV介紹 2、PV和PVC之間的相互作用遵循的生命周期 3、PV 的4 種狀態(tài) 4、一個PV從創(chuàng)建到銷毀的具體流程 六:靜態(tài)創(chuàng)建pv和pvc資源由pod運用過程 ?1、配置nfs存儲 ?

    2024年02月13日
    瀏覽(19)
  • 【K8S系列】深入解析K8S中PV 和PVC

    在 Kubernetes 中,PV(持久卷)和 PVC(持久卷聲明)之間的關(guān)系是一種動態(tài)匹配和綁定關(guān)系,用于實現(xiàn) Pod 與存儲資源的解耦。 PV 是集群中的一塊網(wǎng)絡存儲,它獨立于 Pod 存在。PV 可以是各種存儲系統(tǒng),如云提供商的存儲、NFS、iSCSI、本地存儲等。 管理員負責創(chuàng)建 PV,并配置其

    2024年04月23日
    瀏覽(27)
  • 【K8S 存儲卷】K8S的存儲卷+PV/PVC

    【K8S 存儲卷】K8S的存儲卷+PV/PVC

    目錄 一、K8S的存儲卷 1、概念: 2、掛載的方式: 2.1、emptyDir: 2.2、hostPath: 2.3、NFS共享存儲: 二、PV和PVC: 1、概念 2、請求方式 3、靜態(tài)請求流程圖: 4、PV和PVC的生命周期 5、PV的狀態(tài): 6、PV的讀寫掛載方式: 7、回收策略: 三、PV和PVC靜態(tài)請求實驗: 1、默認的Retain保留策

    2024年02月02日
    瀏覽(58)
  • k8s里pv pvc configmap

    通過storageClassName 將PV 和PVC 關(guān)聯(lián)起來。

    2024年02月11日
    瀏覽(22)
  • k8s 存儲卷和pvc,pv

    k8s 存儲卷和pvc,pv

    存儲卷---數(shù)據(jù)卷 容器內(nèi)的目錄和宿主機的目錄進行掛載。 容器在系統(tǒng)上的生命周期是短暫的,deletek8s用控制器創(chuàng)建的pod,delete相當于重啟,容器的狀態(tài)也會回復到初始狀態(tài)。 一旦回到初始狀態(tài),所有的后天編輯的文件的都會消失。 容器容器和節(jié)點之間創(chuàng)建一個可以持久化保

    2024年01月16日
    瀏覽(23)
  • k8s中的PV和PVC存儲介紹

    目錄 一.PV介紹 1.含義 2.關(guān)鍵配置參數(shù) 二.PVC介紹 1.含義 2.關(guān)鍵參數(shù)配置 三.PV和PVC的生命周期問題 1.PV的生命周期會有4個階段 2.用戶申請空間PV的周期流程 3.PV和PVC的使用/釋放/回收 四.案例演示 1.NFS配置 2.新建PV 3.新建PVC 4.新建Pod測試 5.模擬刪除Pod后后端目錄內(nèi)數(shù)據(jù)不會受影響

    2024年03月15日
    瀏覽(20)
  • k8s創(chuàng)建pvc后,不自動創(chuàng)建pv

    創(chuàng)建pvc的yaml 是否立刻動態(tài)產(chǎn)生pv,要看sc volumeBindingMode配置 默認情況下,Immediate 模式表示一旦創(chuàng)建了 PersistentVolumeClaim 也就完成了卷綁定和動態(tài)制備。 對于由于拓撲限制而非集群所有節(jié)點可達的存儲后端,PersistentVolume 會在不知道 Pod 調(diào)度要求的情況下綁定或者制備。 集群管

    2024年02月16日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包