溫馨提示×

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

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

Kubernetes進(jìn)階之hostpath及emptyDir數(shù)據(jù)卷

發(fā)布時(shí)間:2020-07-11 20:38:38 來(lái)源:網(wǎng)絡(luò) 閱讀:1087 作者:wx5c1cfd6e22842 欄目:系統(tǒng)運(yùn)維

K8s進(jìn)階之?dāng)?shù)據(jù)卷與數(shù)據(jù)持久卷
目錄:

一 從外部訪問應(yīng)用最佳方式 
二 配置管理 
三 數(shù)據(jù)卷與數(shù)據(jù)持久卷 
四 再談?dòng)袪顟B(tài)應(yīng)用部署 
五 K8S 安全機(jī)制

三、數(shù)據(jù)卷與數(shù)據(jù)持久卷
數(shù)據(jù)卷產(chǎn)生的背景
為什么有數(shù)據(jù)卷,這里的數(shù)據(jù)卷和docker的數(shù)據(jù)卷還不太一樣,實(shí)現(xiàn)的機(jī)制不是一套,數(shù)據(jù)卷說(shuō)白了就是能幫助你持久化你pod重要的數(shù)據(jù),如果你不持久化的話,pod刪除里面臨時(shí)產(chǎn)生的數(shù)據(jù)也會(huì)被刪除,這不管是k8s中還是docker中,這都是一樣的,所以k8s和docker都提供了這種volume的這種相關(guān)功能,就是為了持久化你容器中的數(shù)據(jù),能讓它重建或者刪除,數(shù)據(jù)依然存在。

? Kubernetes中的Volume提供了在容器中掛載外部存儲(chǔ)的能力 ,也就是部署k8s自身的存儲(chǔ)了,就好比自己搭建一個(gè)分布式存儲(chǔ),好比公有云的云盤存儲(chǔ),這樣是可以掛在集群之外的存儲(chǔ)可以掛在k8s中去使用。
pod要想使用這種存儲(chǔ)必須定義兩點(diǎn):
? Pod需要設(shè)置卷來(lái)源(spec.volume)和掛載點(diǎn)(spec.containers.volumeMounts)兩個(gè)信息后才可以使用相應(yīng)的Volume

來(lái)看一下卷的類型最好的解釋就是官方:
來(lái)看一下官方怎么說(shuō)的:
https://kubernetes.io/docs/concepts/storage/volumes/
Kubernetes進(jìn)階之hostpath及emptyDir數(shù)據(jù)卷
第一種就是本地卷
像hostPath類型與docker里面的bind mount類型,就是直接掛載到宿主機(jī)文件的類型
像emptyDir是這樣本地卷,也就是類似于volume類型
這兩點(diǎn)都是綁定node節(jié)點(diǎn)的

第二種就是網(wǎng)絡(luò)數(shù)據(jù)卷
比如Nfs、ClusterFs、Ceph,這些都是外部的存儲(chǔ)都可以掛載到k8s上

第三種就是云盤
比如AWS、微軟(azuredisk)

第四種就是k8s自身的資源
比如secret、configmap、downwardAPI

先來(lái)看一下本地卷
像emptyDir類似與docker的volume,而docker刪除容器,數(shù)據(jù)卷還會(huì)存在,而emptyDir刪除容器,數(shù)據(jù)卷也會(huì)丟失,一般這個(gè)只做臨時(shí)數(shù)據(jù)卷來(lái)使用

創(chuàng)建一個(gè)空卷,掛載到Pod中的容器。Pod刪除該卷也會(huì)被刪除。
應(yīng)用場(chǎng)景:Pod中容器之間數(shù)據(jù)共享
emptyDir類型

[root@k8s-master demo]# vim emptydir.yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: write
    image: centos
    command: ["bash","-c","for i in {1..100};do echo 
$i >> /data/hello;sleep 1;done"]
    volumeMounts:
      - name: data
        mountPath: /data
  - name: read
    image: centos
    command: ["bash","-c","tail -f /data/hello"]
    volumeMounts:
      - name: data
        mountPath: /data
  volumes:
  - name: data
    emptyDir: {}

[root@k8s-master demo]# kubectl create -f emptydir.yaml 

[root@k8s-master demo]# kubectl get pod
NAME                     READY   STATUS      RESTARTS   AGE
my-pod                   2/2     Running     13         67m
mypod                    1/1     Running     0          3h40m
mypod2                   1/1     Running     0          3h34m
mypod3                   0/1     Completed   0          3h6m
mypod4                   0/1     Completed   0          3h
nginx-5ddcc6cb74-lplxl   1/1     Running     0          4h8m
[root@k8s-master demo]# kubectl logs my-pod read

Hostpath類型

掛載Node文件系統(tǒng)上文件或者目錄到Pod中的容器。
應(yīng)用場(chǎng)景:Pod中容器需要訪問宿主機(jī)文件

[root@k8s-master demo]# vim hostpath.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: my-pod2
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - /bin/sh
    - -c - sleep 36000
    volumeMounts:
    - name: data
      mountPath: /data
  volumes:
  - name: data
    hostPath:
      path: /tmp
      type: Directory
[root@k8s-master demo]# kubectl create -f hostpath.yaml 
[root@k8s-master demo]# kubectl get pod
NAME                     READY   STATUS      RESTARTS   AGE
my-pod2                  1/1     Running     0          12s
mypod                    1/1     Running     0          4h53m
mypod2                   1/1     Running     0          4h47m
mypod3                   0/1     Completed   0          4h27m
mypod4                   0/1     Completed   0          4h22m
nginx-5ddcc6cb74-lplxl   1/1     Running     0          5h30m
web-67fcf9bf8-mrlhd      1/1     Running     0          20m

[root@k8s-master demo]# kubectl exec -it my-pod2 sh
cd /data/
ls

這里創(chuàng)建的數(shù)據(jù)和我們被分配的node節(jié)點(diǎn)的數(shù)據(jù)都是一樣的,創(chuàng)建的數(shù)據(jù)都會(huì)更新上去,刪除容器,不會(huì)刪除數(shù)據(jù)卷的數(shù)據(jù)。

向AI問一下細(xì)節(jié)

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

AI