我的编程空间,编程开发者的网络收藏夹
学习永远不晚

k8s ConfigMap中subPath字段和items字段怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

k8s ConfigMap中subPath字段和items字段怎么使用

本文小编为大家详细介绍“k8s ConfigMap中subPath字段和items字段怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“k8s ConfigMap中subPath字段和items字段怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Kubernetes中什么是subPath

有时,在单个 Pod 中共享卷以供多方使用是很有用的。volumeMounts.subPath 属性可用于指定所引用的卷内的子路径,而不是其根路径。

这句话理解了,基本就懂subPath怎么用了,比如我们要替换nginx.cnf, 挂载的ConfigMap是一个文件夹,如果没有subPath,那/etc/nginx/nginx.cnf将变成一个文件夹,subPath是用来指定卷内子路径的! 按照逻辑subPath应该在volumes下进行设置会比较合理,这可能就是它不好理解的根本原因。

什么时候应该使用 subPath

  • 场景一: 一个共享卷, 挂载多个路径.

  • 场景二: ConfigMap或Secret挂载到特定目录的特定路径, 而该目录下已经有其他文件且不希望被覆盖掉

1. subPath字段的作用

在Linux中,将目录A挂载到目录B,则目录B原有的文件都会被目录A下的文件覆盖。

那么在k8s中,如何将configmap挂载到容器中某个目录的文件中呢?答案是使用subPath

subPath可以将configMap和secret作为文件挂载到容器中而不覆盖挂载目录下的文件。

话不多说,直接看一个例子。

制作案例镜像:

dockerfile:

FROM busyboxWORKDIR /workspaceRUN touch a.txt b.txt c.txt

切换到dockerfile目录下执行:

docker build -t mydocker:latest .docker tag mydocker:latest zengfeng666/mydocker:1.0docker push zengfeng666/mydocker:1.0

configmap.yaml

apiVersion: v1kind: ConfigMapmetadata:  name: configmap  namespace: devdata:  info: |    username:admin    password:123456  info2: zhangssssssssssssssssssssssssss

pod1.yaml

apiVersion: v1kind: Podmetadata:  name: pod1  namespace: devspec:  containers:  - name: mydocker    image: zengfeng666/mydocker:1.0    command: ["/bin/sh", "-c", "while true; do sleep 2; done;"]    volumeMounts:    - name: config      mountPath: /workspace  volumes:  - name: config    configMap:      name: configmap

pod2.yaml

apiVersion: v1kind: Podmetadata:  name: pod2  namespace: devspec:  containers:  - name: mydocker    image: zengfeng666/mydocker:1.0    command: ["/bin/sh", "-c", "while true; do sleep 2; done;"]    volumeMounts:    - name: config      mountPath: /workspace/info      subPath: info    - name: config      mountPath: /workspace/info2      subPath: info2  volumes:  - name: config    configMap:      name: configmap
$ kubectl create -f pod1.yaml$ kubectl create -f pod2.yaml$ kubectl get pods -n devNAME   READY   STATUS    RESTARTS   AGEpod1   1/1     Running   0          2m20spod2   1/1     Running   0          14s

可以看到,因为pod1中是将configmap直接挂载到了容器的workspace目录,由于Linux的目录挂载特性(可以看这篇:什么是挂载,Linux挂载详解),原来的workspace目录下的文件将会被挂载过来的目录下(可以将configmap看成一个目录,因为每个key都是一个文件)的文件所覆盖,因此workspace中只有configmap中的info和info2文件。如果不想被覆盖,则要以文件的方式进行挂载,如pod2.yaml中所示,注意mountPath和subPath的写法,subPath此时指的就是configMap中的key,也就是文件名。

k8s ConfigMap中subPath字段和items字段怎么使用

k8s ConfigMap中subPath字段和items字段怎么使用

2. items字段的作用

