久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

k8s如何使用emptyDir,hostPath,nfs,pv,pvc做存儲(chǔ)

共計(jì) 8131 個(gè)字符,預(yù)計(jì)需要花費(fèi) 21 分鐘才能閱讀完成。

本篇文章為大家展示了 k8s 如何使用 emptyDir,hostPath,nfs,pv,pvc 做存儲(chǔ),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

存儲(chǔ)卷三種方式:emptyDir,gitRepo,hostPath

emptyDir:一個(gè) pod 創(chuàng)建兩個(gè)容器, 一個(gè) pod 提供請(qǐng)求服務(wù), 另一個(gè) pod 提供文件存儲(chǔ),pod 刪除, 存儲(chǔ)卷就刪除。

gitRepo:使用 docker 鏡像提供存儲(chǔ)

hostPath:宿主機(jī)路徑,pod 刪除, 存儲(chǔ)卷還在 (在多個(gè) node 節(jié)點(diǎn)要?jiǎng)?chuàng)建路徑)

nfs:使用共享存儲(chǔ) (多個(gè) pod 要在共享存儲(chǔ)中創(chuàng)建多個(gè)目錄)

幫助:

[root@k8s1 ~]# kubectl explain pods.spec.volumes.persistentVolumeClaim    –pvc 幫助

[root@k8s1 ~]# kubectl explain pods.spec.volumes    – 查看幫助

[root@k8s1 ~]# kubectl explain pv                   –pv 幫助

1. 使用 emptyDir 做存儲(chǔ) (兩個(gè) pod, 一個(gè)做存儲(chǔ), 一個(gè)提供服務(wù))

[root@k8s1 ~]# vim 11.yaml

apiVersion: v1

kind: Pod

metadata:

  name: pod-demo              – 定義一個(gè) pod

  namespace: default

  labels:

    app: myapp

    tier: frontend

spec:

  containers:

  – name: myapp                  – 定義一個(gè)容器

    image: ikubernetes/myapp:v1

    imagePullPolicy: IfNotPresent

    ports:

    – name: http

      containerPort: 80

    volumeMounts:

    – name: html

      mountPath: /usr/share/nginx/html    –myapp 容器 html 卷掛載到 /usr/share/nginx/html(是 nginx 默認(rèn)路徑)

  – name: busybox

    image: busybox:latest

    imagePullPolicy: IfNotPresent

    volumeMounts:

    – name: html                 –busybox 容器將 html 卷掛載到 /data

      mountPath: /data/

    command: [/bin/sh , -c , while true;do echo $(date) /data/index.html;sleep 2;done ]

  volumes:           – 定義一個(gè) html 卷

  – name: html

    emptyDir: {}

[root@k8s1 ~]# kubectl apply -f 11.yaml 

pod/pod-demo created

[root@k8s1 ~]# kubectl get pods -o wide

NAME            READY   STATUS    RESTARTS   AGE    IP            NODE   NOMINATED NODE   READINESS GATES

pod-demo        2/2     Running   0          103s   10.244.1.13   k8s2    none             none

[root@k8s1 ~]# kubectl exec -it pod-demo -c busybox — /bin/sh

/ # cat /data/index.html 

Fri Feb 22 09:39:53 UTC 2019

Fri Feb 22 09:39:55 UTC 2019

Fri Feb 22 09:39:57 UTC 2019

Fri Feb 22 09:39:59 UTC 2019

[root@k8s1 ~]# curl http://10.244.1.13

Fri Feb 22 09:39:53 UTC 2019

Fri Feb 22 09:39:55 UTC 2019

Fri Feb 22 09:39:57 UTC 2019

Fri Feb 22 09:39:59 UTC 2019

Fri Feb 22 09:40:01 UTC 2019

Fri Feb 22 09:40:03 UTC 2019

Fri Feb 22 09:40:05 UTC 2019

[root@k8s1 ~]#

2. 使用 hostPath 做存儲(chǔ) (如果 node 節(jié)點(diǎn)宕機(jī),pod 訪問(wèn)宕機(jī) node 的數(shù)據(jù)就不存在了)

node1 節(jié)點(diǎn):

[root@k8s2 ~]# mkdir -p /data/pod

[root@k8s2 ~]# cat /data/pod/index.html      – 為了區(qū)分 node 節(jié)點(diǎn), 將文件內(nèi)容寫(xiě)不一樣

node1

[root@k8s2 ~]# 

node2 節(jié)點(diǎn):

[root@k8s3 ~]# mkdir -p /data/pod

[root@k8s3 ~]# cat /data/pod/index.html 

node2

[root@k8s3 ~]# 

master 節(jié)點(diǎn):

[root@k8s1 ~]# vim 12.yaml

apiVersion: v1

kind: Pod

metadata:

  name: pod-vol-hostpath

  namespace: default

