視頻來(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…

  1. 背景

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è)卷的掛載位置。

  1. 卷的類型

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