八历恐、持久卷使用

1、emptyDir

EmptyDir是最基礎(chǔ)的Volume類型榆浓,一個(gè)EmptyDir就是Host上的一個(gè)空目錄于未。
EmptyDir是在Pod被分配到Node時(shí)創(chuàng)建的,它的初始內(nèi)容為空陡鹃,并且無須指定宿主機(jī)上對(duì)應(yīng)的目錄文件烘浦,因?yàn)閗ubernetes會(huì)自動(dòng)分配一個(gè)目錄,當(dāng)Pod銷毀時(shí)萍鲸, EmptyDir中的數(shù)據(jù)也會(huì)被永久刪除闷叉。

apiVersion: v1
kind: Pod
metadata:
  name: pod-emptydir
  namespace: default
spec:
  containers:
  - name: web
    image: nginx:1.14
    volumeMounts:
    - name: web-volume
      mountPath: /usr/share/nginx/html
      readOnly: true
  - name: busybox
    image: busybox
    imagePullPolicy: IfNotPresent
    command:
    - "/bin/sh"
    args:
    - "-c"
    - "while true;do echo $(date) >> /data/index.html;sleep 1;done"
    volumeMounts:
    - name: web-volume
      mountPath: /data
  volumes:
  - name: web-volume
    emptyDir:
      medium: Memory
      sizeLimit: 10Mi

驗(yàn)證

[root@master volume]# kubectl get po pod-emptydir -o wide
NAME           READY   STATUS    RESTARTS   AGE   IP             NODE    NOMINATED NODE   READINESS GATES
pod-emptydir   2/2     Running   0          29s   10.244.1.132   node2   <none>           <none>
[root@master volume]# curl 10.244.1.132
Thu Dec 2 14:01:16 UTC 2021
Thu Dec 2 14:01:17 UTC 2021
Thu Dec 2 14:01:18 UTC 2021
......

2、hostPath

HostPath就是將Node主機(jī)中一個(gè)實(shí)際目錄掛在到Pod中脊阴,以供容器使用握侧,這樣的設(shè)計(jì)就可以保證Pod銷毀了,但是數(shù)據(jù)依據(jù)可以存在于Node主機(jī)上嘿期。

apiVersion: v1
kind: Pod
metadata:
  name: pod-hostpath
  namespace: default
spec:
  containers:
  - name: web
    image: nginx:1.14
    volumeMounts:
    - name: web-hostpath
      mountPath: /usr/share/nginx/html
      readOnly: true
  volumes:
  - name: web-hostpath
    hostPath:
      path: /data/web
      type: DirectoryOrCreate

驗(yàn)證

[root@master volume]# kubectl get po pod-hostpath -o wide
NAME           READY   STATUS    RESTARTS   AGE   IP             NODE    NOMINATED NODE   READINESS GATES
pod-hostpath   1/1     Running   0          58s   10.244.1.134   node2   <none>           <none>
[root@node2 ~]# echo myWeb_hostPath > /data/web/index.html
[root@master volume]# curl 10.244.1.134
myWeb_hostPath

關(guān)于type字段的說明:
DirectoryOrCreate 目錄存在就使用品擎,不存在就先創(chuàng)建后使用
Directory 目錄必須存在
FileOrCreate 文件存在就使用,不存在就先創(chuàng)建后使用
File 文件必須存在
Socket unix套接字必須存在
CharDevice 字符設(shè)備必須存在
BlockDevice 塊設(shè)備必須存在

3秽五、第三方存儲(chǔ)卷配置

emptyDir和hostPath的數(shù)據(jù)并不能真正意義上保存孽查,如果真正意義上保存還需要使用第三方存儲(chǔ)。k8s支持的第三方后端存儲(chǔ)有awsElasticBlockStore坦喘、azureDisk盲再、cephfs西设、glusterfs、cinder答朋、fc贷揽、iscsi、nfs梦碗、rbd禽绪、scaleIO等
具體支持的第三方設(shè)備及其配置參數(shù)可查看官方文檔https://kubernetes.io/docs/concepts/storage/volumes/

以nfs為例

[root@master volume]# vim /etc/exports
/data/volume1 192.168.1.0/24(rw,root_squash,sync)
kind: Pod
metadata:
  name: pod-nfs
  namespace: default
spec:
  containers:
  - name: web
    image: nginx:1.14
    volumeMounts:
    - name: web-nfs
      mountPath: /usr/share/nginx/html
      readOnly: true
  volumes:
  - name: web-nfs
    nfs:
      path: /data/volume1
      server: 192.168.1.51

驗(yàn)證

