概述
Volume是對各種存儲資源的抽象、虛擬化。為管理、控制、使用存儲資源提供統一接口。Openstack中的volume為虛擬機提供存儲,Docker中的volume為容器提供存儲。因為在kubernetes中可部署運行最小單位是pod ,所以kubernetes的volume為pod提供存儲。當然在部署pod時可以不為其提供volume,pod中的容器使用所在節點的硬盤,能同時讀寫數據的地方稱為可讀寫層。這種存儲是容器級的臨時存儲,不是pod級。其生命周期與容器相同,如果容器crash后被重啟,也就是舊容器被刪除而新容器啟動,則舊容器的可讀寫層與容器一起被刪除,其上數據丟失。同理如果pod在節點之間遷移調度,容器的可讀寫層并不會遷移調度。因此,kubernetes需要提供pod級volume,本文中的volume特指kubernetes。
Volume類型
Volume是抽象概念,有很多種具體實現,每種實現各具目的、特點、特性。差不多什么東西都可以當成volume,類型如下:
常見存儲類型說明及示例
cephfs
cephfs是一款優秀、流行的云環境存儲解決方案,原因是它開源、高可用、彈性伸縮,對操作系統、硬件無特殊要求,用戶很容易搭建,使用它的節點也無特別要求。它具備awsElasticBlockStore陳述之所有特點,并且單個voluem可以被多個節點同時使用。用戶首先搭建自己的cephfs環境,然后配置kubernetes集群與其對接,最后在pod中使用其提供的volume,詳細參考這里。
configMap
用戶首先創建configMap并創建數據保存其中,此時數據保存在kubernetes的etcd數據庫中,volume還不存在。當用戶在pod中引用創建的configMap時,系統首先在節點上創建volume并將數據保存其中,這個volume占用的是節占的存儲空間。此后就可以像使用普通volume一樣使用它。
configMap是kubernetes中的一種對象類型,核心本質是以volume的方式將單獨管理的配置信息傳遞給pod中的容器,并非用來存儲持久化數據。詳細參考這里。
downwardAPI
與configMap類似,以volume的方式向pod中的容器傳遞信息。configMap中的信息由用戶在創建對象時傳遞,而downwardAPI的信息就來自pod對象本身,downwardAPI不需要創建,它是pod Spec中的一個字段,內容指向pod對象本身的其它字段,如pod的metadata、image等信息。在創建pod時系統首先將指向的字段提取出來,然后創建volume并保存提取出來的字段并掛載,容器就可以讀取這些字段了。
downwardAPI的目的是為將pod本身的字段信息如label、annotation等傳遞給容器的一種手段。詳細參考這里。
emptyDir
在節點上運行pod實例時才會創建emptyDir volume。它首先是節點上的一個空目錄,pod中的任何容器都可以用volume的形式掛載使用它。如果容器因為某種原因被刪除并重新啟動,創建的emptyDir不會刪除也不會被清空。當pod實例離開節點調度到其它節點或因為縮容被刪除時,emptyDir被刪除,相當于pod還在但數據丟了。示例:
apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumeMounts: - mountPath: /cache name: cache-volume volumes: - name: cache-volume emptyDir: {}
本文名稱:kubernetes對象Volume用法詳解-創新互聯
文章位置:http://www.2m8n56k.cn/article18/dsihgp.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、品牌網站建設、手機網站建設、ChatGPT、網站營銷、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