zoukankan      html  css  js  c++  java
  • k8s 存储卷

    • 作用

    1、持久存放数据

    2、同一Pod中各容器间共享数据

    • 特点

    Kubernetes 卷具有明确的生命周期——与包裹它的 Pod 相同。 因此,卷比 Pod 中运行的任何容器的存活期都长,在容器重新启动时数据也会得到保留。 当然,当一个 Pod 不再存在时,卷也将不再存在。 也许更重要的是,Kubernetes 可以支持许多类型的卷,Pod 也能同时使用任意数量的卷。

    卷的核心是包含一些数据的目录,Pod 中的容器可以访问该目录。 特定的卷类型可以决定这个目录如何形成的,并能决定它支持何种介质,以及目录中存放什么内容。

    使用卷时, Pod 声明中需要提供卷的类型 (.spec.volumes 字段)和卷挂载的位置 (.spec.containers.volumeMounts 字段).

    • 类型

    configMap

      主要作用并不是为pod提供存储空间,而是为pod或容器注入配置信息

    创建configMap
    
    基本格式:
    kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]
    [options]
    --from-literal:通过命令行创建
    --from-file:通过文件创建
    --from-env-file:根据env文件创建    
        env 文件中的每一行必须为 VAR = VAL 格式
        当使用多个 --from-env-file 来从多个数据源创建 ConfigMap 时,仅仅最后一个 env 文件有效
    
    1、根据文件创建
    kubectl create configmap configmap_name --from-file=path/to/file
    其中configMap名称为指定的configmap_name,key值为文件名,value值为文件内容
    2、根据文件夹创建
    kubectl create configmap configmap_name --from-file=dir/to/file
    其中configMap名称为指定的configmap_name,key值为各个文件名,value值为指定文件的内容
    3、根据文字创建
    kubectl create configmap configmap_name --from-literal=key1=value1 --from-literal=key2=value2
    
    使用configMap
    1、通过挂载存储卷方式
        通过spec.volumes.configMap引用,其中key为文件名,value为文件内容。如果只引用个别key使用spec.volumes.configMap.items引用
        使用此方法注入配置信息可以实时同步数据,但如果想配置生效需要另外配置reload策略。
    2、通过变量方式传入
        通过spec.containers[].env[].valueFrom引用。
        使用此方法注入配置信息不能实时同步数据。
    View Code

    secret

      主要作用并不是为pod提供存储空间,而是为pod或容器注入配置信息

    Secret 是一种包含少量敏感信息,例如密码、令牌或密钥的对象。 将这些信息放在 secret 中比放在 Pod 的定义或者容器镜像 中来说更加安全和灵活。
    Secret 包含两个映射:data 和 stringData。 data 字段用于存储使用 base64 编码的任意数据。 提供 stringData 字段是为了方便,允许您用未编码的字符串提供机密数据。

    secret有3种类型
    1、docker-registry 一般保存docker-registry的认证信息
      pod创建时若连接到私有仓库中需要认证,则要创建专用的secret (docker-registry)类型的pod.spec.imagePullSecrets字段中需要指明secret的name 
    2、generic 通用的,一般保存一些密码数据
      generic方式的secret,里面的键值虽说不是铭文,但是解码的技术手段要求不高。(echo *** | base64 -d)对于密码类型的信息,最好用数据卷挂载方式来实现信息的注入,然后以文件形式挂载到挂载点,设置权限。
    3、tls 一般保存私钥或证书(需了解

    创建及使用方法与configMap类似

     

     emptyDir

      pod结束,卷中数据永久丢失

      当 Pod 指定到某个节点上时,首先创建的是一个 emptyDir 卷,并且只要 Pod 在该节点上运行,卷就一直存在。尽管 Pod 中的容器挂载 emptyDir 卷的路径可能相同也可能不同,
    但是这些容器都可以读写 emptyDir 卷中相同的文件。
    注意: 容器崩溃并不会导致 Pod 被从节点上移除,因此容器崩溃时 emptyDir 卷中的数据是安全的。 emptyDir 的一些用途: 缓存空间,例如基于磁盘的归并排序。 为耗时较长的计算任务提供检查点,以便任务能方便地从崩溃前状态恢复执行。 在 Web 服务器容器服务数据时,保存内容管理器容器获取的文件。

      

    hostPath

      将主机节点文件系统上的文件或目录挂载到您的 Pod 中

    NFS

      使用nfs网络存储卷永久保存数据

    Cephfs 

      分布式存储,重要待补充

  • 相关阅读:
    How to function call using 'this' inside forEach loop
    jquery.validate.unobtrusive not working with dynamic injected elements
    Difference between jQuery.extend and jQuery.fn.extend?
    Methods, Computed, and Watchers in Vue.js
    Caution using watchers for objects in Vue
    How to Watch Deep Data Structures in Vue (Arrays and Objects)
    Page: DOMContentLoaded, load, beforeunload, unload
    linux bridge
    linux bridge
    EVE-NG网卡桥接
  • 原文地址:https://www.cnblogs.com/9host/p/13476865.html
Copyright © 2011-2022 走看看