Kubernetes volume数据卷

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/v1beta1kind: Deploymentmetadata:  name: web-demo-emptyspec:  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.yamldeployment.extensions/web-demo-empty created3.先进入tomcat-demo容器中创建文件
$  kubectl exec -it web-demo-empty-9b5644c45-7bpn5 -c tomcat-demo bash$ touch /mydata-data/data.txt$ ls /mydata-data/data.txt4.在进入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/v1beta1kind: Deploymentmetadata:  name: web-demo-hostpathspec:  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.yamldeployment.extensions/web-demo-hostpath created3.需要在每个node节点创建/data目录,并创建测试文件

达拉斯数据中心是一家中立的数据中心,一期机房最大可接入8000条光纤,直连40个专有的网络线路(包括美国带宽本土10个,南美、亚洲、欧洲等),可提供BGP多线,163和CN2直达中国专线网络,同时能分配IPv4和IPv6,防火墙提供ddos、CC保护能力。
$ mkdir /data $ touch /data/test.txt4.进入容器里查看是否将/mydata-data挂载到了宿主机上
$ kubectl exec -it web-demo-hostpath-7866c644c4-7f8fk bash$ ls /mydata-data/test.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值