摘要:本文主要介紹如何用掛載目錄。如何創(chuàng)建參照上目錄下的范例,我們可以創(chuàng)建一個掛載存儲的容器。到這里,就可以確定容器已經(jīng)正常啟動并掛載了一個的存儲塊。除非強制指定另塊被掛載后,寫入數(shù)據(jù)是可以很快同步的具體多久需要調(diào)查,而讀取數(shù)據(jù)只能在后同步。
本文主要介紹如何用kubernentes掛載rbd目錄。以及其中遇到的問題。有關(guān)ceph和rbd相關(guān)請自行百度。
如何創(chuàng)建參照github上kubernetes/examples/rbd/ 目錄下的范例,我們可以創(chuàng)建一個掛載rbd存儲的容器。前提是:
當(dāng)前網(wǎng)絡(luò)中有一個ceph服務(wù)器
slaver節(jié)點上要安裝ceph client。
從ceph服務(wù)器上獲取client,monitor等關(guān)鍵信息。
具體步驟如下:
參照github上的案例,先創(chuàng)建一個secret
secret中存儲的是ceph client與server之間通信需要的keyring。我們可以在ceph server 機器上的/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)建容器時,通過json文件我們可以很清楚的看到,我們引用了一個secret(secretRef)。直接執(zhí)行
kubectl create -f *.json
即可。
創(chuàng)建后我們通過kubectl get pods 就能看到容器是否創(chuàng)建,執(zhí)行kubectl exec -it {podname} /bin/bash 進入容器,可以找到相應(yīng)的掛在目錄。到這里,就可以確定容器已經(jīng)正常啟動并掛載了一個rbd的存儲塊。
讀寫問題我們注意到創(chuàng)建容器的json文件中指定了"readOnly" :false,這意味著我們在容器里面可以隨意的在掛載目錄中創(chuàng)建/刪除文件。
那么,多個節(jié)點,多個容器是否可以共享一個存儲呢?
假設(shè)第一步我們創(chuàng)建的容器ca是在節(jié)點a上運行的,并且k8s集群中只有三臺slaver:a,b,c。
我們再創(chuàng)建一個實例數(shù)為5的replication controller,他也會掛載這個rbd塊,并且也是讀寫模式,創(chuàng)建后執(zhí)行kubectl get pods 和 kubectl describe pod {podname},那么因為節(jié)點a上掛載了該rbd塊,k8s會youxian將新的rc中的容器逐一調(diào)度到其他機器上(b和c)。被調(diào)度到新機器上的容器,會在啟動過程中提示:
FailedSync Error syncing pod, skipping: rbd: image testdevice is locked by other nodes
意思是這個rbd塊已經(jīng)被別的節(jié)點鎖定了(就是說節(jié)點a已經(jīng)鎖定了該rbd塊,其他節(jié)點不能再掛載它)。而rc中剩余的pod,會直接無法調(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找不到‘還沒有分配這個rbd塊’的節(jié)點。
如果我們強制將該rc指定部署到之前的a節(jié)點上呢?通過"nodeName":{nodeIP}可以指定將rc中的pod優(yōu)先部署到指定的節(jié)點上,嘗試之后,發(fā)現(xiàn)容器可以正常運行。
結(jié)論1:rbd掛載以節(jié)點為粒度,如果某節(jié)點上的某容器以讀寫模式掛載了rbd塊,那么該rbd塊就會被該節(jié)點鎖定。
如果我們新建的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
我們可以看到只有兩個pod正常運行。我們用kubectl describe pod {podname}檢查這幾個pod,發(fā)現(xiàn)running狀態(tài)的兩個pod分別被調(diào)度到了b,c節(jié)點都處于NoDiskConflict狀態(tài)。
結(jié)論2:如果某節(jié)點上的某容器以讀寫模式掛載了rbd塊,那么其他節(jié)點依然可以對這個塊進行只讀模式的掛載。
結(jié)論3:k8s會對掛載rbd的pod進行唯一調(diào)度,就是說若某個節(jié)點掛載了rbd塊A1,k8s會將后續(xù)掛載A1的pod調(diào)度到別的節(jié)點部署。(除非強制指定)
另:ceph rbd塊被掛載后,寫入數(shù)據(jù)是可以很快同步的(具體多久需要調(diào)查),而讀取數(shù)據(jù)只能在map后同步。這就是說,如果同時又一個讀寫的容器a和一個只讀容器b在運行,在容器a中新寫入的數(shù)據(jù),只用把容器銷毀并重啟,才能同步并讀到新的數(shù)據(jù)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26571.html
摘要:邢舟開源與開放標準工程院軟件工程師背景回顧月日,中國社區(qū)全新改版線上課堂,邀請邢舟老師以直播的方式進行了一場以存儲概覽為題的線上講解,反響熱烈。為更好地為學(xué)員整合問答,中國社區(qū)特別整理了本期模塊,感謝邢舟老師百忙之中進行校對。 邢舟 /IBM 開源與開放標準工程院軟件工程師 背景回顧:8 月 2 日 20:00,K8sMeetup 中國社區(qū)全新改版線上課堂,邀請邢舟老師以直播的方式進行...
摘要:本文主要介紹如何用掛載目錄。如何創(chuàng)建參照上目錄下的范例,我們可以創(chuàng)建一個掛載存儲的容器。到這里,就可以確定容器已經(jīng)正常啟動并掛載了一個的存儲塊。除非強制指定另塊被掛載后,寫入數(shù)據(jù)是可以很快同步的具體多久需要調(diào)查,而讀取數(shù)據(jù)只能在后同步。 本文主要介紹如何用kubernentes掛載rbd目錄。以及其中遇到的問題。有關(guān)ceph和rbd相關(guān)請自行百度。 如何創(chuàng)建 參照github上kube...
摘要:距離上一次版本發(fā)布三個月之隔,是今年的第三個主要版本。證書輪換證書輪換功能現(xiàn)已進入狀態(tài)。這一功能可以在當(dāng)前證書到期時自動續(xù)訂密鑰和服務(wù)器的證書。更多包含許多修復(fù)和內(nèi)部組件的改進,此次的更新明顯側(cè)重于穩(wěn)定核心以及使現(xiàn)有的功能成熟。 Kubernetes1.12已于今日全新發(fā)布!Kubelet證書輪換、資源配額優(yōu)先級、掛載命名空間、對Azure的增強支持等10大亮點功能,本文為你一一解讀!...
摘要:功能強大擴展性高,在許多人看來,它正在成為云計算的終極解決方案。我已經(jīng)多次給具有豐富存儲和云計算經(jīng)驗的人解釋過這些問題,他們幾乎都是抓耳撓腮,不明白這是怎么回事。和可能因為和使用起來太麻煩了,在年月,隨著版本的發(fā)布,引入了動態(tài)納管和的概念。 Kubernetes存儲全解!你知道PV和PVC的區(qū)別嗎?storage class和provisioner是什么關(guān)系?VolumeClaimTe...
摘要:存儲方面,容器目前支持了兩種類型的存儲可以多點讀寫的網(wǎng)絡(luò)文件系統(tǒng)和僅單點讀寫的云硬盤。通過添加對協(xié)議的支持,輕量級虛擬機可以直接對接到服務(wù),從而實現(xiàn)了對高性能的型云硬盤掛載和使用。Cube誕生背景 隨著云原生技術(shù)的推廣及落地,容器技術(shù)在企業(yè)生產(chǎn)環(huán)境中的使用比重越來越大。Kubernetes作為容器編排的事實標準,在企業(yè)服務(wù)中被大量采用。UCloud容器團隊在2018年推出了Kubern...
閱讀 3295·2023-04-26 00:57
閱讀 609·2021-10-08 10:05
閱讀 1355·2021-09-08 09:36
閱讀 4173·2021-08-12 13:31
閱讀 2553·2019-08-30 15:55
閱讀 2244·2019-08-30 15:55
閱讀 1023·2019-08-30 15:55
閱讀 2693·2019-08-29 13:17