視頻來(lái)源:bs《(2022版)最新、最全、最詳細(xì)的Kubernetes(K8s)教程,從K8s安裝到實(shí)戰(zhàn)一套搞定》
學(xué)習(xí)的同時(shí)整理老師的課程內(nèi)容和實(shí)驗(yàn)筆記,與大家分享,刪除侵權(quán),謝謝支持!
附上摘要貼紙: (版本2022)一套教程,使k8s安裝符合實(shí)際情況|摘要_COCOgsta博客-CSDN博客
容器的磁盤文件很短。如果容器崩潰,kubelet將重新啟動(dòng)容器,但原始文件將丟失,容器將以最干凈的狀態(tài)啟動(dòng)。
另外,當(dāng)一個(gè)Pod運(yùn)行多個(gè)Container時(shí),各個(gè)容器可能需要共享一些文件。Kubernetes Volume可以解決這兩個(gè)問(wèn)題。一些需要持久化數(shù)據(jù)的程序才會(huì)用到Volumes,或者一些需要共享數(shù)據(jù)的容器需要volumes。
Redis-Cluster:nodes.conf
日志收集的需求:需要在應(yīng)用程序的容器連加一個(gè)sidecar,這個(gè)容器是一個(gè)收集日志的容器,比如filebeat,它通過(guò)volumes共享應(yīng)用程序的日志文件目錄。
Volumes:官方文檔Kuberne…
- 背景
Docker也有卷的概念,但是在Docker中卷只是磁盤上火另一個(gè)Container中的目錄,其生命周期不受管理。雖然目前Docker已經(jīng)提供了卷驅(qū)動(dòng)程序,但是功能非常有限,例如從Dokcer 1.7版本開(kāi)始,每個(gè)Container只允許一個(gè)卷驅(qū)動(dòng)程序,并且無(wú)法將參數(shù)傳遞給卷。
另一方面,Kubernetes卷具有明確的生命周期,與使用它的Pod相同。因此,在Kubernetes中的卷可以比Pod中運(yùn)行的任何Container都長(zhǎng),并且可以在Container重啟或者銷毀之后保留數(shù)據(jù)。Kubernetes支持多種類型的卷,Pod可以同時(shí)使用任意數(shù)量的卷。
從本質(zhì)上講,卷只是一個(gè)目錄,可能包含一些數(shù)據(jù),Pod中的容器可以訪問(wèn)它。要使用卷Pod需要通過(guò).字段指定為Pod提供的卷,以及使用.字段指定卷掛載的目錄。從容器中的進(jìn)程可以看到由Docker鏡像和卷組成的文件系統(tǒng)視圖,卷無(wú)法掛載其他卷或具有到其他卷的硬鏈接,Pod中的每個(gè)Container必須獨(dú)立指定每個(gè)卷的掛載位置。
- 卷的類型
Kubernetes支持的卷的類型有很多,以下為常用的卷。
(1)awsElasticBlockStore(EBS)
awsElasticBlockStore卷掛載一個(gè)AWS EBS Volume到Pod中,與emptyDir卷不同的是,當(dāng)移除Pod時(shí)EBS卷的內(nèi)容不會(huì)被刪除,這意味著可以將數(shù)據(jù)預(yù)先放置在EBS卷中,并且可以在Pod之間切換該數(shù)據(jù)。
使用awsElasticBlockStore卷的限制:
- 運(yùn)行Pod的節(jié)點(diǎn)必須是AWS EC2實(shí)例。
- AWS EC2實(shí)例需要和EBS卷位于同一區(qū)域和可用區(qū)域。
- EBS僅支持掛載卷的單個(gè)EC2實(shí)例。
在將Pod與EBS卷一起使用之前,需要先創(chuàng)建EBS卷,確保該卷的區(qū)域與集群的區(qū)域匹配,并檢查size和EBS卷類型是否合理:
aws ec2 create-volume --availability-zone=eu-west-1a --size=10 --volume-type=gp2
復(fù)制代碼
emptyDir
和上述volume不同的是,如果刪除Pod,emptyDir卷中的數(shù)據(jù)也將被刪除,一般emptyDir卷用于Pod中的不同Container共享數(shù)據(jù)。它可以被掛載到相同或不同的路徑上。
默認(rèn)情況下,emptyDir卷支持節(jié)點(diǎn)上的任何介質(zhì),可能是SSD、磁盤或網(wǎng)絡(luò)存儲(chǔ),具體取決于自身的環(huán)境??梢詫m字段設(shè)置為Memory,讓Kubernetes使用tmpfs(內(nèi)存支持的文件系統(tǒng)),雖然tmpfs非常快,但是tmpfs在節(jié)點(diǎn)重啟時(shí),數(shù)據(jù)同樣會(huì)被清除,并且設(shè)置的大小會(huì)被計(jì)入到Container的內(nèi)存限制當(dāng)中。
使用emptyDir卷的示例,直接指定emptyDir為{}即可:
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: {}
復(fù)制代碼
hostPath
hostPath卷可將節(jié)點(diǎn)上的文件或目錄掛載到Pod上,用于Pod自定義日志輸出或訪問(wèn)Docker內(nèi)部的容器等。
使用hostPath卷的示例。將主機(jī)的/data目錄掛載到Pod的/test-pd目錄:
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
# this field is optional
type: Directory
復(fù)制代碼
hostPath卷常用的type(類型)如下:
- type為空字符串:默認(rèn)選項(xiàng),意味著掛載hostPath卷之前不會(huì)執(zhí)行任何檢查。
- DirectoryOrCreate:如果給定的path不存在任何東西,那么將根據(jù)需要?jiǎng)?chuàng)建一個(gè)權(quán)限為0755的空目錄,和Kubelet具有相同的組和權(quán)限。
- Directory:目錄必須存在于給定的路徑下。
- FileOrCreate:如果給定的路徑不存儲(chǔ)任何內(nèi)容,則會(huì)根據(jù)需要?jiǎng)?chuàng)建一個(gè)空文件,權(quán)限設(shè)置為0644,和Kubelet具有相同的組和所有權(quán)。
- File:文件,必須存在于給定路徑中。
- Socket:UNIX套接字,必須存在于給定路徑中。
- CharDevice:字符設(shè)備,必須存在于給定路徑中。
- BlockDevice:塊設(shè)備,必須存在于給定路徑中。
NFS
Exporter配置
/data/nfs/ 192.168.0.24(rw,sync,no_subtree_check,no_root_squash)
作者:熱愛(ài)編程的通信人
鏈接:
來(lái)源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
1.《筆記本win8系統(tǒng)怎么裝雙系統(tǒng)教程視頻?終于找到答案了(2022版)一套教程搞定k8s安裝到實(shí)戰(zhàn) | Volumes》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《筆記本win8系統(tǒng)怎么裝雙系統(tǒng)教程視頻?終于找到答案了(2022版)一套教程搞定k8s安裝到實(shí)戰(zhàn) | Volumes》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/gl/2995788.html