溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Kubernetes volume數(shù)據(jù)卷

發(fā)布時(shí)間:2020-05-30 13:49:33 來源:網(wǎng)絡(luò) 閱讀:2243 作者:JasonMingHao 欄目:云計(jì)算

Volume是kubernetes Pod中多個(gè)容器訪問的共享目錄

Kubernetes提供了眾多的volume類型,包括:emptyDir、hostPath、NFS、GlusterFS、configMap、Cephfs

1、emptyDir
emptyDir類型的vloume在Pod分配到node上時(shí)被創(chuàng)建,kubernetes會(huì)在node上自動(dòng)分配一個(gè)目錄,所以無須指定宿主機(jī)node上對應(yīng)的目錄文件,該目錄初始化內(nèi)容為空,當(dāng)Pod從node上被移除時(shí),emptyDir中的數(shù)據(jù)會(huì)被永久刪除

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是一個(gè)共享倉庫(中央倉庫)
      volumes:
        - name: datavol
          emptyDir: {}

2.執(zhí)行kubectl create

$ kubectl create -f  emptyDir.yaml
deployment.extensions/web-demo-empty created

3.先進(jìn)入tomcat-demo容器中創(chuàng)建文件

$  kubectl exec -it web-demo-empty-9b5644c45-7bpn5 -c tomcat-demo bash
$ touch /mydata-data/data.txt
$ ls /mydata-data/
data.txt

4.在進(jìn)入nginx-demo容器查看是否存在data.txt文件

$ kubectl exec -it web-demo-empty-9b5644c45-7bpn5 -c nginx-demo bash
$ ls /mydata-data/
data.txt

經(jīng)過試驗(yàn)證明emptyDir是一個(gè)共享空目錄,可以讓Pod中的多個(gè)容器之間共享該目錄

2、hostPath
hostPath類型的vloume為Pod掛載到宿主機(jī)上的目錄或文件,使得容器可以使用宿主機(jī)的文件系統(tǒng)進(jìn)行存儲,但是在kubernetes中,Pod都是基于schedule組件來動(dòng)態(tài)調(diào)度在不同的node節(jié)點(diǎn)上,當(dāng)一個(gè)Pod在當(dāng)前node節(jié)點(diǎn)上啟動(dòng)并通過hostPath存儲了文件到本地后,下次在調(diào)度另外一個(gè)節(jié)點(diǎn)上啟動(dòng)時(shí),就無法使用之前節(jié)點(diǎn)上存儲的文件了。

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.執(zhí)行kubectl create

$ kubectl create -f hostPath.yaml
deployment.extensions/web-demo-hostpath created

3.需要在每個(gè)node節(jié)點(diǎn)創(chuàng)建/data目錄,并創(chuàng)建測試文件

$ mkdir /data 
$ touch /data/test.txt

4.進(jìn)入容器里查看是否將/mydata-data掛載到了宿主機(jī)上

$ kubectl exec -it web-demo-hostpath-7866c644c4-7f8fk bash
$ ls /mydata-data/
test.txt
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI