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 

      分布式存储,重要待补充

  • 相关阅读:
    codeforces 659F F. Polycarp and Hay(并查集+bfs)
    codeforces 659B B. Qualifying Contest(水题+sort)
    codeforces 659E E. New Reform(图论)
    codeforces 659D D. Bicycle Race(水题)
    sql_mode值的含义
    MySQL Query Cache
    Orchestrator安装
    脚本VIP更改为keepalive
    MHA软件下载地址
    MySQL中的事件调度器EVENT
  • 原文地址:https://www.cnblogs.com/9host/p/13476865.html
Copyright © 2011-2022 走看看