摘要:背景中有的概念,其中對(duì)它的管理有點(diǎn)松散。鏡像是文件系統(tǒng)層次的根,任何被掛載到鏡像中的特定目錄上。中的每個(gè)容器必須獨(dú)立指定每個(gè)的位置。當(dāng)一個(gè)由于某種原因從節(jié)點(diǎn)上移除,中的數(shù)據(jù)也會(huì)被永久刪除。
容器中的磁盤文件是易失的,這給運(yùn)行在容器中的大型應(yīng)用帶來(lái)了一些麻煩。首先,當(dāng)一個(gè)容器崩潰,kubelet會(huì)重啟它,但是之前存儲(chǔ)的文件會(huì)丟失 - 容器以一個(gè)初始的狀態(tài)重建。第二,當(dāng)在一個(gè)Pod中運(yùn)行多個(gè)container,這些container之間常常需要共享文件。Kubernetes的Volume抽象解決了這些問(wèn)題。
背景Docker中有Volumes的概念,其中對(duì)它的管理有點(diǎn)松散。在Docker中,一個(gè)volume就簡(jiǎn)單的是個(gè)磁盤或者其他容器中的目錄,它的生命周期是不被管理的,并且在最近的Docker版本中還只支持基于本地磁盤的volume。Docker最新版本已經(jīng)提供了volume驅(qū)動(dòng),但是它的功能目前還非常有限(例如,Docker 1.7中每個(gè)容器只允許有一個(gè)volume驅(qū)動(dòng),并且不能向volume傳參)。
Kubernetes的volume有一個(gè)顯式的生命周期 - 和持有它的Pod的生命周期相同。因此,一個(gè)volume比它所在Pod中的任何一個(gè)容器的生命周期都要長(zhǎng),并且容器重啟后數(shù)據(jù)仍在。當(dāng)然了,如果一個(gè)Pod不存在了,它的volume也就不存在了。更重要的是,Kubernetes支持不同類型的volume,并且一個(gè)Pod可以同時(shí)使用多個(gè)類型的volume。
一個(gè)volume只是一個(gè)目錄,可能其中有一些數(shù)據(jù),對(duì)于Pod中的容器是可訪問(wèn)的。這個(gè)目錄是哪兒來(lái)的,支撐它的介質(zhì),以及它的內(nèi)容物,都是由使用的特定volume類型決定的。
要使用一個(gè)volume,一個(gè)Pod指定提供給它的那些volume(.spec.volumes字段)以及掛載到容器的位置(.soec.containers.volumeMounts字段)。
容器中的一個(gè)進(jìn)程,它看待文件系統(tǒng)是由Docker鏡像以及一個(gè)或多個(gè)volume組成的。Docker鏡像是文件系統(tǒng)層次的根,任何volume被掛載到鏡像中的特定目錄上。volume不能掛載到其他volume或者有到其他volume的硬鏈接(hard links)。Pod中的每個(gè)容器必須獨(dú)立指定mount每個(gè)volume的位置。
Volume的類型Kubernetes支持多種volume類型:
awsElasticBlockStore
azureDisk
azureFile
cephfs
configMap
csi
downwardAPI
emptyDir
fc (fibre channel)
flocker
gcePersistentDisk
gitRepo (deprecated)
glusterfs
hostPath
iscsi
local
nfs
persistentVolumeClaim
projected
portworxVolume
quobyte
rbd
scaleIO
secret
storageos
vsphereVolume
awsElasticBlockStoreawsElasticBlockStore卷在Pod中掛載一個(gè)Amazon Web Services(AWS)EBS Volume。不同于emptyDir在Pod移除時(shí)做擦除,一個(gè)EBS卷的內(nèi)容一直保留,并且卷很少被卸載。這意味著一個(gè)EBS卷可以被預(yù)填充數(shù)據(jù),并且數(shù)據(jù)可以在Pod間進(jìn)行傳遞。
重要:在使用之前你必須使用aws ec2 create-volume或者AWS API創(chuàng)建一個(gè)EBS卷。
使用一個(gè)awsElasticBlockStore卷時(shí),有幾個(gè)限制:
Pod運(yùn)行的Node必須是一個(gè)AWS EC2實(shí)例
這些實(shí)例需要和EBS卷處于相同范圍(region)以及可用區(qū)域(availability-zone)
一個(gè)多帶帶的EC2實(shí)例只支持掛載一個(gè)EBS卷
創(chuàng)建一個(gè)EBS卷aws ec2 create-volume --availability-zone=eu-west-1a --size=10 --volume-type=gp2
要保證zone和k8s集群相同。(并需要檢查size以及EBS卷類型是否合理)
AWS EBS實(shí)例配置apiVersion: v1 kind: Pod metadata: name: test-ebs spec: containerss: - image: k8s.gcr.io/test-webserver name: test-container volumeMounts: - mountPath: /test-ebs name: test-volume volumes: - name: test-volume # This AWS EBS volume must already exist. awsElasticBlockStore: volumeID:azureDiskfsType: ext4
azureDisk用于將一個(gè)Microsoft Azure Data Disk掛載到一個(gè)Pod中。
更多細(xì)節(jié)敲這里。
emptyDir一個(gè)emptyDir卷在Pod分配給Node時(shí)首次創(chuàng)建,并且只要Pod在節(jié)點(diǎn)上運(yùn)行,它就一直存在。正如它的名字所說(shuō),它初始是空的。Pod中的容器可以在一個(gè)emptyDir卷中讀寫到相同文件,盡管這個(gè)卷可以掛載到不同容器的相同或不同的路徑。當(dāng)一個(gè)Pod由于某種原因從節(jié)點(diǎn)上移除,emptyDir中的數(shù)據(jù)也會(huì)被永久刪除。
注意:一個(gè)容器崩潰并不會(huì)從一個(gè)節(jié)點(diǎn)移除所在Pod,因此在容器崩潰的條件下,emptyDir卷中的數(shù)據(jù)是安全的。
emptyDir的應(yīng)用場(chǎng)景:
臨時(shí)的空間,例如用于一個(gè)基于磁盤的merge sort
用于從崩潰恢復(fù)的長(zhǎng)時(shí)計(jì)算
保存一個(gè)內(nèi)容管理容器獲取的數(shù)據(jù),這些數(shù)據(jù)用于一個(gè)webserver容器對(duì)外提供服務(wù)
默認(rèn)情況下,emptyDir卷可以基于節(jié)點(diǎn)上的任何介質(zhì)進(jìn)行存儲(chǔ) - 可能是磁盤或者SSD或者網(wǎng)絡(luò)存儲(chǔ),這取決于你的環(huán)境。你也可以設(shè)置emptyDir.medium字段為Memory,以告知Kubernetes為你掛載一個(gè)tmpfs(基于內(nèi)存的文件系統(tǒng))。不同于磁盤,tmpfs非???,并且tmpfs在節(jié)點(diǎn)重啟時(shí)會(huì)被擦除并且你寫入的數(shù)據(jù)量取決于你的容器內(nèi)存大小。
示例PodapiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumnMounts: - mountPath: /cache name: cache-volume volumes: - name: cache-volumne emptyDir: {}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/32711.html
摘要:標(biāo)識(shí)是與操作對(duì)象間的紐帶。集群為每個(gè)對(duì)象維護(hù)三類信息對(duì)象元數(shù)據(jù)期望狀態(tài)與實(shí)際狀態(tài)元數(shù)據(jù)指對(duì)象的基本信息,比如命名標(biāo)簽注釋等等,用于識(shí)別對(duì)象期望狀態(tài)一般由用戶配置來(lái)描述的實(shí)際狀態(tài)是由集群各個(gè)組件上報(bào)的集群實(shí)際的運(yùn)行情況。 綜述 學(xué)習(xí)Kubernetes時(shí),發(fā)現(xiàn)它的概念和術(shù)語(yǔ)還是比較多的,光靠啃官方文檔比較晦澀。所以邊學(xué)習(xí)邊整理,對(duì)主要的概念和術(shù)語(yǔ)做一下分類及簡(jiǎn)要說(shuō)明。感覺(jué)把重要概念都理解...
摘要:功能強(qiáng)大擴(kuò)展性高,在許多人看來(lái),它正在成為云計(jì)算的終極解決方案。我已經(jīng)多次給具有豐富存儲(chǔ)和云計(jì)算經(jīng)驗(yàn)的人解釋過(guò)這些問(wèn)題,他們幾乎都是抓耳撓腮,不明白這是怎么回事。和可能因?yàn)楹褪褂闷饋?lái)太麻煩了,在年月,隨著版本的發(fā)布,引入了動(dòng)態(tài)納管和的概念。 Kubernetes存儲(chǔ)全解!你知道PV和PVC的區(qū)別嗎?storage class和provisioner是什么關(guān)系?VolumeClaimTe...
摘要:這與不同,因?yàn)閷⒗^續(xù)存在于系統(tǒng)中,直到用戶刪除它。和持久卷聲明之間很容易弄混淆。該在直接和使用前必須已經(jīng)存在。這對(duì)于需要持久化儲(chǔ)存但只有本地卷可用的工作負(fù)載,這非常有用。此外,由于缺少,會(huì)失去使用自動(dòng)伸縮的能力。 showImg(https://segmentfault.com/img/remote/1460000017071596?w=1920&h=1080); 回 顧 在本系列...
摘要:基本架構(gòu)彩色版基本概念節(jié)點(diǎn)運(yùn)行著集群管理相關(guān)的一組進(jìn)程這些進(jìn)程實(shí)現(xiàn)了整個(gè)集群的資源管理調(diào)度彈性伸縮安全控制系統(tǒng)監(jiān)控糾錯(cuò)等管理功能。內(nèi)置了透明的負(fù)載均衡以及故障恢復(fù)的機(jī)制。標(biāo)簽解決與之間的關(guān)聯(lián)問(wèn)題。 基本架構(gòu) showImg(https://segmentfault.com/img/bVuv7w); 彩色版 showImg(https://segmentfault.com/img/bVu...
閱讀 2811·2021-11-22 14:44
閱讀 554·2021-11-22 12:00
閱讀 3692·2019-08-30 15:54
閱讀 1586·2019-08-29 17:15
閱讀 1907·2019-08-29 13:50
閱讀 1122·2019-08-29 13:17
閱讀 3523·2019-08-29 13:05
閱讀 1189·2019-08-29 11:31