1. 程式人生 > >第九章 資料管理

第九章 資料管理

9.1 Volume

  Pod是短暫的,Pod在銷燬時,儲存在容器內部的檔案系統各種的資料會被清除。

  為了持久化儲存容器中的的資料,可以使用K8s Volume。

  9.1.1 emptyDir

  emptyDir: 最基礎的Volumne型別,是Host上的一個目錄。

  emptyDIr Volume: 對於容器來說是持久的,對於Pod不是。當Pod從節點刪除時,Volume的內容也會被刪除。但是如果只是容器被銷燬而Pod存在,則volume不受影響。也就是說:emptyDir Volume的生命週期與Pod一致。

  Pod中的所有容器都可以共享Volume,它們可以指定各自的mount路徑。

  如下Pod有兩個容器: producer 和 consumer,它們共享一個Volume. Producer 寫, consumer 讀。

apiVersion: v1
kind: Pod
metadata:
  name: producer-consumer
spec:
  containers:
  - image: busybox
    name: producer
    volumeMounts:                                    # 將shared-volume mount 到 producer_dir目錄
    - mountPath: /producer_dir
      name: shared
-volume args: # 將資料寫入到檔案hello中 - /bin/sh - -c - echo "hello world" > /producer_dir/hello ; sleep 30000 - image: busybox name: consumer volumeMounts: # 將shared-volume mount 到 /consumer_dir - mountPath: /consumer_dir name: shared
-volume args: - /bin/sh - -c - cat /consumer_dir/hello ; sleep 30000 # 通過cat從檔案hello讀資料 volumes: # 定義了一個emptyDir型別的Volume,名字是shared-volume. - name: shared-volume emptyDir: {}

 如下命令: consumer 容器成功的讀到了hello world.

[email protected]:~$ kubectl logs producer-consumer consumer      # 指定Pod 和 容器   
hello world

  emptyDir是host上建立的臨時目錄,其優點是能夠方便地為Pod中的容器提供共享儲存,不需要額外的配置。它不具備永續性,如果Pod沒有了,emptyDir也就沒有了。所以emptyDir的使用場景是: 適合Pod中的容器需要臨時共享儲存空間的場景。