Kubernetes容器技術(shù)項目教程課件:使用存儲卷_第1頁
Kubernetes容器技術(shù)項目教程課件:使用存儲卷_第2頁
Kubernetes容器技術(shù)項目教程課件:使用存儲卷_第3頁
Kubernetes容器技術(shù)項目教程課件:使用存儲卷_第4頁
Kubernetes容器技術(shù)項目教程課件:使用存儲卷_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

使用存儲卷目錄CONTENTS1使用基本存儲卷2使用PV和PVC3部署動態(tài)Web集群應(yīng)用任務(wù)1使用基本存儲卷6.1.1

存儲卷概述任務(wù)實(shí)施

存儲卷的作用

在k8s中,由于pod分布在各個不同的節(jié)點(diǎn)之上,在節(jié)點(diǎn)故障時,可能會導(dǎo)致數(shù)據(jù)的永久性丟失,同時不能實(shí)現(xiàn)不同節(jié)點(diǎn)之間持久性數(shù)據(jù)的共享,為此,k8s就引入了外部存儲卷的功能。

存儲卷的種類

在k8s中,存儲卷主要分為本地存儲卷EmptyDir、HostPath,實(shí)現(xiàn)鍵值對配置的ConfigMap和Secret存儲、本地的SAN存儲Iscsi,Fc等、NAS存儲nfs,cifs,http等、分布式存儲glusterfs,rbd,cephfs等、云存儲(EBS,AzureDisk)等。

在yaml目錄下,創(chuàng)建一個emptydir.yaml文件腳本定義了一個名稱為emptydir的Pod,包含兩個容器。使用volumes定義了存儲卷的名稱為html,存儲卷的類型為emptyDir:{}。

6.1.2使用EmptyDir與HostPath本地存儲卷emptyDir是在工作節(jié)點(diǎn)node上創(chuàng)建pod時被指定的,并且會一直存在在pod的生命周期當(dāng)中,kubernetes會在node上自動分配一個目錄,因此無需指定宿主機(jī)node上對應(yīng)的目錄文件。這個目錄的初始內(nèi)容為空,當(dāng)Pod從node上移除時,emptyDir中的數(shù)據(jù)會被永久刪除。在需要一個臨時存儲空間、做單節(jié)點(diǎn)的k8s環(huán)境功能測試等一些特殊場景下使用。

使用EmptyDir2.創(chuàng)建使用EmptyDir存儲卷3.驗(yàn)證配置1.EmptyDir存儲卷作用容器共享emptyDir目錄創(chuàng)建Pod運(yùn)行兩個容器,查看運(yùn)行的Pod和調(diào)度的節(jié)點(diǎn),發(fā)現(xiàn)Pod中的兩個容器調(diào)度到了node1節(jié)點(diǎn),查看nginx容器的內(nèi)容,說明兩個容器共享emptyDir存儲卷定義的目錄了。Pod重啟后數(shù)據(jù)消失首先刪除當(dāng)前運(yùn)行的Pod,然后重新創(chuàng)建Pod,查看Pod調(diào)度的信息,查看nginx容器首頁內(nèi)容,通過首頁顯示的時間發(fā)現(xiàn),之前的兩條時間記錄已經(jīng)不存在了,說明數(shù)據(jù)已經(jīng)丟失了。6.1.2使用EmptyDir與HostPath本地存儲卷

