Kubernetes volume数据卷
admin
2023-03-26 13:01:32
0

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

相关内容

热门资讯

特朗普:伊朗的回应“完全不可接... 当地时间5月10日,美国总统特朗普在其社交媒体“真实社交”发文表示,他刚刚读了伊朗那些所谓的“代表”...
训练运行模式缺陷或致AI提供危... 据新华社伦敦5月9日电 英国《自然》杂志网站日前发表文章说,人工智能(AI)聊天机器人可能向用户提供...
原创 都... 其实也很简单,很大一部分人就是找不到成就感。 只能去信这些,几乎没有认知门槛啊。 智商75以上的人,...
“宇宙超级快递小哥”即将出发 ... 新一单“太空快递”即将发货! 近日 天舟十号完成转运和全区合练 各项发射准备工作全部就绪 我国第十艘...
美媒证实一艘美国商船遭伊朗无人... 新华社华盛顿5月10日电 (记者徐剑梅 黄强)据美国福克斯新闻数字网报道,一艘美国商船10日在波斯湾...
特朗普声称伊朗47年来一直在“... 美国总统特朗普于当地时间5月10日在社交媒体发文,“猛烈抨击”伊朗长期“玩弄”美国和世界,同时还痛批...
学生放学回家后又返回学校坠亡,... 学生符某放学后回到家中,后又从家中返回学校,并于当晚从学校教学楼楼顶坠亡。符某父母随后将学校告上法庭...
泽连斯基称乌已向俄方提交100... 当地时间10日,乌克兰总统泽连斯基表示,乌俄双方将以“千人换千人”的方式交换战俘,乌方已向俄方提交了...
国网上海市电力公司举办“明灯引... 5月7日至9日,在第十个“中国品牌日”来临之际,国网上海市电力公司(以下简称“国网上海电力”)以“明...
字跳申请会话信息的发送方法专利... 国家知识产权局信息显示,北京字跳网络技术有限公司申请一项名为“会话信息的发送方法、装置、电子设备、存...