中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么進行Kubernetes靜態持久卷的探索學習

發布時間:2021-12-27 14:47:06 來源:億速云 閱讀:120 作者:柒染 欄目:云計算

今天就跟大家聊聊有關怎么進行Kubernetes靜態持久卷的探索學習,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1 名詞概念

Volume

Volume是Pod的掛載接口,生命周期同Pod,可以在Pod內的各個Container之間進行共享,主要用于存儲Pod生命周期內的臨時數據,當然,也可以掛在在Host主機或者其他后端存儲介質上實現永久存儲,根據選用的Volume Type可以實現不同的存儲需求,下邊是Volume支持的類型:

  • emptyDir

  • hostPath

  • gcePersistentDisk

  • awsElasticBlockStore

  • nfs

  • iscsi

  • flocker

  • glusterfs

  • rbd

  • cephfs

  • gitRepo

  • secret

  • persistentVolumeClaim

  • downwardAPI

  • azureFileVolume

  • azureDisk

  • vsphereVolume

  • Quobyte


此處不作一一介紹,可以參考文檔:Volume Docs。

PersistentVolume(PV)

假如有一個獨立的存儲后端,底層實現可以是NFS、GlusterFS、Cinder、HostPath等等,可以使用PV從中劃撥一部分資源用于kubernetes的存儲需求,其生命周期不依賴于Pod,是一個獨立存在的虛擬存儲空間,但是不能直接被Pod的Volume掛載,此時需要用到PVC。

PV支持的后端存儲插件:

  • GCEPersistentDisk

  • AWSElasticBlockStore

  • AzureFile

  • AzureDisk

  • FC (Fibre Channel)

  • NFS

  • iSCSI

  • RBD (Ceph Block Device)

  • CephFS

  • Cinder (OpenStack block storage)

  • Glusterfs

  • VsphereVolume

  • HostPath (single node testing only – local storage is not supported in any way and WILL NOT WORK in a multi-node cluster)


PersistentVolumeClaim(PVC)

Pod使用PV資源是通過PVC來實現的,PVC可以理解為資源使用請求,一個Pod需要先明確使用的資源大小、訪問方式,創建PVC申請提交到kubernetes中的PersistentVolume Controller,由其調度合適的PV來與PVC綁定,然后Pod中的Volume就可以通過PVC來使用PV的資源。

StorageClasse

用于定義動態PV資源調度,相比起靜態PV資源來說,動態PV不需要預先創建PV,而是通過PersistentVolume Controller動態調度,根據PVC的資源請求,尋找StorageClasse定義的符合要求的底層存儲來分配資源。

2 創建PersistentVolume

定義PersistentVolume,這里使用hostPath作為存儲底層。

kind: PersistentVolume
apiVersion: v1
metadata:
name: pv001
labels:
release: stable
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
hostPath:
path: /tmp/data


也可以使用NFS或者其他插件作為存儲底層,需要提前準備好NFS Server:

Yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv002
labels:
release: stable
spec:
capacity:
  storage: 5Gi
accessModes:
  - ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
  path: /tmp/data
  server: 172.17.0.2


capacity

用于定義PV的存儲容量,當前只支持定義大小,未來會實現其他能力如:IOPS、吞吐量。

accessModes

用于定義資源的訪問方式,受限于存儲底層的支持,訪問方式包括以下幾種:

  • ReadWriteOnce – 被單個節點mount為讀寫rw模式

  • ReadOnlyMany – 被多個節點mount為只讀ro模式

  • ReadWriteMany – 被多個節點mount為讀寫rw模式


下邊途中列舉了k8s支持的存儲插件的訪問方式:



persistentVolumeReclaimPolicy

