Kubernetes部分Volume类型介绍及yaml示例--NFS(网络数据卷)

  1. 说明
    nfs 卷允许将现有的 NFS(网络文件系统)共享挂载到你的容器中。不像 emptyDir,当删除 Pod 时,nfs 卷的内容被保留,卷仅仅是被卸载。这意味着 NFS 卷可以预填充数据,并且可以在 pod 之间“切换”数据。 NFS 可以被多个写入者同时挂载。
  2. 部署NFS服务器
    关于NFS的部署,请参考NFS部署及优化(一)
  3. 实战pod内的文件共享
    #创建yaml文件
    cat >> nginx_volume.yaml << EOF
    apiVersion: v1
    kind: Pod
    metadata:
        name: nginx-test
        namespace: test
        labels:
            app: nginx
    spec:
        containers:
        - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
            volumeMounts:
            #Mount the path to the container
            - mountPath: "/tmp/"
                name: pv0003
        volumes:
        - name: pv0003
            nfs:
              #fixed:This ip is the address of the nfs server
                server: 192.168.246.169
                #fixed:This path is shared externally by the nfs server
                path: "/data"
    #启动nginx_volume.yaml
    kubectl create -f ./nginx_volume.yaml 
    #查看Pod运行状态
    kubectl get po -n test
    NAME                         READY     STATUS    RESTARTS   AGE
    nginx-test                   1/1       Running   0          29s
    #进入容器查看共享卷volume
    kubectl exec -it nginx-test  /bin/bash --namespace=test
    [email protected]:/# cd tmp
    [email protected]:/tmp# ls
    lost+found  sys
    ##我们可以看到NFS服务器共享卷/data已经挂载进来了
  4. 实战多个Pod内的容器间共享
    #创建deployment
    cat >> deploy_volume.yaml << EOF
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
        name: nginx-wtf
        namespace: test
    spec:
        replicas: 2
        template:
            metadata:
                labels:
                    app: wtf
            spec:
                containers:
                - name: nginx-wtf
                    image: nginx:1.7.9
                    ports:
                    - containerPort: 81
                    volumeMounts:
                     - name: pv0003
                         mountPath: /tmp/
                volumes:
                - name: pv0003
                    nfs:
                        server: 192.168.246.169
                        path: "/data/"
    #启动deployment
    kubectl create -f ./deploy_volume.yaml
    #查看Pods的运行状态
    NAME                         READY     STATUS    RESTARTS   AGE
    nginx-wtf-5774b87bdc-n97gr   1/1       Running   0          32m
    nginx-wtf-5774b87bdc-xpsnr   1/1       Running   0          32m
    #进入容器查看共享卷volume
    kubectl exec -it nginx-wtf-5774b87bdc-n97gr  /bin/bash --namespace=test
    [email protected]:/# cd tmp
    [email protected]:/tmp# ls
    lost+found  sys
  5. 实战volume的操作
    #查看下当前命名空间运行有挂载NFS卷的Pods
    kubectl get po -n test
    NAME                         READY     STATUS    RESTARTS   AGE
    nginx-test                   1/1       Running   0          2m
    nginx-wtf-5774b87bdc-n97gr   1/1       Running   0          36m
    nginx-wtf-5774b87bdc-xpsnr   1/1       Running   0          36m
    ##在命名空间test里运行有三个Pods
    #在NFS服务端对共享卷进行操作
    ##创建目录datagrand
    mkdir /data/datagrand
    #查看各Pod中容器内卷的变化
    ##nginx-test
    kubectl exec -it nginx-test  /bin/bash --namespace=test
    [email protected]:/# cd tmp
    [email protected]:/tmp# ls
    datagrand  lost+found  sys
    ##nginx-wtf-5774b87bdc-n97gr
    kubectl exec -it nginx-wtf-5774b87bdc-n97gr  /bin/bash --namespace=test
    [email protected]:/# cd tmp
    [email protected]:/tmp# ls
    datagrand  lost+found  sys
    ##nginx-wtf-5774b87bdc-xpsnr
    kubectl exec -it nginx-wtf-5774b87bdc-xpsnr  /bin/bash --namespace=test
    [email protected]:/# cd tmp
    [email protected]:/tmp# ls
    datagrand  lost+found  sys
    ##说明:我们可以看到各Pod中容器内卷已有datagrand

原文地址:http://blog.51cto.com/wutengfei/2124840

时间: 2024-08-30 12:21:13

