Google Code Prettify

2020年1月29日 星期三

K8s: volume (emptyDir)

Kubernetes 中的 volume 其實就是一個目錄,可以讓 container 間互相交換資料,或是永久保留資料。volume 提供了非常多種類型,這一篇整理的是最基礎的類型 emptyDir,這個類型的 volume 是建立在 pod 上面,建立時為空目錄,可用於儲存臨時的資料,下面會在一個 pod 上建立兩個 container 及一個 volume。
apiVersion: v1
kind: Pod
metadata:
  name: sharevol
spec:
  containers:
  - name: c1
    image: twleader/host:latest
    volumeMounts:
    - name: xchange
      mountPath: /tmp/logs
    ports:
    - containerPort: 9080
      protocol: TCP
  - name: c2
    image: centos:7
    command:
    - "bin/bash"
    - "-c"
    - "sleep 10000"
    volumeMounts:
    - name: xchange
      mountPath: /tmp/xchange
  volumes:
  - name: xchange
    emptyDir: {}
  1. 第 24~26 行,在 pod 上建立一個 volume 並命名為 xchange。
  2. 第 7~14 行,這是借用之前「部署 RESTful service 到 Kubernetes」已經建立好的一個 image twleader/host,建立一個命名為 c1 的 container。
  3. 第 9~11 行,將 volume xchange 掛載到 /tmp/logs 目錄。
  4. 第 15~23 行,建立命名為 c2 的 container,僅簡單的包含一個 centos。
  5. 第 21~23 行,將 volume xchange 掛載到 /tmp/xchange 目錄。
有了 yaml 就執行命令建立 pod 吧~
接著利用 exec 指令進入 container c1 於 volume 所在目錄建立一個檔案,如下:
再用 exec 指令進入 container c2,於 volume 所在目錄看看有沒有該檔案? 當然有!
同一個 pod 中不同的 container 透過這個方式就可以簡單的交換、共享資料了!

沒有留言:

張貼留言