[root@master volume]# kubectl get po pod-nfs -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP             NODE    NOMINATED NODE   READINESS GATES
pod-nfs   1/1     Running   0          18s   10.244.2.124   node1   <none>           <none>
[root@master volume]# echo test-nfs-volume > /data/volume1/index.html
[root@master volume]# curl 10.244.2.124
test-nfs-volume

4、PV洪规,PVC

管理存儲(chǔ)是管理計(jì)算的一個(gè)明顯問題印屁。該P(yáng)ersistentVolume子系統(tǒng)為用戶和管理員提供了一個(gè)API,用于抽象如何根據(jù)消費(fèi)方式提供存儲(chǔ)的詳細(xì)信息斩例。為此雄人,我們引入了兩個(gè)新的API資源:PersistentVolume和PersistentVolumeClaim

PersistentVolume(PV)是集群中由管理員配置的一段網(wǎng)絡(luò)存儲(chǔ)。 它是集群中的資源念赶,就像節(jié)點(diǎn)是集群資源一樣础钠。 PV是容量插件,如Volumes叉谜,但其生命周期獨(dú)立于使用PV的任何單個(gè)pod旗吁。 此API對(duì)象捕獲存儲(chǔ)實(shí)現(xiàn)的詳細(xì)信息,包括NFS停局,iSCSI或特定于云提供程序的存儲(chǔ)系統(tǒng)很钓。

PersistentVolumeClaim(PVC)是由用戶進(jìn)行存儲(chǔ)的請(qǐng)求。 它類似于pod翻具。 Pod消耗節(jié)點(diǎn)資源履怯,PVC消耗PV資源。Pod可以請(qǐng)求特定級(jí)別的資源(CPU和內(nèi)存)裆泳。聲明可以請(qǐng)求特定的大小和訪問模式(例如,可以一次讀/寫或多次只讀)柠硕。

4.1PV創(chuàng)建

[root@master volume]# vim /etc/exports
/data/volume1 192.168.1.0/24(rw,root_squash,sync)
/data/volume2 192.168.1.0/24(rw,root_squash,sync)
/data/volume3 192.168.1.0/24(rw,root_squash,sync)

以nfs為例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-pv-volume1
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteOnce
  nfs:
    path: /data/volume1
    server: 192.168.1.51
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-pv-volume2
spec:
  accessModes:
  - ReadOnlyMany
  capacity:
    storage: 5Gi
  nfs:
    path: /data/volume2
    server: 192.168.1.51
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-pv-volume3
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 3Gi
  nfs:
    path: /data/volume3
    server: 192.168.1.51

驗(yàn)證

