iT邦幫忙

2024 iThome 鐵人賽

DAY 12
1

昨天有提到持久化儲存 GitLab 資料的方法是將資料存在 PVC 中,這樣服務被刪除時,如果 PVC 還存在,資料就依然可以保存下來。

但,如果是整座 Cluster 連 PVC 和 PV 在內都一起被刪除呢?這樣理論上資料就不會存在了。
那我們要如何將資料保存下來呢?

保存資料

在 Cluster 被刪除後,還想存取資料,那資料可能會是存在於:

  1. 外部儲存資源,如 S3 等。

  2. 由 Cluster 外部儲存資源提供 CSI 來建立的 PVC,像是各大公有雲的儲存服務等。

  3. HostPath,Kubernetes 被刪除後,資料依然會保存在 Nodes 上。

而 1、2 基本上都是要額外付費的(雖然可能有免費額度就是了 XD),今天要來討論的是 3。

共享資料夾

一般來說,如果 HostPath 不是由 NFS 所掛載的位置,通常各個 Nodes 都無法直接共享彼此的資料。
但今天我們的 Nodes 是由 Containers 所建立,這就是不同情況了,我們只要讓各個 Containers 掛載相同位置的 Volumes,是否就是一個天生的共享資料夾呢?接下來我們來實驗看看。

實驗

刪除原有 Kubernetes Cluster。

kind delete cluster -n local-dev

建立共享資料夾。

mkdir $HOME/kind

修改 kind-config.yaml。

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
    extraPortMappings:
      # containerPort below must match the values file:
      #   nginx-ingress.controller.service.nodePorts.https
      # Change hostPort if port 443 is already in use.
      - containerPort: 32443
        hostPort: 443
        listenAddress: "0.0.0.0"
        # containerPort below must match the values file:
        #   nginx-ingress.controller.service.nodePorts.ssh
        # Using high-numbered hostPort assuming port 22 is
        #   already in use.
      - containerPort: 32022
        hostPort: 32022
        listenAddress: "0.0.0.0"
    extraMounts:
      - hostPath: $HOME/kind
        containerPath: /data
  - role: worker
    extraMounts:
      - hostPath: $HOME/kind
        containerPath: /data
  - role: worker
    extraMounts:
      - hostPath: $HOME/kind
        containerPath: /data
  - role: worker
    extraMounts:
      - hostPath: $HOME/kind
        containerPath: /data

請注意:

這邊的 $HOME 要寫入絕對路徑,不然最後掛載的位置就會變成執行指令的 PWD 位置新增一個資料夾叫 $HOME 給你掛載 XD
https://ithelp.ithome.com.tw/upload/images/20240926/20141794lnCBonMM9d.png

但從這張圖片可以得知,其實我們也不需要主動去建立的這個資料夾,只要 Yaml 中有寫,kind 就會自動建立了。

建立 Cluster。

kind create cluster --name local-dev --config kind-config.yaml --image kindest/node:v1.31.0

使用 Node Shell 連到任一 Node 中建立實驗的檔案 test.txt

touch /data/test.txt

從上面錯誤路徑的圖片可以得知,我在 Nodes 上建立的資料是可以存在筆電的資料夾內的。而且實驗後確認是可以在任何一個 Nodes 上找到這個檔案,所以可以證明我的假設是正確的。


上一篇
Day 11:Users
下一篇
Day 13:StorageClass
系列文
在Local建立完整的開發環境筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言