日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据管理 - 每天5分钟玩转 Docker 容器技术(147)

發布時間:2023/12/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据管理 - 每天5分钟玩转 Docker 容器技术(147) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章將討論 Kubernetes 如何管理存儲資源。

首先我們會學習 Volume,以及 Kubernetes 如何通過 Volume 為集群中的容器提供存儲;然后我們會實踐幾種常用的 Volume 類型并理解它們各自的應用場景;最后,我們會討論 Kubernetes 如何通過 Persistent Volume 和 Persistent Volume Claim 分離集群管理員與集群用戶的職責,并實踐 Volume 的靜態供給和動態供給。

Volume

本節我們討論 Kubernetes 的存儲模型 Volume,學習如何將各種持久化存儲映射到容器。

我們經常會說:容器和 Pod 是短暫的。
其含義是它們的生命周期可能很短,會被頻繁地銷毀和創建。容器銷毀時,保存在容器內部文件系統中的數據都會被清除。

為了持久化保存容器的數據,可以使用 Kubernetes Volume。

Volume 的生命周期獨立于容器,Pod 中的容器可能被銷毀和重建,但 Volume 會被保留。

本質上,Kubernetes Volume 是一個目錄,這一點與 Docker Volume 類似。當 Volume 被 mount 到 Pod,Pod 中的所有容器都可以訪問這個 Volume。Kubernetes Volume 也支持多種 backend 類型,包括 emptyDir、hostPath、GCE Persistent Disk、AWS Elastic Block Store、NFS、Ceph 等,完整列表可參考?https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes

Volume 提供了對各種 backend 的抽象,容器在使用 Volume 讀寫數據的時候不需要關心數據到底是存放在本地節點的文件系統中呢還是云硬盤上。對它來說,所有類型的 Volume 都只是一個目錄。

我們將從最簡單的 emptyDir 開始學習 Kubernetes Volume。

emptyDir

emptyDir 是最基礎的 Volume 類型。正如其名字所示,一個 emptyDir Volume 是 Host 上的一個空目錄。

emptyDir Volume 對于容器來說是持久的,對于 Pod 則不是。當 Pod 從節點刪除時,Volume 的內容也會被刪除。但如果只是容器被銷毀而 Pod 還在,則 Volume 不受影響。

也就是說:emptyDir Volume 的生命周期與 Pod 一致。

Pod 中的所有容器都可以共享 Volume,它們可以指定各自的 mount 路徑。下面通過例子來實踐 emptyDir,配置文件如下:

這里我們模擬了一個 producer-consumer 場景。Pod 有兩個容器?producer和?consumer,它們共享一個 Volume。producer?負責往 Volume 中寫數據,consumer?則是從 Volume 讀取數據。

① 文件最底部?volumes?定義了一個?emptyDir?類型的 Volume?shared-volume。

②?producer?容器將?shared-volume?mount 到?/producer_dir?目錄。

③?producer?通過?echo?將數據寫到文件?hello?里。

④?consumer?容器將?shared-volume?mount 到?/consumer_dir?目錄。

⑤?consumer?通過?cat?從文件?hello?讀數據。

執行如下命令創建 Pod:

kubectl logs?顯示容器?consumer?成功讀到了?producer?寫入的數據,驗證了兩個容器共享 emptyDir Volume。

因為 emptyDir 是 Docker Host 文件系統里的目錄,其效果相當于執行了?docker run -v /producer_dir?和?docker run -v /consumer_dir。通過?docker inspect?查看容器的詳細配置信息,我們發現兩個容器都 mount 了同一個目錄:

這里?/var/lib/kubelet/pods/3e6100eb-a97a-11e7-8f72-0800274451ad/volumes/kubernetes.io~empty-dir/shared-volume?就是 emptyDir 在 Host 上的真正路徑。

emptyDir 是 Host 上創建的臨時目錄,其優點是能夠方便地為 Pod 中的容器提供共享存儲,不需要額外的配置。但它不具備持久性,如果 Pod 不存在了,emptyDir 也就沒有了。根據這個特性,emptyDir 特別適合 Pod 中的容器需要臨時共享存儲空間的場景,比如前面的生產者消費者用例。

下一節我們學習 hostPath Volume。

書籍:

1.《每天5分鐘玩轉Kubernetes》
https://item.jd.com/26225745440.html

2.《每天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html

3.《每天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html

總結

以上是生活随笔為你收集整理的数据管理 - 每天5分钟玩转 Docker 容器技术(147)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。