NAME              CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
test-pv-volume1   10Gi       RWO            Retain           Available                                   28s
test-pv-volume2   5Gi        ROX            Retain           Available                                   55s
test-pv-volume3   3Gi        RWX            Retain           Available                                   7s
  • 存儲(chǔ)類型
    底層實(shí)際存儲(chǔ)的類型工禾,kubernetes支持多種存儲(chǔ)類型,每種存儲(chǔ)類型的配置都有所差異
  • 存儲(chǔ)能力(capacity)
    用于存儲(chǔ)空間的設(shè)置
  • 訪問模式(accessModes)
    用于描述用戶應(yīng)用對(duì)存儲(chǔ)資源的訪問權(quán)限蝗柔,訪問權(quán)限包括下面幾種方式:
  • ReadWriteOnce(RWO):讀寫權(quán)限闻葵,但是只能被單個(gè)節(jié)點(diǎn)掛載
  • ReadOnlyMany(ROX): 只讀權(quán)限,可以被多個(gè)節(jié)點(diǎn)掛載
  • ReadWriteMany(RWX):讀寫權(quán)限癣丧,可以被多個(gè)節(jié)點(diǎn)掛載
    需要注意的是槽畔,底層不同的存儲(chǔ)類型可能支持的訪問模式不同
  • 回收策略(persistentVolumeReclaimPolicy)
    當(dāng)PV不再被使用了之后,對(duì)其的處理方式胁编。目前支持三種策略:
  • Retain (保留) 保留數(shù)據(jù)厢钧,需要管理員手工清理數(shù)據(jù)
  • Recycle(回收) 清除 PV 中的數(shù)據(jù)鳞尔,效果相當(dāng)于執(zhí)行 rm -rf /thevolume/*
  • Delete (刪除) 與 PV 相連的后端存儲(chǔ)完成 volume 的刪除操作,當(dāng)然這常見于云服務(wù)商的存儲(chǔ)服務(wù)
    需要注意的是早直,底層不同的存儲(chǔ)類型可能支持的回收策略不同
  • 存儲(chǔ)類別
    PV可以通過storageClassName參數(shù)指定一個(gè)存儲(chǔ)類別
  • 具有特定類別的PV只能與請(qǐng)求了該類別的PVC進(jìn)行綁定
  • 未設(shè)定類別的PV則只能與不請(qǐng)求任何類別的PVC進(jìn)行綁定
  • 狀態(tài)(status)
    一個(gè) PV 的生命周期中寥假,可能會(huì)處于4中不同的階段:
  • Available(可用): 表示可用狀態(tài),還未被任何 PVC 綁定
  • Bound(已綁定): 表示 PV 已經(jīng)被 PVC 綁定
  • Released(已釋放): 表示 PVC 被刪除霞扬,但是資源還未被集群重新聲明
  • Failed(失敻馊汀): 表示該 PV 的自動(dòng)回收失敗

4.2PVC創(chuàng)建

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test1-volume
  namespace: default
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 2Gi

驗(yàn)證

[root@master volume]# kubectl get pv
NAME              CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                  STORAGECLASS   REASON   AGE
test-pv-volume1   10Gi       RWO            Retain           Available                                                  14m
test-pv-volume2   5Gi        ROX            Retain           Available                                                  14m
test-pv-volume3   3Gi        RWX            Retain           Bound       default/test1-volume                           13m
[root@master volume]# kubectl get pvc
NAME           STATUS   VOLUME            CAPACITY   ACCESS MODES   STORAGECLASS   AGE
test1-volume   Bound    test-pv-volume3   3Gi        RWX                           23s

4.3pod使用

apiVersion: v1
kind: Pod
metadata:
  name: pod-pvc
  namespace: default
spec:
  containers:
  - name: web
    image: nginx:1.14
    volumeMounts:
    - name: test1-volume
      mountPath: /usr/share/nginx/html
  volumes:
  - name: test1-volume
    persistentVolumeClaim:
      claimName: test1-volume
      readOnly: false

驗(yàn)證

[root@master volume]# echo test1-pvc > /data/volume3/index.html 
[root@master volume]# kubectl get po pod-pvc -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP             NODE    NOMINATED NODE   READINESS GATES
pod-pvc   1/1     Running   0          94s   10.244.2.126   node1   <none>           <none>
[root@master volume]# curl 10.244.2.126
test1-pvc

5、configMap

ConfigMap是一種比較特殊的存儲(chǔ)卷喻圃,它的主要作用是用來存儲(chǔ)配置信息的萤彩。

[root@master volume]# kubectl create cm wordpress --from-literal=wordpress-db-host=wordpress-mysql 
configmap/wordpress created
[root@master volume]# kubectl get cm wordpress
NAME        DATA   AGE
wordpress   1      4m15s

6、secret

在kubernetes中斧拍,還存在一種和ConfigMap非常類似的對(duì)象雀扶,稱為Secret對(duì)象。它主要用于存儲(chǔ)敏感信息饮焦,例如密碼怕吴、秘鑰、證書等等县踢。

[root@master volume]# kubectl create secret generic wordpress --from-literal=wordpress-db-password=wordpresspwd --from-literal=mysql-root-password=wordpresspwd
[root@master volume]# kubectl get secret wordpress
NAME        TYPE     DATA   AGE
wordpress   Opaque   2      69s
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末转绷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子硼啤,更是在濱河造成了極大的恐慌议经,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谴返,死亡現(xiàn)場(chǎng)離奇詭異煞肾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嗓袱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門籍救,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人渠抹,你說我怎么就攤上這事蝙昙。” “怎么了梧却?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵奇颠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我放航,道長(zhǎng)烈拒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮荆几,結(jié)果婚禮上吓妆,老公的妹妹穿的比我還像新娘。我一直安慰自己伴郁,他們只是感情好耿战,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著焊傅,像睡著了一般剂陡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狐胎,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天鸭栖,我揣著相機(jī)與錄音,去河邊找鬼握巢。 笑死晕鹊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暴浦。 我是一名探鬼主播溅话,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼歌焦!你這毒婦竟也來了飞几?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤独撇,失蹤者是張志新(化名)和其女友劉穎屑墨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纷铣,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卵史,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搜立。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片以躯。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖啄踊,靈堂內(nèi)的尸體忽然破棺而出寸潦,到底是詐尸還是另有隱情,我是刑警寧澤社痛,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站命雀,受9級(jí)特大地震影響蒜哀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一撵儿、第九天 我趴在偏房一處隱蔽的房頂上張望乘客。 院中可真熱鬧,春花似錦淀歇、人聲如沸易核。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牡直。三九已至,卻和暖如春纳决,著一層夾襖步出監(jiān)牢的瞬間碰逸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工阔加, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饵史,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓胜榔,卻偏偏與公主長(zhǎng)得像胳喷,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夭织,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容