摘要:本文主要介紹如何用掛載目錄。如何創(chuàng)建參照上目錄下的范例,我們可以創(chuàng)建一個(gè)掛載存儲(chǔ)的容器。到這里,就可以確定容器已經(jīng)正常啟動(dòng)并掛載了一個(gè)的存儲(chǔ)塊。除非強(qiáng)制指定另塊被掛載后,寫入數(shù)據(jù)是可以很快同步的具體多久需要調(diào)查,而讀取數(shù)據(jù)只能在后同步。
本文主要介紹如何用kubernentes掛載rbd目錄。以及其中遇到的問(wèn)題。有關(guān)ceph和rbd相關(guān)請(qǐng)自行百度。
如何創(chuàng)建參照github上kubernetes/examples/rbd/ 目錄下的范例,我們可以創(chuàng)建一個(gè)掛載rbd存儲(chǔ)的容器。前提是:
當(dāng)前網(wǎng)絡(luò)中有一個(gè)ceph服務(wù)器
slaver節(jié)點(diǎn)上要安裝ceph client。
從ceph服務(wù)器上獲取client,monitor等關(guān)鍵信息。
具體步驟如下:
參照github上的案例,先創(chuàng)建一個(gè)secret
secret中存儲(chǔ)的是ceph client與server之間通信需要的keyring。我們可以在ceph server 機(jī)器上的/etc/ceph/目錄中找到許多keyring,這里選用 /etc/ceph/ceph.client.admin.keyring,其內(nèi)容一般是:
key: AQADW11WlqGlMBAAYnKIIExLAlde8rG1SGAYQQ==
復(fù)制并替換ceph-secret,yaml中的相應(yīng)字段(data字段下的‘key’)并保存。然后執(zhí)行
kubectl create -f ceph-secret.yaml
并檢查secret是否創(chuàng)建成功。
創(chuàng)建容器,掛載rbd volume
創(chuàng)建容器時(shí),通過(guò)json文件我們可以很清楚的看到,我們引用了一個(gè)secret(secretRef)。直接執(zhí)行
kubectl create -f *.json
即可。
創(chuàng)建后我們通過(guò)kubectl get pods 就能看到容器是否創(chuàng)建,執(zhí)行kubectl exec -it {podname} /bin/bash 進(jìn)入容器,可以找到相應(yīng)的掛在目錄。到這里,就可以確定容器已經(jīng)正常啟動(dòng)并掛載了一個(gè)rbd的存儲(chǔ)塊。
讀寫問(wèn)題我們注意到創(chuàng)建容器的json文件中指定了"readOnly" :false,這意味著我們?cè)谌萜骼锩婵梢噪S意的在掛載目錄中創(chuàng)建/刪除文件。
那么,多個(gè)節(jié)點(diǎn),多個(gè)容器是否可以共享一個(gè)存儲(chǔ)呢?
假設(shè)第一步我們創(chuàng)建的容器ca是在節(jié)點(diǎn)a上運(yùn)行的,并且k8s集群中只有三臺(tái)slaver:a,b,c。
我們?cè)賱?chuàng)建一個(gè)實(shí)例數(shù)為5的replication controller,他也會(huì)掛載這個(gè)rbd塊,并且也是讀寫模式,創(chuàng)建后執(zhí)行kubectl get pods 和 kubectl describe pod {podname},那么因?yàn)楣?jié)點(diǎn)a上掛載了該rbd塊,k8s會(huì)youxian將新的rc中的容器逐一調(diào)度到其他機(jī)器上(b和c)。被調(diào)度到新機(jī)器上的容器,會(huì)在啟動(dòng)過(guò)程中提示:
FailedSync Error syncing pod, skipping: rbd: image testdevice is locked by other nodes
意思是這個(gè)rbd塊已經(jīng)被別的節(jié)點(diǎn)鎖定了(就是說(shuō)節(jié)點(diǎn)a已經(jīng)鎖定了該rbd塊,其他節(jié)點(diǎn)不能再掛載它)。而rc中剩余的pod,會(huì)直接無(wú)法調(diào)度,并提示:
pod (rbdrc-cokvq) failed to fit in any node
fit failure on node (10.126.72.31): NoDiskConflict
fit failure on node (10.126.72.32): NoDiskConflict
fit failure on node (10.126.72.33): NoDiskConflict
意思是k8s找不到‘還沒(méi)有分配這個(gè)rbd塊’的節(jié)點(diǎn)。
如果我們強(qiáng)制將該rc指定部署到之前的a節(jié)點(diǎn)上呢?通過(guò)"nodeName":{nodeIP}可以指定將rc中的pod優(yōu)先部署到指定的節(jié)點(diǎn)上,嘗試之后,發(fā)現(xiàn)容器可以正常運(yùn)行。
結(jié)論1:rbd掛載以節(jié)點(diǎn)為粒度,如果某節(jié)點(diǎn)上的某容器以讀寫模式掛載了rbd塊,那么該rbd塊就會(huì)被該節(jié)點(diǎn)鎖定。
如果我們新建的rc不是可讀寫的,而是只讀的呢?
rbdrc-nu32o 1/1 Running 0 5m
rbdrc-olv14 0/1 Pending 0 5m
rbdrc-qyw2u 0/1 Pending 0 5m
rbdrc-rxmdr 1/1 Running 0 5m
rbdrc-snd3x 0/1 Pending 0 5m
我們可以看到只有兩個(gè)pod正常運(yùn)行。我們用kubectl describe pod {podname}檢查這幾個(gè)pod,發(fā)現(xiàn)running狀態(tài)的兩個(gè)pod分別被調(diào)度到了b,c節(jié)點(diǎn)都處于NoDiskConflict狀態(tài)。
結(jié)論2:如果某節(jié)點(diǎn)上的某容器以讀寫模式掛載了rbd塊,那么其他節(jié)點(diǎn)依然可以對(duì)這個(gè)塊進(jìn)行只讀模式的掛載。
結(jié)論3:k8s會(huì)對(duì)掛載rbd的pod進(jìn)行唯一調(diào)度,就是說(shuō)若某個(gè)節(jié)點(diǎn)掛載了rbd塊A1,k8s會(huì)將后續(xù)掛載A1的pod調(diào)度到別的節(jié)點(diǎn)部署。(除非強(qiáng)制指定)
另:ceph rbd塊被掛載后,寫入數(shù)據(jù)是可以很快同步的(具體多久需要調(diào)查),而讀取數(shù)據(jù)只能在map后同步。這就是說(shuō),如果同時(shí)又一個(gè)讀寫的容器a和一個(gè)只讀容器b在運(yùn)行,在容器a中新寫入的數(shù)據(jù),只用把容器銷毀并重啟,才能同步并讀到新的數(shù)據(jù)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/32461.html
摘要:邢舟開(kāi)源與開(kāi)放標(biāo)準(zhǔn)工程院軟件工程師背景回顧月日,中國(guó)社區(qū)全新改版線上課堂,邀請(qǐng)邢舟老師以直播的方式進(jìn)行了一場(chǎng)以存儲(chǔ)概覽為題的線上講解,反響熱烈。為更好地為學(xué)員整合問(wèn)答,中國(guó)社區(qū)特別整理了本期模塊,感謝邢舟老師百忙之中進(jìn)行校對(duì)。 邢舟 /IBM 開(kāi)源與開(kāi)放標(biāo)準(zhǔn)工程院軟件工程師 背景回顧:8 月 2 日 20:00,K8sMeetup 中國(guó)社區(qū)全新改版線上課堂,邀請(qǐng)邢舟老師以直播的方式進(jìn)行...
摘要:本文主要介紹如何用掛載目錄。如何創(chuàng)建參照上目錄下的范例,我們可以創(chuàng)建一個(gè)掛載存儲(chǔ)的容器。到這里,就可以確定容器已經(jīng)正常啟動(dòng)并掛載了一個(gè)的存儲(chǔ)塊。除非強(qiáng)制指定另塊被掛載后,寫入數(shù)據(jù)是可以很快同步的具體多久需要調(diào)查,而讀取數(shù)據(jù)只能在后同步。 本文主要介紹如何用kubernentes掛載rbd目錄。以及其中遇到的問(wèn)題。有關(guān)ceph和rbd相關(guān)請(qǐng)自行百度。 如何創(chuàng)建 參照github上kube...
摘要:距離上一次版本發(fā)布三個(gè)月之隔,是今年的第三個(gè)主要版本。證書(shū)輪換證書(shū)輪換功能現(xiàn)已進(jìn)入狀態(tài)。這一功能可以在當(dāng)前證書(shū)到期時(shí)自動(dòng)續(xù)訂密鑰和服務(wù)器的證書(shū)。更多包含許多修復(fù)和內(nèi)部組件的改進(jìn),此次的更新明顯側(cè)重于穩(wěn)定核心以及使現(xiàn)有的功能成熟。 Kubernetes1.12已于今日全新發(fā)布!Kubelet證書(shū)輪換、資源配額優(yōu)先級(jí)、掛載命名空間、對(duì)Azure的增強(qiáng)支持等10大亮點(diǎn)功能,本文為你一一解讀!...
摘要:功能強(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...
摘要:存儲(chǔ)方面,容器目前支持了兩種類型的存儲(chǔ)可以多點(diǎn)讀寫的網(wǎng)絡(luò)文件系統(tǒng)和僅單點(diǎn)讀寫的云硬盤。通過(guò)添加對(duì)協(xié)議的支持,輕量級(jí)虛擬機(jī)可以直接對(duì)接到服務(wù),從而實(shí)現(xiàn)了對(duì)高性能的型云硬盤掛載和使用。Cube誕生背景 隨著云原生技術(shù)的推廣及落地,容器技術(shù)在企業(yè)生產(chǎn)環(huán)境中的使用比重越來(lái)越大。Kubernetes作為容器編排的事實(shí)標(biāo)準(zhǔn),在企業(yè)服務(wù)中被大量采用。UCloud容器團(tuán)隊(duì)在2018年推出了Kubern...
閱讀 4044·2021-11-22 15:31
閱讀 2604·2021-11-18 13:20
閱讀 3187·2021-11-15 11:37
閱讀 7321·2021-09-22 15:59
閱讀 818·2021-09-13 10:27
閱讀 3843·2021-09-09 09:33
閱讀 1505·2019-08-30 15:53
閱讀 2632·2019-08-29 15:37