spec:

  containers:

  – name: myapp

    image: ikubernetes/myapp:v1

    volumeMounts:

    – name: html                             – 使用 html 卷存儲(chǔ)

      mountPath: /usr/share/nginx/html       –nginx 網(wǎng)頁(yè)根目錄

  volumes:

  – name: html

    hostPath:

      path: /data/pod/                   –html 卷的路徑 (對(duì)應(yīng)的 node 節(jié)點(diǎn)新建目錄,pod 在哪個(gè) node 上就要新建)

      type: DirectoryOrCreate

[root@k8s1 ~]# kubectl get pods -o wide

NAME                   READY   STATUS    RESTARTS   AGE    IP            NODE   NOMINATED NODE   READINESS GATES

pod-demo               2/2     Running   0          64m    10.244.1.13   k8s2    none             none

pod-vol-hostpath       1/1     Running   0          4s     10.244.2.22   k8s3    none             none

[root@k8s1 ~]# curl http://10.244.2.22    –pod 在 node2 節(jié)點(diǎn)上, 所以訪問(wèn)的是 node2 的網(wǎng)頁(yè), 如果在 node1 就是 node1 的內(nèi)容

node2

[root@k8s1 ~]# 

3. 使用 nfs 共享存儲(chǔ)

nfs 存儲(chǔ):

[root@liutie1 ~]# mkdir /data/v6

[root@liutie1 ~]# vim /etc/exports

/data/v6 172.16.8.0/24(rw,no_root_squash)

[root@liutie1 ~]# systemctl restart nfs

[root@liutie1 ~]# exportfs -arv

exporting 172.16.8.0/24:/data/v6

[root@liutie1 ~]# showmount -e

Export list for liutie1:

/data/v6 172.16.8.0/24

[root@liutie1 ~]# 

k8s 節(jié)點(diǎn):

[root@k8s1 ~]# mkdir /data/v6    – 創(chuàng)建共享目錄

[root@k8s1 ~]# mount.nfs 172.16.8.108:/data/v6 /data/v6    – 測(cè)試手動(dòng)掛載

[root@k8s1 ~]# umount /data/v6

[root@k8s1 ~]# vim nfs.yaml

apiVersion: v1

kind: Pod

metadata:

  name: pod-vol-nfs

  namespace: default

spec:

  containers:

  – name: pod-nfs

    image: ikubernetes/myapp:v1

    volumeMounts:

    – name: html1

      mountPath: /usr/share/nginx/html

  volumes:

  – name: html1

    nfs:

      path: /data/v6

      server: 172.16.8.108

[root@k8s1 ~]# kubectl apply -f  nfs.yaml

pod/pod-vol-nfs created

[root@k8s1 ~]# kubectl  get pods -o wide

NAME                READY   STATUS    RESTARTS   AGE     IP             NODE     NOMINATED NODE   READINESS GATES

pod-vol-nfs         1/1     Running   0          2m21s   10.244.1.78    k8s2      none             none

[root@k8s1 ~]# 

在 nfs 存儲(chǔ)創(chuàng)建文件

[root@liutie1 ~]# cd /data/v6/

[root@liutie1 v6]# cat index.html 

nfs store

[root@liutie1 v6]# 

在 k8s 節(jié)點(diǎn)打開(kāi)網(wǎng)頁(yè)

[root@k8s1 ~]# curl 10.244.1.78         –pod 的 ip 地址

nfs store

[root@k8s1 ~]# 

4. 使用 nfs 共享存儲(chǔ) (固定大小)

nfs 服務(wù)器:

[root@liutie1 ~]# mkdir /data/v{1,2,3,4,5}     – 在存儲(chǔ)上新建目錄

[root@liutie1 ~]# yum install nfs* -y          – 安裝 nfs

[root@liutie1 ~]# vim /etc/exports             – 共享目錄

/data/v1 172.16.8.0/24(rw,no_root_squash)

/data/v2 172.16.8.0/24(rw,no_root_squash)

/data/v3 172.16.8.0/24(rw,no_root_squash)

/data/v4 172.16.8.0/24(rw,no_root_squash)

/data/v5 172.16.8.0/24(rw,no_root_squash)

[root@liutie1 ~]# exportfs -arv       

exporting 172.16.8.0/24:/data/v5

exporting 172.16.8.0/24:/data/v4

exporting 172.16.8.0/24:/data/v3

exporting 172.16.8.0/24:/data/v2

exporting 172.16.8.0/24:/data/v1

[root@liutie1 ~]# showmount -e

Export list for liutie1:

/data/v5 172.16.8.0/24

/data/v4 172.16.8.0/24

/data/v3 172.16.8.0/24

/data/v2 172.16.8.0/24

/data/v1 172.16.8.0/24

[root@liutie1 ~]# 

node 各節(jié)點(diǎn):

[root@k8s2 ~]# yum install nfs-common  nfs-utils -y     – 所有 node 節(jié)點(diǎn)必須安裝 nfs-utils 軟件包, 否則會(huì)出錯(cuò)

master 節(jié)點(diǎn):

[root@k8s1 ~]# yum install -y nfs-utils 

[root@k8s1 ~]# kubectl explain PersistentVolume         – 幫助信息