使用hostPath存儲卷,可以將Pod目錄或文件掛載到宿主機(jī)目錄或文件,優(yōu)點(diǎn)是在pod刪除時,宿主機(jī)上的數(shù)據(jù)存儲數(shù)據(jù)不會丟失,缺點(diǎn)是在k8s中,pod都是動態(tài)在各node節(jié)點(diǎn)上調(diào)度,當(dāng)一個pod在當(dāng)前node節(jié)點(diǎn)上啟動并通過hostPath存儲了文件到本地以后,下次調(diào)度到另一個節(jié)點(diǎn)上啟動時,就無法使用在之前節(jié)點(diǎn)上存儲的文件。使用HostPath存儲卷2.驗(yàn)證配置查看Pod調(diào)度信息檢查配置node1節(jié)點(diǎn)創(chuàng)建首頁文件刪除Pod重新啟動Pod結(jié)果如下:hello,hostPath通過結(jié)果,發(fā)現(xiàn)又顯示了之前的主頁內(nèi)容。這里需要注意的是因?yàn)镻od被調(diào)度到了node1節(jié)點(diǎn),所以內(nèi)容不變,如果Pod被調(diào)度到了其它節(jié)點(diǎn),內(nèi)容就不會存在了,因?yàn)榈谝淮螁覲od時hostPath將數(shù)據(jù)持久化到了node1的/html下。1.創(chuàng)建使用HostPath存儲卷(1)FileOrCreate宿主機(jī)上不存在掛載文件就創(chuàng)建(2)File必須存在文件在創(chuàng)建nginx容器時,使用volumeMounts定義了掛載的數(shù)據(jù)卷名稱為html,使用mountPath定義了容器掛載的目錄是網(wǎng)站主頁目錄。6.1.3使用NFS存儲卷

emptyDir存儲卷在重啟容器后數(shù)據(jù)會消失,hostPath存儲卷可以在每個節(jié)點(diǎn)上持久化數(shù)據(jù),但是當(dāng)Pod重啟后,調(diào)度到其它node節(jié)點(diǎn)時,數(shù)據(jù)也就找不到了,影響業(yè)務(wù)。這就需要使用一種能持久化數(shù)據(jù)并且和節(jié)點(diǎn)無關(guān)的數(shù)據(jù)卷,方式比較多,NFS共享存儲卷是一種常用的方式。1.安裝配置NFS服務(wù)(1)安裝NFS服務(wù)(2)配置NFS服務(wù)配置完成后,啟動NFS服務(wù)結(jié)果如下:Exportlistformaster:/web/24NFS存儲卷概述3.配置首頁文件2.創(chuàng)建Pod4.調(diào)度Pod到node2節(jié)點(diǎn)結(jié)果如下:hello,nfs說明nfs持久化了數(shù)據(jù),Pod無論調(diào)度到哪個節(jié)點(diǎn),都能通過NFS存儲卷讀取到nfs服務(wù)共享的數(shù)據(jù)。6.1.4使用ConfigMap與Secret存儲卷

許多應(yīng)用程序會從配置文件、命令行參數(shù)或環(huán)境變量中讀取配置信息。這些配置信息需要與docker鏡像解耦,否則修改一個配置就需要重新制作一次docker鏡像,ConfigMapAPI提供了向容器中注入配置信息的機(jī)制,可以用來保存單個屬性,也可以用來保存整個配置文件或者JSON二進(jìn)制大對象,使用時,用戶將數(shù)據(jù)直接存儲在ConfigMap對象當(dāng)中,然后Pod通過使用ConfigMap卷進(jìn)行引用,實(shí)現(xiàn)容器的配置文件集中定義和管理。1.使用kubectl命令創(chuàng)建ConfigMap2.使用yaml配置文件創(chuàng)建ConfigMap創(chuàng)建ConfigMap存儲卷6.1.4使用ConfigMap與Secret存儲卷1.通過環(huán)境變量的方式獲取ConfigMap的內(nèi)容2.通過Volume掛載的方式將ConfigMap的內(nèi)容掛載為容器內(nèi)部的文件或目錄1.1編寫通過環(huán)境變量引用configmap的Pod的腳本1.2創(chuàng)建Pod檢查結(jié)果2.1編寫Volume方式掛載的腳本2.2創(chuàng)建Pod檢查結(jié)果2.3修改configmap的值,查看掛載結(jié)果使用ConfigMap存儲卷6.1.4使用ConfigMap與Secret存儲卷