假如不想以key名作为配置文件名可以引入items 字段,在其中逐个指定要用相对路径path替换的key:

     volumes:      - name: config        configMap:          name: configmap          items:          - key: info         # 原文件名(key的名称)            path: userinfo    # 修改之后的文件名(key的名称)          - key: info2            path: userinfo2

items还有一个作用,就是只有items下的key对应的文件会被挂载到容器中。

比如pod1.yaml中不想把info和info2都挂载到workspace目录下,而只需要挂载info到workspace目录下,则可以将pod1.yaml的volumes字段修改为:

     volumes:      - name: config        configMap:          name: configmap          items:          - key: info                     path: info

读到这里,这篇“k8s ConfigMap中subPath字段和items字段怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

k8s ConfigMap中subPath字段和items字段怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

k8s ConfigMap中subPath字段和items字段怎么使用

本文小编为大家详细介绍“k8s ConfigMap中subPath字段和items字段怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“k8s ConfigMap中subPath字段和items字段怎么使用”文章能帮助大家解决疑惑,下
2023-07-05

详解k8sConfigMap中subPath字段和items字段

volumeMounts.subPath属性可用于指定所引用的卷内的子路径,而不是其根路径,这篇文章主要介绍了详解k8sConfigMap中subPath字段和items字段,需要的朋友可以参考下
2023-03-02

Mybatis中怎么使用sum对字段求和

这篇文章主要讲解了“Mybatis中怎么使用sum对字段求和”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis中怎么使用sum对字段求和”吧!使用sum对字段求和如下sql,为计算
2023-06-29

thinkphp中怎么调用mysql字段

这篇文章主要介绍“thinkphp中怎么调用mysql字段”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp中怎么调用mysql字段”文章能帮助大家解决问题。一、创建数据库表和数据在进行
2023-07-06

使用awk怎么输出文本中的字段和列

这期内容当中小编将会给大家带来有关使用awk怎么输出文本中的字段和列,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。例 1:我创建了一个名为 tecmintinfo.txt 的文本文件。# vi tecmi
2023-06-12

MySql中怎么使用json_extract函数处理json字段

这篇“MySql中怎么使用json_extract函数处理json字段”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySq
2023-06-30

Oracle中怎么使用distinct实现多字段去重

在Oracle中,可以使用DISTINCT关键字实现多字段去重。DISTINCT关键字用于指示查询结果只返回不重复的行。例如,假设有一个名为"employees"的表,其中包含"first_name"和"last_name"字段,现在我们想
2023-09-13

mybatisplus之自动映射字段怎么使用

这篇“mybatisplus之自动映射字段怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatisplus之自动
2023-07-05

awk命令中的字段、记录和变量怎么用

这篇文章将为大家详细讲解有关awk命令中的字段、记录和变量怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(
2023-06-28

Java中的静态字段和静态方法怎么用

这篇文章主要介绍了Java中的静态字段和静态方法怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先看看下面这一串代码:public class Main { pub
2023-06-29

怎么利用php中mysqli_num_fields()查询字段数

这篇文章主要介绍怎么利用php中mysqli_num_fields()查询字段数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Ja
2023-06-14

MySQL中JSON字段数据类型怎么用

本文小编为大家详细介绍“MySQL中JSON字段数据类型怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL中JSON字段数据类型怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言JSON 类型
2023-07-02

怎么使用java反射获取字段类型

要使用Java反射获取字段类型,可以按照以下步骤进行:1. 获取对应类的Class对象,可以通过`Class.forName()`方法传入类的全限定名获取,或者直接使用`类名.class`获取。2. 使用Class对象的`getDeclar
2023-10-10

oracle新增字段的sql语句怎么使用

要在Oracle数据库中新增字段,可以使用ALTER TABLE语句。以下是示例:ALTER TABLE table_nameADD column_name data_type;其中,table_name是要添加字段的表名,column
oracle新增字段的sql语句怎么使用
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录