[root@k8s1 ~]# vim pv.yaml    – 將遠(yuǎn)程的 nfs 目錄轉(zhuǎn)換成 pv

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv001

  labels:

    name: pv001

spec:

  nfs:

    path: /data/v1

    server: 172.16.8.108

  accessModes: [ReadWriteMany , ReadWriteOnce]

  capacity:

    storage: 5Gi

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv002

  labels:

    name: pv002

spec:

  nfs:

    path: /data/v2

    server: 172.16.8.108

  accessModes: [ReadWriteMany , ReadWriteOnce]

  capacity:

    storage: 15Gi

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv003

  labels:

    name: pv003

spec:

  nfs:

    path: /data/v3

    server: 172.16.8.108

  accessModes: [ReadWriteMany , ReadWriteOnce]

  capacity:

    storage: 1Gi

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv004

  labels:

    name: pv004

spec:

  nfs:

    path: /data/v4

    server: 172.16.8.108

  accessModes: [ReadWriteMany , ReadWriteOnce]

  capacity:

    storage: 20Gi

apiVersion: v1

kind: PersistentVolume

metadata:

  name: pv005

  labels:

    name: pv005

spec:

  nfs:

    path: /data/v5

    server: 172.16.8.108

  accessModes: [ReadWriteMany , ReadWriteOnce]

  capacity:

    storage: 13Gi

[root@k8s1 ~]# kubectl apply -f pv.yaml     – 生成 pv

persistentvolume/pv001 created

persistentvolume/pv002 created

persistentvolume/pv003 created

persistentvolume/pv004 created

persistentvolume/pv005 created

[root@k8s1 ~]# kubectl get pv     – 查看 pv

NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE

pv001   5Gi        RWO,RWX        Retain           Available                                   2m40s

pv002   15Gi       RWO,RWX        Retain           Available                                   2m40s

pv003   1Gi        RWO,RWX        Retain           Available                                   2m40s

pv004   20Gi       RWO,RWX        Retain           Available                                   2m40s

pv005   13Gi       RWO,RWX        Retain           Available                                   2m40s

[root@k8s1 ~]# vim pvc.yaml      – 創(chuàng)建 pvc,pvc 的大小為 6G

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: mypvc

  namespace: default           – 定義一個(gè) mypvc 名字的 pvc

spec:

  accessModes: [ReadWriteMany]

  resources:

    requests:

      storage: 6Gi

apiVersion: v1

kind: Pod               – 定義一個(gè) pod,pod 使用 pvc

metadata:

  name: pod-vol-pvc

  namespace: default

spec:

  containers:

  – name: myapp

    image: ikubernetes/myapp:v1

    volumeMounts:

    – name: html          – 使用 mypvc 存儲(chǔ)

      mountPath: /usr/share/nginx/html

  volumes:

  – name: html

    persistentVolumeClaim:

      claimName: mypvc          – 引用上面的 mypvc

[root@k8s1 ~]# kubectl apply -f pvc.yaml 

persistentvolumeclaim/mypvc created

pod/pod-vol-pvc created

[root@k8s1 ~]# kubectl get pv   

NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM           STORAGECLASS   REASON   AGE

pv001   5Gi        RWO,RWX        Retain           Available                                           8m31s

pv002   15Gi       RWO,RWX        Retain           Available                                           8m31s

pv003   1Gi        RWO,RWX        Retain           Available                                           8m31s

pv004   20Gi       RWO,RWX        Retain           Available                                           8m31s

pv005   13Gi       RWO,RWX        Retain           Bound       default/mypvc                           8m31s     –Bound 表示使用

[root@k8s1 ~]# kubectl get pvc

NAME    STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE

mypvc   Bound    pv005    13Gi       RWO,RWX                       2m31s    – 使用了 pv005 的 mypvc 存儲(chǔ)卷

[root@k8s1 ~]# kubectl get pods

NAME                            READY   STATUS              RESTARTS   AGE

pod-demo                        2/2     Running             0          141m

pod-vol-hostpath                1/1     Running             0          77m

pod-vol-pvc                     1/1     Running             0          4s

[root@k8s1 ~]# kubectl describe pods pod-vol-pvc     – 查看詳細(xì)信息

上述內(nèi)容就是 k8s 如何使用 emptyDir,hostPath,nfs,pv,pvc 做存儲(chǔ),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-25發(fā)表,共計(jì)8131字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 巴中市| 霍山县| 登封市| 广丰县| 合作市| 通城县| 海阳市| 雷州市| 神农架林区| 马山县| 安塞县| 阿拉尔市| 高邮市| 汝阳县| 唐河县| 溆浦县| 桐城市| 固始县| 永济市| 兴海县| 浪卡子县| 麻江县| 万载县| 海门市| 扬州市| 资源县| 同德县| 冀州市| 驻马店市| 宜阳县| 壤塘县| 黎城县| 安徽省| 措勤县| 嫩江县| 北安市| 融水| 周至县| 巴中市| 津市市| 衡阳市|