用于定義資源的回收方式,也首先與存儲底層的支持,現有的回收策略:

  • Retain – 手動回收

  • Recycle – 刪除數據 (“rm -rf /thevolume/*”)

  • Delete – 通過存儲后端刪除卷,后端存儲例如AWS EBS, GCE PD或Cinder等。


目前只有NFS和HostPath支持Recycle策略,AWS EBS、GCE PD、Azure Disk、Cinder支持Delete策略。

注意:Recycle策略會通過運行一個busybox容器來執行數據刪除命令,默認定義的busybox鏡像是:  gcr.io/google_containers/busybox:latest,并且  imagePullPolicy: Always,如果需要調整配置,需要增加kube-controller-manager 啟動參數:  --pv-recycler-pod-template-filepath-hostpath=/etc/kubernetes/manifests/recycler.yml
Yaml
apiVersion: v1
kind: Pod
metadata:
name: pv-recycler-
namespace: default
spec:
restartPolicy: Never
volumes:
- name: vol
hostPath:
  path: [Path of Persistent Volume hosted]
containers:
- name: pv-recycler
image: "gcr.io/google_containers/busybox"
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "test -e /scrub && rm -rf /scrub/..?* /scrub/.[!.]* /scrub/*  && test -z \"$(ls -A /scrub)\" || exit 1"]
volumeMounts:
- name: vol
  mountPath: /scrub

3 創建PersistentVolumeClaim

定義PersistentVolumeClaim

Yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim-1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
  storage: 5Gi
selector:
matchLabels:
  release: stable


accessModes

與PersistentVolume的訪問方式一致,PersistentVolume Controller調度訪問方式一致PV資源與PVC綁定。

resources

用于定義申請使用的存儲資源大小,適用于kubernetes的resource模型,具體信息可以查看Resource Model docs。

selector

定義PVC申請過濾PV卷集,搭配label定義使用,同kubernetes中其他的selector概念一致,用法上稍有不同,增加了匹配選項:

  • matchLabels – 匹配標簽,卷標簽必須匹配某個值

  • matchExpressions – 匹配表達式,由鍵值對,操作符構成,操作符包括 In,NotIn,Exists,和 DoesNotExist。


此外還有volume.beta.kubernetes.io/storage-class定義,具有相同定義的PV和PVC才會綁定,具體用法可以查看PersistentVolume docs。

4 掛載Volume到Pod

PV和PVC創建并綁定之后,類似這樣:

Bash
NAME       CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM               REASON    AGE
pv/pv001   5Gi        RWO           Recycle         Bound     default/myclaim-1             11m

NAME            STATUS    VOLUME    CAPACITY   ACCESSMODES   AGE
pvc/myclaim-1   Bound     pv001     5Gi        RWO           3s



PersistentVolume有四種狀態:

  • Available – 可用狀態

  • Bound – 綁定到PVC

  • Released – PVC被刪掉,但是尚未回收

  • Failed – 自動回收失敗


掛載創建好的PVC:myclaim-1到Pod上:

Bash
kind: Pod
apiVersion: v1
metadata:
name: mypod
spec:
containers:
- name: myfrontend
  image: dockerfile/nginx
  volumeMounts:
  - mountPath: "/var/www/html"
    name: mypd
volumes:
- name: mypd
  persistentVolumeClaim:
    claimName: myclaim-1


掛載成功后,Pod所在的Host上會自動創建/tmp/data用于存儲數據,HostPath Volume便于測試調試,但是只適用于單節點環境,多節點環境中如果Pod漂移或者重建后不在原先節點,則無法訪問原來的數據。

看完上述內容,你們對怎么進行Kubernetes靜態持久卷的探索學習有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灌阳县| 鄄城县| 定南县| 革吉县| 银川市| 渑池县| 临桂县| 勃利县| 营山县| 宝清县| 张家界市| 乌鲁木齐市| 盘山县| 余庆县| 澳门| 常州市| 中牟县| 仙桃市| 栾川县| 焦作市| 涟源市| 错那县| 吴川市| 内黄县| 汪清县| 昌平区| 布尔津县| 福贡县| 博兴县| 宁化县| 孝义市| 绥德县| 兴安县| 海兴县| 东莞市| 桦南县| 吴川市| 寻甸| 卢湾区| 平乐县| 乐都县|