Kubernetes概念详解之:subPath字段的使用原理及案例分析

2023-10-29 07:36

本文主要是介绍Kubernetes概念详解之:subPath字段的使用原理及案例分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Kubernetes概念详解之:subPath字段的使用原理及案例分析

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

这句话理解了,基本就懂subPath怎么用了,比如我们要替换nginx.cnf, 挂载的ConfigMap是一个文件夹,如果没有subPath,那/etc/nginx/nginx.cnf将变成一个文件夹,subPath是用来指定卷内子路径的!

subPath的使用有两种情况:

  1. 作为volumes使用时,subPath代表存储卷的子路径

  2. 作为configmap/secret使用时,subPath代表configmap/secrect的子路径

1. 作为volumes使用时

yaml文件

apiVersion: v1
kind: Pod
metadata:name: testpod0
spec:containers:- name: testcimage: busyboxcommand: ["/bin/sleep","10000"]volumeMounts:- name: datamountPath: /opt/data    # 挂载的路径subPath: data           # volume的子路径mountPath: /opt/modelsubPath: modelvolumes:- name: datahostPath:path: /opt/

上述情况下,数据卷使用了hostPath的类型,并定义path为宿主机的/opt/路径。在容器的volumeMounts挂载配置上,使用了subPath配置来指定将数据卷的/opt/data子目录和/opt/model子目录,分别挂载到容器的/opt/data目录和/opt/model目录。

使用数据卷内子路径的好处就是可以在容器中灵活地选择需要挂载的数据卷的部分内容,避免将整个数据卷都挂载到容器中造成资源浪费,并且可以方便地控制容器中的文件路径和内容。

2. 作为configmap/secrect使用时

以文件形式挂载configMap以及挂载secret和挂载普通文件同样道理,可以把 configMap和secret当做卷的根目录,configMap和secret中的key作为 subpath 指定的文件名。此时若是 configMap和secret中key名称为subpath的值,以及和volumeMounts.mountPath文件名保持一致,那么容器中看到挂载的文件就是configMap和secret的key。

apiVersion: v1
kind: ConfigMap
metadata:name: config-test
data:config.ini: "hello"config.conf: "nihao"

单独挂载一个key为文件

apiVersion: v1
kind: Pod
metadata:name: testpod
spec:containers:- name: testcimage: busyboxcommand: ["/bin/sleep","10000"]volumeMounts:- name: config-testmountPath: /etc/config.ini   # 最终在容器中的文件名subPath: config.ini  #要挂载的confmap中的key的名称volumes:- name: config-testconfigMap:name: config-test

上述yaml配置文件中,volumes属性将configMap作为数据卷,并在容器中设置了mountPath: /etc/config.inisubPath: config.ini。其中subPath指定了容器挂载点要获取的configMap键值,mountPath指明了该键值的挂载路径。

上述这种将subPath获取的key值与挂载路径的文件名写成一致的书写方式,是写subPath子路径的一种比较标准的写法。当然,这个挂载的文件名和subPath的key值可以写成不同的。

挂载多个key为文件:

apiVersion: v1
kind: Pod
metadata:name: testpod2
spec:containers:- name: testcimage: busyboxcommand: ["/bin/sleep","10000"]volumeMounts:- name: config-testmountPath: /etc/config.ini   # 最终在容器中的文件名subPath: config.ini  #要挂载的confmap中的key的名称mountPath: /etc/config.conf   # 最终在容器中的文件名subPath: config.conf  #要挂载的confmap中的key的名称volumes:- name: config-testconfigMap:name: config-test

多个container挂载不同的key:

apiVersion: v1
kind: Pod
metadata:name: testpod1
spec:containers:- name: testcimagePullPolicy: Neverimage: busyboxcommand: ["/bin/sleep","10000"]volumeMounts:- name: config-testmountPath: /etc/config/config.inisubPath: config.ini- name: testc1imagePullPolicy: Neverimage: busyboxcommand: ["/bin/sleep","10000"]volumeMounts:- name: config-testmountPath: /etc/config/config.confsubPath: config.confvolumes:- name: config-testconfigMap:name: config-testitems:- key: config.inipath: config.ini- key: config.confpath: config.conf

这篇关于Kubernetes概念详解之:subPath字段的使用原理及案例分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299184

相关文章

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

SQL Server中的PIVOT与UNPIVOT用法具体示例详解

《SQLServer中的PIVOT与UNPIVOT用法具体示例详解》这篇文章主要给大家介绍了关于SQLServer中的PIVOT与UNPIVOT用法的具体示例,SQLServer中PIVOT和U... 目录引言一、PIVOT:将行转换为列核心作用语法结构实战示例二、UNPIVOT:将列编程转换为行核心作用语

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs