摘要:邢舟開源與開放標(biāo)準(zhǔn)工程院軟件工程師背景回顧月日,中國社區(qū)全新改版線上課堂,邀請邢舟老師以直播的方式進(jìn)行了一場以存儲(chǔ)概覽為題的線上講解,反響熱烈。為更好地為學(xué)員整合問答,中國社區(qū)特別整理了本期模塊,感謝邢舟老師百忙之中進(jìn)行校對。
邢舟 /IBM 開源與開放標(biāo)準(zhǔn)工程院軟件工程師
背景回顧:8 月 2 日 20:00,K8sMeetup 中國社區(qū)全新改版線上課堂,邀請邢舟老師以直播的方式進(jìn)行了一場以《Kubernetes 存儲(chǔ)概覽 & Volume Provisioner》為題的線上講解,反響熱烈。為更好地為學(xué)員整合問答,K8sMeetup 中國社區(qū)特別整理了本期 Q & A 模塊,感謝邢舟老師百忙之中進(jìn)行校對。
Kubernetes 存儲(chǔ)概覽Kubernetes 存儲(chǔ)的主要應(yīng)用場景
@青春$:本地掛載卷,比如一個(gè) node上啟動(dòng)倆個(gè) nginx 怎么做?
A:兩個(gè) nginx 實(shí)例么?如果是的話,貌似需要配置 scheduler 讓其分配到同一個(gè)節(jié)點(diǎn)上,比如設(shè)置 node affinity 等選項(xiàng)。
Kubernetes 存儲(chǔ)模塊
( ̄^ ̄)ゞ: 創(chuàng)建 pod 的 yaml 文件有沒有統(tǒng)一管理的工具?
A:如果您是指編輯 yaml 的話,目前我都是 vim 編輯的,其他同事有好的編輯工具歡迎共享出來。如果是指保存的話,可以在數(shù)據(jù)庫或者對象存儲(chǔ)里統(tǒng)一保管,Kubernetes 有一定的版本保存功能(如deployment 等的 rolling update),但完全的版本管理需要自己設(shè)置版本管理環(huán)境多帶帶保存。
華: 存儲(chǔ)容量的配額管理怎么做?
A:目前 Kubernetes 的配額管理統(tǒng)一通過 resourceQuota 對象完成,不過存儲(chǔ)容量的配額管理,尤其是本地存儲(chǔ)配額的管理,目前 Kubernetes 還未實(shí)現(xiàn)。
Sa.#:本地只能實(shí)現(xiàn)臨時(shí)存儲(chǔ)嗎?
A:不是的,在 Kubernetes 1.7 后出現(xiàn)了 LocalStorage 這種類型,可以作為 PV source 出現(xiàn),相關(guān)文檔在:
https://kubernetes.io/docs/co...
歡型悠悠too:
如何實(shí)現(xiàn)共享存儲(chǔ)?
如何實(shí)現(xiàn)共享存儲(chǔ),將一塊盤給多個(gè) pod 用?
A:只要后臺(tái)存儲(chǔ)支持掛載到多個(gè)節(jié)點(diǎn),那么在 pod spec 中引用相應(yīng)的存儲(chǔ)對象就可以實(shí)現(xiàn)將一個(gè)塊設(shè)備給多個(gè) pod 使用。
Leon Shi: 存儲(chǔ)是怎樣實(shí)現(xiàn)多租戶隔離?
A:這個(gè)問題社區(qū)現(xiàn)在正在討論,對 LocalStorage 可能有一些 proposal, 不過目前基本沒什么實(shí)現(xiàn),大家可以關(guān)注一下社區(qū)的進(jìn)展。
逗號(hào):pod scaling 的時(shí)候用的是同一個(gè) volume 嗎?
A:如果是遠(yuǎn)程網(wǎng)絡(luò) volume 支持 RWX 的,是可以使用同一個(gè) volume 的,如果是本地臨時(shí)存儲(chǔ)或者不支持多掛載的,是不支持的。
Michael: 我現(xiàn)在有個(gè)需求就是,同類型的共享一個(gè)目錄?這個(gè)有什么好的辦法嗎?
A:對映射目錄的問題,可以查看官方文檔,目前僅 project volume 類型支持一定程度的同一目錄映射,文檔:https://kubernetes.io/docs/co...
JackShan:
Kubernetes下面塊設(shè)備一般使用哪種?
保障 docker 的安全都有哪些措施?
A:Kubernetes 的塊設(shè)備是以插件形式提供的,目前已經(jīng)提供了幾十種主流存儲(chǔ)平臺(tái)的插件。Kubernetes 官方插件列表請參考我上周分享中的PPT,里面有一頁專門介紹。
想要看具體的信息,您也可以參考文檔:https://kubernetes.io/docs/co...
在 Docker 安全這邊主要是權(quán)限方面的管理,可以參考以下社區(qū) ticket:
https://github.com/kubernetes...
尼克: pod 的存儲(chǔ)會(huì)不會(huì)跟隨 pod 在 nodes 上的分布一樣分布到不同的 node?
A:是的,需要掛載到 pod 所在的節(jié)點(diǎn)(針對遠(yuǎn)程網(wǎng)絡(luò)存儲(chǔ),本地存儲(chǔ)無所謂)
Michael: 現(xiàn)在社區(qū)有什么好的辦法針對存儲(chǔ)這塊嗎?有什么比較成熟的?
A:您可以看一下社區(qū)的存儲(chǔ)插件列表,選擇一個(gè)存儲(chǔ)解決方案。但 Kubernetes 目前在存儲(chǔ)這一塊只實(shí)現(xiàn)了最基礎(chǔ)的功能。
馬詩潔:我們的 resize 的話,這個(gè)會(huì)影響到現(xiàn)有的邏輯卷不,是備份原有數(shù)據(jù)然后重新劃分內(nèi)存,然后數(shù)據(jù)恢復(fù)嗎?還是說直接添加內(nèi)存?
A:resize 問題請參考上面類似的問題,目前社區(qū)只有一個(gè) proposal 計(jì)劃支持增加磁盤尺寸的。目前選擇的做法是直接動(dòng)態(tài)擴(kuò)大原來快設(shè)備的存儲(chǔ),然后再改文件系統(tǒng)。
風(fēng)云:attach detach manager 和 volume manager 怎么一起工作,都會(huì)掛載 volume 嗎,還是有分工?講師好像說過有個(gè)參數(shù)可以去分工?
A:是的,但 volume manager 也可以做 attach/detach 的工作。通過 kubelet 的參數(shù) “--enable-controller-attach-detach=true” 區(qū)分。
H~Z~G:怎么改變 Kubernetes 默認(rèn)存儲(chǔ)路徑?
A:存儲(chǔ)路徑是在Container Spec中指定的,然后 Kubernetes 會(huì)通過Volume Manager和Volume Plugin實(shí)現(xiàn)attach和mount。
Yongkui:volume plugin 是各個(gè)廠商自己寫的?
A:官方提供了一組插件列表,請參見 PPT 中的總結(jié)。也可自己擴(kuò)展,主要通過兩個(gè)接口:
1.external-storage-provisioner(https://github.com/kubernetes...
2.FlexVolume(https://kubernetes.io/docs/co...
牛海朋: 應(yīng)用的配置文件是存在 volume 還是 configmap 合適,有啥不一樣嗎?
A:一般推薦是使用 configmap, secret 或者 downward API 來完成 app 配置,這個(gè)過程可以有 Kubernetes 將配置文件注入到 pod 的文件系統(tǒng)設(shè)置是環(huán)境變量里面。如果走 volume,應(yīng)該需要您將配置信息提前準(zhǔn)備好放在 PV 上。
阿星:
卷的生命周期里面有個(gè) using 狀態(tài),可以從 api 里面找到這個(gè)狀態(tài)嗎?我看到過 bound 的狀態(tài)。
社區(qū)會(huì)考慮記錄 PV 被那些 pod 使用嗎?從 pod 里可以看到使用了那些卷,不知道能不能從 PV 看到該 PV 被那些 pod 使用了?
A:我沒看到過 using 這個(gè)狀態(tài),PV 的狀態(tài)基本就是 pending, available, bound,released 以及failed。可以從 node 對象查看每個(gè) node 有哪些 volume attach,從 pod 對象可以查看到需要使用的 pv 信息,反向的應(yīng)該沒有(或者哪位同事熟悉這塊代碼可以指正一下,謝謝)
Kubernetes 存儲(chǔ)目前存在的一些問題
官官久久: Accessmodes 的 RWO RWX 模式和 pod 的調(diào)度有關(guān)嗎?
A:目前沒有,但如果要做 RWO 和 RWX 的檢查的話,需要從 scheduler 開始做。
keon: Accessmode 不是有單節(jié)點(diǎn)讀寫,多節(jié)點(diǎn)只讀,多節(jié)點(diǎn)讀寫嗎?
A:目前的 AccessMode 包括:ReadOnlyMany(ROX), ReadWriteMany(RWX)和RWO(ReadWriteOnly)。詳細(xì)的AccessMode 介紹,推薦您去參照鏈接中的文檔:https://kubernetes.io/docs/co...
阿星:AccessMode 是不是只用在 PV 和 PVC 的 bind 過程中,跟底層的存儲(chǔ)特性沒有關(guān)聯(lián)?
A:是的,目前 Kubernetes 沒有在實(shí)際 attach 和 mount 過程中執(zhí)行 AccessMode檢查。
Infei:
RC 的 PV 掛載如何實(shí)現(xiàn)數(shù)據(jù)的一致性?
pod 重新掛載 PV,是檢查 PV 的狀態(tài)嗎?pod 故障時(shí) PV 的狀態(tài)會(huì)改變嗎?
A:多 pod 之間的數(shù)據(jù)一致性主要通過同一磁盤掛載到多個(gè)不同 pod 以及依賴存儲(chǔ)平臺(tái)的解決方案實(shí)現(xiàn),目前這部分內(nèi)容實(shí)現(xiàn)的比較弱,但可以保證 pod 故障時(shí)數(shù)據(jù)不受影響,在 pod 重啟后,volume 會(huì)重新掛載到 pod。
K8s Volume Provisioner 部分代碼實(shí)現(xiàn)PV、PVC & StorageClass
H~Z~G:PV、PVC 是什么?
A:PV 和 PVC 是 Kubernetes 中的兩種資源,PV(Persistent Volume)代表一塊實(shí)際的后臺(tái)塊存儲(chǔ)設(shè)備;PVC(Persistent Volume Claim)代表的是 Pod 用戶對塊存儲(chǔ)的實(shí)際需求,PV 和 PVC 的綁定完成了實(shí)際塊存儲(chǔ)設(shè)備和存儲(chǔ)需求的綁定。
董明心: PV 和 PVC 一定是成對出現(xiàn)的么?
A:不一定,但綁定時(shí)是 1-1 綁定的。可以通過kubectl 命令多帶帶創(chuàng)建 PV 和 PVC。
小清、劉沖:PVC 和 PV 是一對一還是一對多?
A:PV 和 PVC 是一對一的關(guān)系,但是 PV 和 PVC 都可以通過 Kubectl create 來多帶帶創(chuàng)建,未綁定的 PV 和 PVC 一般處于 available 和 Pending 狀態(tài)。
lota: 先創(chuàng)建 PVC?
A:沒有順序要求,都可以通過 kubectl create 命令分別創(chuàng)建。
Chao: PVC 找 PV 是隨機(jī)找的,還是有相應(yīng)匹配規(guī)則?可以讓 PVC 綁定到指定 PV 嗎?
A:PVC 可以指定需要綁定的 volume, 通過在 PVC 的 Spec 里面定義實(shí)現(xiàn)。但是有一種情況是預(yù)定的 PV 可能會(huì)被其他 PVC 綁定。匹配規(guī)則主要是在 findBestMatch 方法中進(jìn)行的,主要依據(jù)是兩方面: AccessMode 和磁盤容量,并滿足最小匹配原則。
it2911: PVC 和 PV 的 resize 問題上,就 StroageClass 的擴(kuò)容請問是否目前也是無解?
A:對,這個(gè)問題目前確實(shí)無解。一般兩種方案,一種是創(chuàng)建大的 volume,然后 data migration, 另一種就是現(xiàn)在社區(qū)想采用的,直接 resize,然后更新 fs, 但第二種我覺得局限性有點(diǎn)大,很多插件都不支持。
阿仆來耶:為什么 PV 創(chuàng)建的 yaml 中需要指定 StroageClass?
A:我理解是 PVC 需要指定 StroageClass? PVC 并不一定需要指定 StroageClass。StroageClass 我的理解主要為了存儲(chǔ)的分類(如根據(jù) io 等指標(biāo))以及 dynamic provisioning。PVC 可以直接指定 PV 的名稱,也可以通過三種其他方式使用 StroageClass:
(1). 不指定,使用默認(rèn) StroageClass;
(2).指定空的 StroageClass, 讓 Kubernetes 自動(dòng)匹配合適的 PV;
(3).指定一個(gè) StroageClass, 使用 in-tree 或者 out-of-tree provisioner 創(chuàng)建塊設(shè)備。
?歐帝?:請問老師 readwriteonce 和 readwritemany 的區(qū)別是什么?什么場景能用many?
A:就是同一塊塊設(shè)備是否能夠同時(shí)掛載到多個(gè)節(jié)點(diǎn)上,主要是為了應(yīng)用程序之間共享數(shù)據(jù)或者協(xié)同編輯數(shù)據(jù)用的。
柯蓬:
請問 ReadWriteMany 什么場景下會(huì)用到?需要特定的 PV 來支持嗎?
有沒有可以推薦的分布式 volume?使用起來性能如何?
A:就是需要多個(gè) pod 同時(shí)讀寫一個(gè)磁盤的場合,一般用于應(yīng)用程序間的數(shù)據(jù)共享和協(xié)同操作。AccessMode 是需要后面存儲(chǔ)平臺(tái)支持的,即只有存儲(chǔ)平臺(tái)中的 volume 支持被掛載到多個(gè)節(jié)點(diǎn)時(shí)才支持,如 IBM SL Block, 目前就只能支持一個(gè)設(shè)備掛載到一個(gè)節(jié)點(diǎn)上。
Out of Tree Provisioner 的基本實(shí)現(xiàn)
張曉宇@serendipity: Cephfs 更改掛載方式 fuse 可以用 out of tree 方式嗎?
A:Cephfs 應(yīng)該有個(gè) out-of-tree provisioner, 鏈接在: https://github.com/kubernetes... 有用過的同事可以分享一下,謝謝。
其它Green: Kubernetes 與 Mesos 到底是不是一個(gè)最佳實(shí)踐呢?
A:目前 IBM 的實(shí)踐來看,Mesos on Kubernetes 或者 Kubernetes on mesos 都并不是好的選擇。 Kubernetes 社區(qū)也正在逐漸淡化兩者之間的集成關(guān)系,主要原因在于帶來的復(fù)雜性過高,用戶需要同時(shí)把握 Kubernetes、Mesos 以及兩者之間的集成關(guān)系,一旦出現(xiàn)問題,很難診斷和解決。
Zing:現(xiàn)在 Kubernetes 在生產(chǎn)環(huán)境的實(shí)踐情況怎么樣?
A:因?yàn)槲覜]有參與過 Kubernetes 的實(shí)際生產(chǎn)部署,所以目前不了解實(shí)際的生產(chǎn)實(shí)踐。但我可以邀請 IBM 或者其他有生產(chǎn)實(shí)踐的企業(yè)嘉賓給大家做實(shí)際部署的分享,在實(shí)際部署方面,相信 Kubernetes 的坑還是比較多的。如果大家感興趣,請把感興趣的話題發(fā)到群里以便我們安排下一步的課程。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/32583.html
摘要:現(xiàn)目前云服務(wù)在哪里現(xiàn)在的應(yīng)用程序水平云服務(wù),比如說的或者是谷歌的,會(huì)提供全面管理服務(wù)給工程師,在這里你可以在不需要努力維護(hù)的基礎(chǔ)上創(chuàng)建一個(gè)應(yīng)用程序。谷歌的非基礎(chǔ)設(shè)施服務(wù),比如他們的,可以被部署在任意公有云上,甚至可以通過部署到本地?cái)?shù)據(jù)中心。 重做云服務(wù) 在之前的博客中,我寫過開源軟件如何作為服務(wù)被交付,而不是從二進(jìn)制文件角度來看它們。這些開源服務(wù)交付一個(gè)免費(fèi)、開放、靈活的服務(wù),工程師用...
摘要:現(xiàn)目前云服務(wù)在哪里現(xiàn)在的應(yīng)用程序水平云服務(wù),比如說的或者是谷歌的,會(huì)提供全面管理服務(wù)給工程師,在這里你可以在不需要努力維護(hù)的基礎(chǔ)上創(chuàng)建一個(gè)應(yīng)用程序。谷歌的非基礎(chǔ)設(shè)施服務(wù),比如他們的,可以被部署在任意公有云上,甚至可以通過部署到本地?cái)?shù)據(jù)中心。 重做云服務(wù) 在之前的博客中,我寫過開源軟件如何作為服務(wù)被交付,而不是從二進(jìn)制文件角度來看它們。這些開源服務(wù)交付一個(gè)免費(fèi)、開放、靈活的服務(wù),工程師用...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報(bào)率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...
摘要:彼時(shí),從虛擬化管理到公有云,熱鬧異常。雖然年才明顯放棄公有云的全面競爭,但在年決定發(fā)起和開源項(xiàng)目是,不說明確,至少已經(jīng)隱隱覺得肯定搞不過亞馬遜了。年前賣的多火,被視為虛擬主機(jī)的升級版。當(dāng)然不是新堆棧,而是傳統(tǒng)堆棧。 還記得在十多年前,SaaS鼻祖SalesForce喊出的口號(hào)『No Software』嗎?SalesForce在這個(gè)口號(hào)聲中開創(chuàng)了SaaS行業(yè),并成為當(dāng)今市值460億美元的Saa...
閱讀 797·2021-09-06 15:02
閱讀 2438·2019-08-30 15:43
閱讀 2163·2019-08-30 11:26
閱讀 2371·2019-08-26 12:12
閱讀 3537·2019-08-23 18:24
閱讀 3253·2019-08-23 18:16
閱讀 694·2019-08-23 17:02
閱讀 2240·2019-08-23 15:34