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
  • Kubernetes版本:v1.8
  • 管理节点:192.168.1.79
  • 工作节点:192.168.1.78
  • 工作节点:192.168.1.77


创建emptydir实例

1、管理节点:创建yaml文件

vim emptydir.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx:1.12
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

# api版本
apiVersion: v1
# 指定创建资源对象
kind: Pod
# 源数据、可以写name,命名空间,对象标签
metadata:
# 服务名称
  name: test-pd
# 容器资源信息
spec:
# 容器管理
  containers:
# 镜像名称
  - image: nginx:1.12
# 容器名称
    name: test-container
# 容器数据卷管理
    volumeMounts:
# 容器内挂载目录
    - mountPath: /cache
# 容器挂载数据名称
      name: cache-volume
# 宿主数据卷管理
  volumes:
# 创建数据卷名称
  - name: cache-volume
# emptydir标准语法
    emptyDir: {}

文件注解

2、管理节点:创建Pod

kubectl create -f emptydir.yaml

3、测试

命令:kubectl exec test-pd -it bash

[email protected]-pd:/# cd /cache/
[email protected]:/cache# ls
[email protected]:/cache# 

测试挂载路径

命令:kubectl describe pods test-pd

    Mounts:
      /cache from cache-volume (rw)
Conditions:
  Type           Status
  Initialized    True
  Ready          True
  PodScheduled   True
Volumes:
  cache-volume:
    Type:        EmptyDir (a temporary directory that shares a pod‘s lifetime)
    Medium:
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>

查看容器挂载信息



创建hostPath实例

1、管理节点:创建yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: test-pd2
spec:
  containers:
  - image: nginx:1.12
    name: test-container
    volumeMounts:
    - mountPath: /data
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      path: /etc/default
      type: Directory

# api版本
apiVersion: v1
# 指定创建资源对象
kind: Pod
# 源数据、可以写name,命名空间,对象标签
metadata:
# 服务名称
  name: test-pd2
# 容器资源信息
spec:
# 容器管理
  containers:
# 镜像名称
  - image: nginx:1.12
    name: test-container
# 容器数据卷管理
    volumeMounts:
# 容器挂载目录
    - mountPath: /data
# 容器挂载数据名称
      name: test-volume
# 宿主数据卷管理
  volumes:
# 创建数据卷名称
  - name: test-volume
# 数据卷地址
    hostPath:
# 挂载到容器的宿主目录
      path: /etc/default
# 类型为目录文件
      type: Directory

文件注解

2、管理节点:创建Pod

kubectl create -f hostpath.yaml

3、测试

命令:kubectl exec test-pd2 -it bash

[email protected]-pd2:/# cd /data
[email protected]:/data# ls
grub  nss  useradd  yyy

原文地址:https://www.cnblogs.com/xiangsikai/p/10012318.html

时间: 2024-10-04 16:46:29

Docker Kubernetes Volume 本地数据卷的相关文章

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

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

docker深入1-docker的数据卷

参考: http://docs.docker.com/userguide/dockervolumes/ 针对数据的存储,有个data volume的概念. 使用参数: -v 在container中创建一个volume,或者类似目录映射的方式,挂载一个数据盘或者目录到docker的container中. 环境准备: [[email protected] ~]# yum install docker-io -y [[email protected] ~]# docker -v Docker vers

Docker:网络及数据卷设置 [四]

一.Docker网络设置 默认情况下,docker会创建一个桥接网卡[docker 0],docker有2种映射方式,一种是随机映射,一种是指定映射 提示:生产场景一般不使用随机映射,但是随机映射的好处就是由docker分配,端口不会冲突 案例1:使用docker启动nginx随机映射配置 [[email protected] ~]# docker run -d -P nginx 63cbe30165c8fb2ce7789a8173db6f2060705028ce6c326d1f0cd467bd

Kubernetes进阶之hostpath及emptyDir数据卷

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

Docker之七:Docker数据卷管理

容器数据持久化 1.数据卷:将本地磁盘mount进入容器-v /dest-v src:dst [ro]|[rw] 2.数据卷容器:将外部容器分享给容器--volumes-from数据卷容器专门用来挂载数据卷的容器,以供其他容器引用和使用 3.数据卷管理命令docker volume 一.数据卷:1.给容器内部映射一个外部数据卷 -v src:dest[[email protected] nginx]# docker run -d --name web1 -v /opt/nginx:/usr/sh

docker中数据卷探究与总结

为实现持久化,docker引入了挂载数据卷的方法,以实现数据的可持久化.具体是以下三种:一.通过docker run命令命令:docker run -dit --name gerrit -p 9001:8080 -p 29419:29418 -v /home/docker/test.txt:/var/spool/cron/crontabs/root openfrontier/gerrit:2.15.3此时将宿主机的/data/mysql1挂载到容器的/var/lib/mysql下,这里需要注意的

Docker数据卷之进阶篇

[容器之间数据共享,修改同步] 配置如下: type 指定挂载方式,我们这里用到的是 volume,其实还可以有 bind 和 tmpfs. Volunme:这个目录只有Docker可以管理,其他进程不能修改.如果想持久保存容器的 应用数据,Volumes是Docker推荐的挂载方式. Bind:容器内的数据被存放到宿主机文件系统的任意位置,甚至存放到一些重要的系统 目录或文件中.除了Docker之外的进程也可以任意对他们进行修改: tmpfs:容器的数据只会存放到宿主机的内存中,不会被写到宿主

docker之数据卷

docker的数据管理:    数据卷:        一个绕过UFS的特殊目录,可供多个容器使用.        特性:            1.可以在容器之间共享和重用            2.数据卷的修改会立即生效            3.更新数据卷不影响image            4.数据卷会一直存在,直到没有容器使用 方式1:创建数据卷            创建容器的时候使用-v CONTDIR 指定数据卷. 方式2:挂载宿主机的目录作为数据卷            创建

docker挂载volume的用户权限问题,理解docker容器的uid

docker挂载volume的用户权限问题,理解docker容器的uid目录遇到的问题原因容器共享宿主机的uid如果不指定user,容器内部默认使用root用户来运行容器内部用户的权限与外部用户相同一定要确保容器执行者的权限和挂载数据卷对应一个更加明显的demo参考docker挂载volume的用户权限问题,理解docker容器的uid 在刚开始使用docker volume挂载数据卷的时候,经常出现没有权限的问题.这里通过遇到的问题来理解docker容器用户uid的使用,以及了解容器内外uid