Secret用于存儲和管理一些敏感數(shù)據(jù),比如密碼,token,密鑰等敏感信息。它把Pod想要訪問的加密數(shù)據(jù)存放到Etcd中,用戶就可以通過在Pod的容器里掛載Volume的方式或者環(huán)境變量的方式訪問到這些Secret里保存的信息。Secret有三種類型:1.Opaquebase64編碼格式的Secret,用來存儲密碼、密鑰等;但數(shù)據(jù)也可以通過base64–decode解碼得到原始數(shù)據(jù),所有加密性很弱。2.ServiceAccount用來訪問KubernetesAPI,由Kubernetes自動創(chuàng)建,并且會自動掛載到Pod的/run/secrets/kubernetes.io/serviceaccount目錄中。ServiceAccount對象的作用,就是Kubernetes系統(tǒng)內(nèi)置的一種“服務(wù)賬戶”,它是Kubernetes進(jìn)行權(quán)限分配的對象。比如,ServiceAccountA,可以只被允許對KubernetesAPI進(jìn)行GET操作,而ServiceAccountB,則可以有KubernetesAPI的所有操作權(quán)限。3.kubernetes.io/dockerconfigjson用來存儲私有dockerregistry的認(rèn)證信息創(chuàng)建Secret存儲卷使用Secret存儲卷使用環(huán)境變量方式使用Secret1.1編寫使用環(huán)境變量的控制器腳本可以將名稱為testsecret的存儲資源導(dǎo)入到Pod容器的環(huán)境變量中,首先在yaml下,創(chuàng)建文件env_secret.yaml的文件,在文件中輸入編碼1.2檢查結(jié)果首先使用yaml文件創(chuàng)建Pod,然后檢查Pod調(diào)度信息;

通過命令進(jìn)入到其中一個Pod容器中;

查看環(huán)境變量;

在環(huán)境變量結(jié)果中,發(fā)現(xiàn)已經(jīng)存在key為MYSQL_USER、MYSQL_PASSWORD,值為admin和123456的環(huán)境變量了,在程序中,就可以使用這個環(huán)境變量作相關(guān)配置,修改時,只需要改變Secret存儲資源就可以了。使用Volume掛載方式使用Secret2.1編寫使用Volume掛載方式的Pod腳本可以將名稱為testsecret的存儲資源導(dǎo)入到Pod容器的目錄中,首先在yaml下,創(chuàng)建文件volume_secret.yaml的文件,在文件中輸入編碼2.2檢查volume配置結(jié)果創(chuàng)建Pod后,查看Pod調(diào)度信息

進(jìn)入Pod容器,進(jìn)入掛載目錄,查看目錄下資源,查看username的內(nèi)容,查看password的內(nèi)容;發(fā)現(xiàn)兩個文件的名稱是secret的key,值是key的value值,這樣,就可以通過更新testsecret來動態(tài)更新容器中的配置文件內(nèi)容了。任務(wù)2使用PV和PVC6.2.1PV和PVC概述pv的作用PV的全稱是PersistentVolume(持久化卷),是對底層的共享存儲的一種抽象,PV由管理員進(jìn)行創(chuàng)建和配置,它屏蔽掉Ceph、GlusterFS、NFS等底層共享存儲技術(shù)實(shí)現(xiàn)方式,在定義存儲資源后提供給上層的PVC使用。pvc的作用PVC的全稱是PersistentVolumeClaim(持久化卷聲明),PVC是用戶存儲的一種聲明,PVC和Pod比較類似,Pod消耗的是節(jié)點(diǎn),PVC消耗的是PV資源,Pod可以請求CPU和內(nèi)存,而PVC可以請求特定的存儲空間和訪問模式。對于真正使用存儲的用戶不需要關(guān)心底層的存儲實(shí)現(xiàn)細(xì)節(jié),只需要直接使用PVC即可,Pod、PVC、PV、后端存儲的關(guān)系如圖6-10所示。圖6-10Pod、Pvc、pv、存儲的關(guān)系6.2.2創(chuàng)建PV1.安裝NFS服務(wù)在master、node1、node2節(jié)點(diǎn),使用yum工具安裝NFS服務(wù)如下:[root@masteryaml]#yuminstallnfs-utils-y2.配置NFS服務(wù)在/目錄下創(chuàng)建web目錄,命令如下

[root@masteryaml]#mkdir/data

配置/etc/exports文件,輸入以下內(nèi)容

/data/24(rw,no_root_squash)

配置完成后,啟動NFS服務(wù)

[root@masteryaml]#systemctlstartnfs

查看NFS服務(wù)信息,命令如下:

[root@masteryaml]#showmount-e

結(jié)果如下:

Exportlistformaster:

