K8S Volumes 使用場景

Volumes

容器中的文件在磁盤上是臨時存放的,這給容器中運行的特殊應用程序帶來一些問題。 首先,當容器崩潰時,kubelet 將重新啓動容器,容器中的文件將會丟失——因爲容器會以乾淨的狀態重建。 其次,當在一個 Pod 中同時運行多個容器時,常常需要在這些容器之間共享文件。 Kubernetes 抽象出 Volume 對象來解決這兩個問題。

參考官方

常用卷及使用場景

configmap

configMap 資源提供了向 Pod 注入配置數據的方法。 ConfigMap 對象中存儲的數據可以被 configMap 類型的卷引用,然後被應用到 Pod 中運行的容器化應用。

emptyDir

當 Pod 指定到某個節點上時,首先創建的是一個 emptyDir 卷,並且只要 Pod 在該節點上運行,卷就一直存在。 就像它的名稱表示的那樣,卷最初是空的。 儘管 Pod 中的容器掛載 emptyDir 卷的路徑可能相同也可能不同,但是這些容器都可以讀寫 emptyDir 卷中相同的文件。 當 Pod 因爲某些原因被從節點上刪除時,emptyDir 卷中的數據也會永久刪除。

容器崩潰並不會導致 Pod 被從節點上移除,因此容器崩潰時 emptyDir 卷中的數據是安全的。

emptyDir 的一些用途:

  • 緩存空間,例如基於磁盤的歸併排序。
  • 爲耗時較長的計算任務提供檢查點,以便任務能方便地從崩潰前狀態恢復執行。
  • 在 Web 服務器容器服務數據時,保存內容管理器容器獲取的文件

默認情況下, emptyDir 卷存儲在支持該節點所使用的介質上;這裏的介質可以是磁盤或 SSD 或網絡存儲,這取決於您的環境。 但是,您可以將 emptyDir.medium 字段設置爲 "Memory",以告訴 Kubernetes 爲您安裝 tmpfs(基於 RAM 的文件系統)。 雖然 tmpfs 速度非常快,但是要注意它與磁盤不同。 tmpfs 在節點重啓時會被清除,並且您所寫入的所有文件都會計入容器的內存消耗,受容器內存限制約束

常做臨時存儲

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

hostPath

卷能將主機節點文件系統上的文件或目錄掛載到您的 Pod 中。 雖然這不是大多數 Pod 需要的,但是它爲一些應用程序提供了強大的逃生艙。

hostPath 的一些用法有:

  • 運行一個需要訪問 Docker 引擎內部機制的容器;請使用 hostPath 掛載 /var/lib/docker 路徑。
  • 在容器中運行 cAdvisor 時,以 hostPath 方式掛載 /sys。
  • 允許 Pod 指定給定的 hostPath 在運行 Pod 之前是否應該存在,是否應該創建以及應該以什麼方式存在。

除了必需的 path 屬性之外,用戶可以選擇性地爲 hostPath 卷指定 type。

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      # directory location on host
      path: /data
      # this field is optional
      type: Directory
  • 場景一:某個job服務需要每天ftp拉取第三方日誌,進行讀取解析

ftp shell程序設置在特定node,拉取日誌於node目錄假設爲/opt/case,指定pod部署在這一node(通過。。。),指定hostPath爲日誌路徑掛載到容器目錄中(注意是掛載),程序讀取目錄日誌解析。

  • 場景二:job服務執行會記錄日誌

指定特定node,hostPath指定node目錄,volume掛載pod容器,程序執行,記錄到node上,及時pod銷燬,也不會擔心丟失,方便排查問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章