因爲pod銷燬後,致使數據也會銷燬,就得用到Volumenode
參考文檔:https://kubernetes.io/docs/concepts/storage/volumes/ nginx
建立一個空卷,掛載到Pod中的容器。Pod刪除該卷也會被刪除。
應用場景:Pod中容器之間數據共享git
經過-c 指定哪一個容器
kubectl logs -c read my-podgithub
共享宿主機目錄,pod分配在哪一個node上,就是共享的node上的目錄或者文件docker
因爲共享的是tmp,這是目錄,因此用Directory,如果共享1.txt,這個是文件,就是File
數據庫
查看分配到了哪一個node上:
網絡
在192.168.1.24的/tmp建立目錄或者文件,由於是共享的tmp,在進入容器裏驗證,這裏的共享能夠刪除修改app
總結:以上都是本地的數據卷,如果pod刪除了,k8s把你再拉起一個pod,在另外的node上,那就看不到了,須要使用網絡的數據庫nfs運維
node節點都要安裝,由於你建立pod時k8s會幫你調到任意的node
服務端:192.168.1.25 安裝 yum install nfs-utils -y
[root@docker ~]# cat /etc/exports
/data/nfs *(rw,no_root_squash)ide
啓動:systemctl start
客戶端:192,168.1.23 安裝 yum install nfs-utils -y
客戶端:192,168.1.24 安裝 yum install nfs-utils -y
驗證:
http://192.168.1.23:34293/
http://192.168.1.24:34293/
Pod 消費 Node 的資源,PVCs 消費 PV 的資源
先建立需求pvc:
再建立好的資源pv:
必需要有/data/nfs/wwwroot 這個目錄
一、kubectl apply -f pvc.yaml
kubectl apply -f my-pv.yaml
二、查看綁定(若是pv有使用過,則須要重建):
pvc必須根據容量和訪問模式才能匹配pv
三、驗證訪問
http://nodeip:serviceport
總結:
Access Modes 訪問模式:
ReadWriteOnce – the volume can be mounted as read-write by a single node (單node的讀寫)
ReadOnlyMany – the volume can be mounted read-only by many nodes (多node的只讀)
ReadWriteMany – the volume can be mounted as read-write by many nodes (多node的讀寫)
Notice:單個PV掛載的時候只支持一種訪問模式
pv:運維/存儲人員提供
pvc:需求鏈接
因爲上面是手動建立pv,pvc,小規模的話還好,大規模的話就很麻煩,這個時候須要動態供給
插件文檔:https://kubernetes.io/docs/concepts/storage/persistent-volumes/
參考文檔:https://github.com/kubernetes-incubator/external-storage
因動態供給有些不支持,須要手動安裝插件,好比nfs
一、kubectl apply -f storageclass-nfs.yaml
二、kubectl apply -f deployment-nfs.yaml
三、kubectl apply -f rbac.yaml
四、kubectl apply -f nginx-demo.yaml
驗證:
自動幫你建立nfs下面的目錄: