前言
本文為「Kubernetes 實作手冊:基礎入門篇」課程的學習筆記。
簡介
HostPath 儲存卷能夠將主機節點檔案系統上的檔案或目錄掛載到 Pod 當中。
HostPath 儲存卷存在許多安全風險,應盡可能避免使用 HostPath。當必須使用時,它的範圍應僅限於所需的檔案或目錄,並以唯讀方式掛載。
比較常見的應用場景是搭配 DaemonSet 在每個節點上安裝資料時使用。
實作
以下使用 kind 的環境。
1 | cd vagrant/kind |
Directory
查看範例資料夾中的 Deployment 配置檔。
1 | cat introduction/storage/hostpath/pod-dir.yaml |
配置檔如下:
1 | apiVersion: apps/v1 |
使用配置檔創建 Deployment 資源。
1 | kubectl apply -f introduction/storage/hostpath/pod-dir.yaml |
查看 Pod 所在的節點位置。
1 | kubectl get pods -o wide |
進入節點。
1 | docker exec -it kind-worker bash |
使用另一個終端機視窗進入 Pod。
1 | kubectl exec -it hostpath-dir-66f78996cb-8rx4c -- bash |
在節點的 tmp
資料夾中新增檔案,而 Pod 的 test
資料夾也會出現相同檔案。
1 | touch hello |
但是如果 Pod 因為某些原因轉移到其他節點,那 Pod 只會和當前節點同步,而不是原來的節點。
File
查看範例資料夾中的 Deployment 配置檔。
1 | cat introduction/storage/hostpath/pod-file.yaml |
配置檔如下:
1 | apiVersion: apps/v1 |
使用配置檔創建 Deployment 資源。
1 | kubectl apply -f introduction/storage/hostpath/pod-file.yaml |
查看 Pod 所在的節點位置。
1 | kubectl get pods -o wide |
進入節點。
1 | docker exec -it kind-worker2 bash |
使用另一個終端機視窗進入 Pod。
1 | kubectl exec -it hostpath-file-9544994db-rdfhg -- bash |
在節點中的檔案寫入內容,而 Pod 的檔案也會跟著同步。
1 | echo "test" >> my-data |
同樣的,如果 Pod 因為某些原因轉移到其他節點,那 Pod 只會和當前節點同步,而不是原來的節點。