Kubernetes部分Volume类型介绍及yaml示例--NFS(网络数据卷)的相关文章

Kubernetes部分Volume类型介绍及yaml示例

1.EmptyDir(本地数据卷) EmptyDir类型的volume创建于pod被调度到某个宿主机上的时候,而同一个pod内的容器都能读写EmptyDir中的同一个文件.一旦这个pod离开了这个宿主机,EmptyDirr中的数据就会被永久删除.所以目前EmptyDir类型的volume主要用作临时空间,比如Web服务器写日志或者tmp文件需要的临时目录.yaml示例如下: [[email protected] demon2]# cat test-emptypath.yaml apiVersio

Kubernetes核心概念之Volume存储数据卷详解

在Docker中就有数据卷的概念,当容器删除时,数据也一起会被删除,想要持久化使用数据,需要把主机上的目录挂载到Docker中去,在K8S中,数据卷是通过Pod实现持久化的,如果Pod删除,数据卷也会一起删除,k8s的数据卷是docker数据卷的扩展,K8S适配各种存储系统,包括本地存储EmptyDir,HostPath,网络存储NFS,GlusterFS,PV/PVC等,下面就详细介绍下K8S的存储如何实现. 一.本地存储 1,EmptyDir ①编辑EmptyDir配置文件 vim empt

Kubernetes进阶之hostpath及emptyDir数据卷

K8s进阶之数据卷与数据持久卷目录: 一 从外部访问应用最佳方式 二 配置管理 三 数据卷与数据持久卷 四 再谈有状态应用部署 五 K8S 安全机制 三.数据卷与数据持久卷数据卷产生的背景为什么有数据卷,这里的数据卷和docker的数据卷还不太一样,实现的机制不是一套,数据卷说白了就是能帮助你持久化你pod重要的数据,如果你不持久化的话,pod删除里面临时产生的数据也会被删除,这不管是k8s中还是docker中,这都是一样的,所以k8s和docker都提供了这种volume的这种相关功能,就是为

Docker Kubernetes Volume 本地数据卷

Docker Kubernetes Volume 本地数据卷 emptyDir 当Pod分配到Node时,首先创建一个空卷,并挂载到Pod中的容器. Pod中的容器可以读取和写入卷中的文件. 当Pod从节点中删除emptyDir时,该数据也会被删除. 注:适用于容器之间的数据共享. hostPath 一个hostPath卷挂载Node文件系统上的文件或目录到Pod中的容器. 注:指定宿主级的数据目录挂载到容器中. 环境: 系统:Centos 7.4 x64 Docker版本:18.09.0 Ku

自建Kubernetes的LoadBalancer类型服务方案-MetalLB

自建Kubernetes的LoadBalancer类型服务方案-MetalLB [TOC] 1. 环境 kubernetes环境: kubeadm v1.13.1,网络使用flannel helm v2.13.0 2. 安装 helm fetch --untar stable/metallb cd metallb vim values.yaml # 配置ip池 helm install --name metallb --namespce kube-system ./ configInline:

Kubernetes volume数据卷

Volume是kubernetes Pod中多个容器访问的共享目录 Kubernetes提供了众多的volume类型,包括:emptyDir.hostPath.NFS.GlusterFS.configMap.Cephfs 1.emptyDiremptyDir类型的vloume在Pod分配到node上时被创建,kubernetes会在node上自动分配一个目录,所以无须指定宿主机node上对应的目录文件,该目录初始化内容为空,当Pod从node上被移除时,emptyDir中的数据会被永久删除 1.

kubernetes 的volume 配置

kubernetes 的volume 配置 标签(空格分隔):kubernetes系列 一:kuberentes 的volume 配置 一:kuberentes 的volume 配置 1.1 背景 说明: 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃 时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的状态)重新启动.其次,在 Pod 中同时运行多个容器时,这些容器之间通常需要共享文件.Kubernetes 中

四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例) 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SAX:http://sourceforge.net/projects/sax/ JDOM:http://jdom.org/downloads/index.html DOM4J:http://sourceforge.

nginx虚拟主机概念和类型介绍

nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问. 这个这个独立的站点在配置里是由一定格式的标签段标记,对于apache软件来说,一个虚拟主机的标签段通畅被包含在<VirtualHost></VirtualHost>内,而nginx软件则使用一个server{}标签来标示一个虚拟主机,一个web服务里可以有多个虚拟主机主