Kubernetes中,两种常见类型的体积深度实践

  

一。背景

  

存储资源在所有计算资源中扮演着十分重要的角色,大部分业务场景下都有可能使用到各类存储资源。在Kubernetes中,系统通过体积对集群中的容器动态或静态提供存储资源。通常情况下,我们可以认为容器或者Pod的生命周期时短暂的,当容器被销毁时,容器内部的数据也同时被清除。为了持久化保存容器的数据,Kubernetes引入了体积,类似于码头工人的体积(码头工人也有一个量的概念,虽然它有点宽松的和更少的管理。在码头工人,一个体积只是一个目录> apiVersion: v1   :豆荚   元数据:   名称:gysl   规范:   容器:   ——图片:busybox   名称:gysl-01   volumeMounts:   - mountPath:/gysl-01   名称:gysl-volume   参数:   ——/bin/sh   - - - - - - - c   ——回声”这是一个测试文件。“在20000/gysl-01/test.gysl;睡眠      ——图片:busybox   名称:gysl-02   volumeMounts:   - mountPath:/gysl-02   名称:gysl-volume   参数:   ——/bin/sh   - - - - - - - c   20000年——猫/gysl-02/test.gysl;睡眠      卷:   ——名称:gysl-volume   emptyDir:{}   

创建Pod gysl,并查看相关信息:

  
 <代码类=" language-bash "> [root@k8s-m k8s-volumes] # - f emptyDir.yaml kubectl适用
  豆荚/gysl创建
  [root@k8s-m k8s-volumes] # kubectl吊舱
  重启名字就绪状态的年龄
  gysl 2/2 0 10 m
  [root@k8s-m k8s-volumes] # kubectl日志gysl gysl-02
  这是一个测试文件。 
  

该例中,我们创建了一个名为gysl的豆荚,这个豆荚里面包含gysl-01和gysl-02两个容器,这两个容器同时挂载了名为gysl-volume的emptyDir, gysl-01的挂载点为/gysl-01 gysl-02的挂载点为gysl-02,容器gysl-01创建了一个测试。gysl的文件,内容为:“这是一个测试文件。”在容器gysl-02中,成功显示了gysl-01创建的文件的内容。

  

2.2 hostPath

  

<强> hostPath: hostPath的主要作用是将主机的文件或目录挂载给Pod的容器使用,使得容器能以较为良好的性能来存储数据。接下来我们以Pod gysl-hostpath为例来理解一下hostPath的相关概念,YAML文件如下:

  
 <代码类=" language-yaml "> apiVersion: v1
  :豆荚
  元数据:
  名称:gysl-hostpath
  规范:
  nodeSelector:
  角色:测试
  容器:
  ——图片:ubuntu: 18.04
  名称:gysl-hostpath-container
  volumeMounts:
  - mountPath:/etc/gysl-test-01
  名称:gysl-02
  - mountPath:/etc/gysl-test-02
  名称:gysl-01
  - mountPath:/gysl-test-dir
  名称:gysl-dir
  参数:
  ——/bin/bash
  - - - - - - - c
  ——猫/etc/gysl-test-01/etc/gysl-test-02; ls - l/gysl-test-dir; 3600年睡眠
  卷:
  - hostPath:
  路径:/root/gysl-01
  名称:gysl-01
  - hostPath:
  路径:/root/gysl-02
  名称:gysl-02
  - hostPath:
  路径:/root/gysl-dir
  名称:gysl-dir  
  

在节点k8s-n1的/根目录下创建如下文件和目录:

  
 <代码类=" language-bash "> root@k8s-n1 ~ #噢
  总用量8
  -rw-r - r - 1根16根11月21日20:31 gysl-01
  -rw-r - r - 1根16根11月21日20:31 gysl-02
  drwxr-xr-x 2根51根11月21日32 gysl-dir  
  

两个文件的内容如下:

  
 <代码类=" language-bash "> root@k8s-n1 ~ #猫gysl-01
  这是gysl-01
  #猫gysl-02 root@k8s-n1 ~
  这是gysl-02  
  

目录gysl-dir的内容如下:

  
 <代码类=" language-bash "> root@k8s-n1 ~ #会gysl-dir/总用量12
  -rw-r - r - 1根16根11月21日32 gysl-01
  -rw-r - r - 1根16根11月21日32 gysl-02
  -rw-r - r - 1根16根11月21日32 gysl-03  
  

给节点k8s-n1指定一个标签,申请该吊舱:

  
 <代码类=" language-bash "> [root@k8s-m k8s-Volumes] # kubectl标签节点k8s-n1角色=测试
  节点/k8s-n1标记
  [root@k8s-m k8s-Volumes] # - f hostPath.yaml kubectl适用
  豆荚/gysl-hostpath创建
  [root@k8s-m k8s-Volumes] # kubectl pod - o宽
  姓名就绪状态重启年龄IP节点指定节点
  gysl-hostpath 1/1运行0 17 s 10.244.1.177 k8s-n1 & lt; none>
  [root@k8s-m k8s-Volumes] # gysl-hostpath kubectl日志
  这是gysl-02
  这是gysl-01
  共12个
  -rw-r - r - 1根根16 11月21日12:32 gysl-01
  -rw-r - r - 1根根16 11月21日12:32 gysl-02
  -rw-r - r - 1根根16 11月21日12:32 gysl-03  
  

这个例子中,我把名为gysl-02的hostPath文件挂载到了容器的文件/etc/gysl-test-01上,把名为gysl-01的hostPath文件挂载到了容器的文件/etc/gysl-test-02上,把名为gysl-dir的hostPath目录挂载到了/gysl-test-dir下。通过日志命令,我们不难发现,目标已经达成。

Kubernetes中,两种常见类型的体积深度实践