您好,登錄后才能下訂單哦!
Volume是kubernetes Pod中多個容器訪問的共享目錄
Kubernetes提供了眾多的volume類型,包括:emptyDir、hostPath、NFS、GlusterFS、configMap、Cephfs
1、emptyDir
emptyDir類型的vloume在Pod分配到node上時被創建,kubernetes會在node上自動分配一個目錄,所以無須指定宿主機node上對應的目錄文件,該目錄初始化內容為空,當Pod從node上被移除時,emptyDir中的數據會被永久刪除
1.編輯emptyDir.yaml
文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: web-demo-empty
spec:
replicas: 2
selector:
matchLabels:
app: app-demo-empty
template:
metadata:
labels:
app: app-demo-empty
spec:
containers:
- name: tomcat-demo
image: tomcat
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
volumeMounts:
# 將/mydata-data目錄掛載到共享倉庫
- mountPath: /mydata-data
name: datavol
- name: nginx-demo
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
# 將/mydata-data目錄掛載到共享倉庫
- mountPath: /mydata-data
name: datavol
# emptyDir是一個共享倉庫(中央倉庫)
volumes:
- name: datavol
emptyDir: {}
2.執行kubectl create
$ kubectl create -f emptyDir.yaml
deployment.extensions/web-demo-empty created
3.先進入tomcat-demo
容器中創建文件
$ kubectl exec -it web-demo-empty-9b5644c45-7bpn5 -c tomcat-demo bash
$ touch /mydata-data/data.txt
$ ls /mydata-data/
data.txt
4.在進入nginx-demo
容器查看是否存在data.txt
文件
$ kubectl exec -it web-demo-empty-9b5644c45-7bpn5 -c nginx-demo bash
$ ls /mydata-data/
data.txt
經過試驗證明emptyDir是一個共享空目錄,可以讓Pod中的多個容器之間共享該目錄
2、hostPath
hostPath類型的vloume為Pod掛載到宿主機上的目錄或文件,使得容器可以使用宿主機的文件系統進行存儲,但是在kubernetes中,Pod都是基于schedule
組件來動態調度在不同的node節點上,當一個Pod在當前node節點上啟動并通過hostPath
存儲了文件到本地后,下次在調度另外一個節點上啟動時,就無法使用之前節點上存儲的文件了。
1.編輯hostPath.yaml
文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: web-demo-hostpath
spec:
replicas: 2
selector:
matchLabels:
app: app-demo-hostpath
template:
metadata:
labels:
app: app-demo-hostpath
spec:
containers:
containers:
- name: nginx-demo
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- mountPath: /mydata-data
name: datavol
volumes:
- name: datavol
hostPath:
path: "/data"
2.執行kubectl create
$ kubectl create -f hostPath.yaml
deployment.extensions/web-demo-hostpath created
3.需要在每個node節點創建/data
目錄,并創建測試文件
$ mkdir /data
$ touch /data/test.txt
4.進入容器里查看是否將/mydata-data
掛載到了宿主機上
$ kubectl exec -it web-demo-hostpath-7866c644c4-7f8fk bash
$ ls /mydata-data/
test.txt
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。