在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

k8s如何使用emptyDir,hostPath,nfs,pv,pvc做存储

177次阅读
没有评论

共计 8131 个字符,预计需要花费 21 分钟才能阅读完成。

本篇文章为大家展示了 k8s 如何使用 emptyDir,hostPath,nfs,pv,pvc 做存储,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

存储卷三种方式:emptyDir,gitRepo,hostPath

emptyDir:一个 pod 创建两个容器, 一个 pod 提供请求服务, 另一个 pod 提供文件存储,pod 删除, 存储卷就删除。

gitRepo:使用 docker 镜像提供存储

hostPath:宿主机路径,pod 删除, 存储卷还在 (在多个 node 节点要创建路径)

nfs:使用共享存储 (多个 pod 要在共享存储中创建多个目录)

帮助:

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

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

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

1. 使用 emptyDir 做存储 (两个 pod, 一个做存储, 一个提供服务)

[root@k8s1 ~]# vim 11.yaml

apiVersion: v1

kind: Pod

metadata:

  name: pod-demo              – 定义一个 pod

  namespace: default

  labels:

    app: myapp

    tier: frontend

spec:

  containers:

  – name: myapp                  – 定义一个容器

    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 默认路径)

  – 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:           – 定义一个 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 做存储 (如果 node 节点宕机,pod 访问宕机 node 的数据就不存在了)

node1 节点:

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

[root@k8s2 ~]# cat /data/pod/index.html      – 为了区分 node 节点, 将文件内容写不一样

node1

[root@k8s2 ~]# 

node2 节点:

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

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

node2

[root@k8s3 ~]# 

master 节点:

[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 卷存储

      mountPath: /usr/share/nginx/html       –nginx 网页根目录

  volumes:

  – name: html

    hostPath:

      path: /data/pod/                   –html 卷的路径 (对应的 node 节点新建目录,pod 在哪个 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 节点上, 所以访问的是 node2 的网页, 如果在 node1 就是 node1 的内容

node2

[root@k8s1 ~]# 

3. 使用 nfs 共享存储

nfs 存储:

[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 节点:

[root@k8s1 ~]# mkdir /data/v6    – 创建共享目录

[root@k8s1 ~]# mount.nfs 172.16.8.108:/data/v6 /data/v6    – 测试手动挂载

[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 存储创建文件

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

[root@liutie1 v6]# cat index.html 

nfs store

[root@liutie1 v6]# 

在 k8s 节点打开网页

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

nfs store

[root@k8s1 ~]# 

4. 使用 nfs 共享存储 (固定大小)

nfs 服务器:

[root@liutie1 ~]# mkdir /data/v{1,2,3,4,5}     – 在存储上新建目录

[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 各节点:

[root@k8s2 ~]# yum install nfs-common  nfs-utils -y     – 所有 node 节点必须安装 nfs-utils 软件包, 否则会出错

master 节点:

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

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

[root@k8s1 ~]# vim pv.yaml    – 将远程的 nfs 目录转换成 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      – 创建 pvc,pvc 的大小为 6G

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: mypvc

  namespace: default           – 定义一个 mypvc 名字的 pvc

spec:

  accessModes: [ReadWriteMany]

  resources:

    requests:

      storage: 6Gi

apiVersion: v1

kind: Pod               – 定义一个 pod,pod 使用 pvc

metadata:

  name: pod-vol-pvc

  namespace: default

spec:

  containers:

  – name: myapp

    image: ikubernetes/myapp:v1

    volumeMounts:

    – name: html          – 使用 mypvc 存储

      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 存储卷

[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     – 查看详细信息

上述内容就是 k8s 如何使用 emptyDir,hostPath,nfs,pv,pvc 做存储,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计8131字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 无码人妻一区二区三区在线视频 | 国精产品一区一区三区有限在线 | 人妻熟妇乱又伦精品视频 | 奶茶视频在线 | 亚洲精品夜夜夜妓女网 | 亚洲精品国产a久久久久久 亚洲精品国产suv | 久久久久久综合对白国产 | 亚洲国产欧美日韩一区二区三区 | 国产做爰免费视频观看 | 国产叼嘿视频免费网站 | 亚洲精品一二三区-久久 | 一区二区国产精品 | 午夜伦伦| 成人在线免费视频播放 | 精品国产一区二区三区av 性色 | 任我爽精品视频在线观看 | 综合精品 | 中文字幕乱人伦高清视频 | 无套内谢的新婚少妇国语播放 | 欧美大片毛片aaa免费看 | 久久夜色精品国产噜噜 | 免费看高视频hh网站免费 | 国产人成高清视频观看 | 欧美亚洲综合成人a∨在线 欧美亚洲综合另类成人 | 九九免费视频 | 在线激情 | 久久久久亚洲精品影视 | 高清欧美色欧美综合网站 | 最好看2019高清中文字幕视频 | 性色av无码专区一ⅴa亚洲 | 黄网站免费看 | 亚洲综合久久精品无码色欲 | 99热综合 | 在线观看日韩精品 | 免费久 | 国产精品视频不卡 | xxxxwww日本在线 | 99视频在线精品免费 | 成人毛片免费 | 亚洲色中文字幕在线播放 | 欧美太黄太色视频在线观看 |