/data/24配置NFS存儲

2.AccessModes(訪問模式)

4.狀態(tài)

2.查看pv狀態(tài)pv的主要概念1.Capacity(存儲能力)

3.persistentVolumeReclaimPolicy(回收策略)創(chuàng)建PV1.編寫Yaml腳本6.2.2創(chuàng)建PV編寫創(chuàng)建pv的yaml文件6.2.3創(chuàng)建PVC,6.2.4調(diào)用PVC編寫創(chuàng)建PVC的腳本腳本創(chuàng)建了名稱為pvc1的pvc,訪問模式是ReadWriteOnce,要求的資源大小是2G。6.2.3.2檢查創(chuàng)建結(jié)果使用yaml腳本創(chuàng)建pvc,從結(jié)果中發(fā)現(xiàn),按照yaml腳本定義,名稱為pvc1的pvc已經(jīng)創(chuàng)建成功了,STATUS狀態(tài)為Bound綁定狀態(tài),說明它已經(jīng)成功的和某個pv進(jìn)行綁定,申請存儲資源了編寫使用pvc的Pod腳本在yaml目錄下創(chuàng)建文件pvc-pod.yaml腳本創(chuàng)建了一個Pod,使用pvc1申請存儲資源,在掛載目錄時,使用subPath在實(shí)際掛載目錄下再創(chuàng)建一個目錄,目的是當(dāng)有其它Pod再使用此存儲資源時,將持久化的目錄區(qū)別開來。6.2.4.2檢查結(jié)果檢查Pod運(yùn)行狀態(tài)使用yaml腳本創(chuàng)建pod后,查看Pod運(yùn)行狀態(tài)結(jié)果發(fā)現(xiàn)該P(yáng)od已經(jīng)調(diào)度到了node2節(jié)點(diǎn)。6.2.4.2檢查結(jié)果配置NFS共享目錄查看NFS在master節(jié)點(diǎn)的/data目錄發(fā)現(xiàn)在/data共享目錄下已經(jīng)創(chuàng)建一個子目錄nginx1,說明在創(chuàng)建Pod時,使用的subPath:nginx1已經(jīng)發(fā)揮了作用在nginx1目錄下創(chuàng)建一個文件,輸入web1結(jié)果說明/data/nginx1目錄已經(jīng)是運(yùn)行Pod容器的持久化目錄了。任務(wù)3部署動態(tài)Web集群應(yīng)用6.3.1理解Web集群架構(gòu)集群通過部署Pod服務(wù)來部署多個Web容器,這些Web容器要共享網(wǎng)絡(luò)上共同的Web程序,因?yàn)檫@樣才能保證所有Web容器中的數(shù)據(jù)都是一致的,同時,數(shù)據(jù)庫容器的數(shù)據(jù)需要持久化到NFS中,這樣數(shù)據(jù)庫容器出現(xiàn)問題數(shù)據(jù)也不會丟失。6.3.2部署NFS服務(wù)01020304首先在Master節(jié)點(diǎn)安裝NFS服務(wù)[root@master~]#yuminstallnfs-utils-y

已安裝:

nfs-utils.x86_641:1.3.0-0.68.el7

在安裝結(jié)束后,就會顯示如下內(nèi)容,說明安裝成功了安裝NFS首先在Master節(jié)點(diǎn)安裝NFS服務(wù)[root@master~]#yuminstallnfs-utils-y

已安裝:

nfs-utils.x86_641:1.3.0-0.68.el7

在安裝結(jié)束后,就會顯示如下內(nèi)容,說明安裝成功了配置NFS

1.創(chuàng)建共享目錄[root@master~]#vi/etc/exports打開/etc/exports后,輸入

/web/dami/24(rw,no_root_squash)

/mysql/24(rw,no_root_squash)

把兩個共享目錄配置給/24網(wǎng)絡(luò)上的主機(jī),設(shè)置讀寫和Root用戶訪問權(quán)限。

配置完成后,啟動NFS服務(wù)。

然后使用showmount-e0查看NFS的共享目錄

2.修改/etc/exports配置文件在/web目錄下上傳一個內(nèi)容管理系統(tǒng)dami源程序。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論