kubernetes之subpath的使用
一.subpath简单说明
在Pod中共享卷以供多方使用是很有用的。VolumeMounts.subPath属性可用于指定所引用的卷内的子路径,而不是其根路径。
二.subpath使用场景
- 1个Pod中可以有多个容器,这里将不同容器的路径挂载在存储卷volume的子路径,这种场景需要使用到subpath。
- volume支持将configMap/secret挂载到容器的路径,但是会覆盖容器路径下原有的文件。如何支持选定configmap/secret的key-value挂载到容器中,且不会覆盖掉原目录下的文件,这个时候可以用subpath。
2.1 存储卷挂载
# 这里我们提前创建好一个PVC-CLAIM名称为pvc-subpath
[root@k8s001 subpath]# cat pvc.yaml
---
kind: PersistentVolume
apiVersion: v1
metadata:
name: pv-subpath
labels:
release: stable
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
hostPath:
path: /mnt/yuhaohao # 这个是宿主机真实存在的目录
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-subpath
namespace: default
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
[root@k8s001 subpath]# kubectl apply -f pvc.yaml
[root@k8s001 ~]# cat subpath.yaml
[root@k8s001 subpath]# cat subpath.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-subpath-yuhaohao
spec:
containers:
- name: redis-container
image: redis
volumeMounts:
- mountPath: /var/lib/redis # 容器1的挂载目录
name: subpath-volume # 这里指定pvc的volume名称
subPath: redispvc # 存储卷pvc-subpath要挂载的/mnt/yuhaohao的子目录
- name: nginx-container
image: nginx
volumeMounts:
- mountPath: /var/www/nginx # 容器2的挂载目录
name: subpath-volume # 这里指定pvc的volume名称
subPath: nginxpvc # 存储卷pvc-subpath要挂载的/mnt/yuhaohao的子目录
volumes:
- name: subpath-volume
persistentVolumeClaim:
claimName: pvc-subpath # PVC的名字
[root@k8s-master zhanglei]# kubectl create -f subpath.yaml
[root@k8s001 subpath]# kubectl get pod
NAME READY STATUS RESTARTS AGE
pod-subpath-yuhaohao 2/2 Running 0 106s
[root@k8s001 yuhaohao]# pwd
/mnt/yuhaohao
[root@k8s001 yuhaohao]# ls
nginxpvc redispvc
2.2 configmap挂载
2.2.1 创建configmap
[root@k8s001 subpath]# cat configmap.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-subpath
namespace: default
data:
example.property.1: hello # key-value键值对
example.property.2: world
example.property.file: |-
property.1=value-1
property.2=value-2
property.3=value-3
[root@k8s001 subpath]# kubectl apply -f configmap.yaml
configmap/configmap-subpath created
[root@k8s001 subpath]# kubectl get cm
NAME DATA AGE
configmap-subpath 3 35s
[root@k8s001 subpath]# cat pod-configmap.yaml
apiVersion: v1
kind: Pod
metadata:
name: configmap-subpath-test
labels:
purpose: configmap-subpath-test
spec:
containers:
- name: configmap-subpath-test
image: nginx
volumeMounts:
- name: config-volume
mountPath: /etc/nginx/example.property.1 # 容器挂载的目录路径为容器的/etc/nginx,文件名为example.property.1
subPath: example.property.1 # 将key名称作为文件名,hello作为文件内容
volumes:
- name: config-volume
configMap:
name: configmap-subpath # 指定使用哪个CM
[root@k8s001 subpath]# kubectl apply -f pod-configmap.yaml
pod/configmap-subpath-test created
[root@k8s001 subpath]# kubectl get pod
NAME READY STATUS RESTARTS AGE
configmap-subpath-test 1/1 Running 0 7s
[root@k8s001 subpath]# kubectl exec configmap-subpath-test cat /etc/nginx/example.property.1
hello
参考链接:https://www.cnblogs.com/gdut1425/p/13112176.html
kubernetes之subpath的使用的更多相关文章
- kubernetes之configmap,深度解析mountPath,subPath,key,path的关系和作用
参考:https://www.cnblogs.com/breezey/p/6582082.html 我们知道,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如说在web的程序中,需要连接数据库, ...
- Kubernetes volumes简介
容器中的磁盘文件生命周期比较短暂,在一些比较复杂的容器应用中会产生一些问题.一.容器crash后,kubelet会重启该容器,但这些文件会丢失掉.二.pod中的多个容器经常需要共享文件.因此,Kube ...
- kubernetes之监控Operator部署Prometheus(三)
第一章和第二章中我们配置Prometheus的成本非常高,而且也非常麻烦.但是我们要考虑Prometheus.AlertManager 这些组件服务本身的高可用的话,成本就更高了,当然我们也完全可以用 ...
- kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)
Prometheus介绍 Prometheus是一个最初在SoundCloud上构建的开源监控系统 .它现在是一个独立的开源项目,为了强调这一点,并说明项目的治理结构,Prometheus 于2016 ...
- kubernetes系列之ConfigMap使用方式
作用理解 核心用途就是容器和配置的分离解耦. 如启用一个mysql容器,mysql容器重要的文件有两部分,一部分为存储数据文件,一部分为配置文件my.cnf,存储数据可以用持久存储实现和容器的分离解耦 ...
- Kubernetes之存储
存储卷概述 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态) ...
- Kubernetes中的Configmap和Secret
本文的试验环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 应用场景:镜像往往是一个应用的基础,还有很多需要 ...
- K8S学习笔记之Kubernetes数据持久化方案
在开始介绍k8s持久化存储前,我们有必要了解一下k8s的emptydir和hostpath.configmap以及secret的机制和用途. 0x00 Emptydir EmptyDir是一个空目录, ...
- 微服务开发有道之把项目迁移到Kubernetes上的5个小技巧
我们将在本文中提供5个诀窍帮你将项目迁移到Kubernetes上,这些诀窍来源于过去12个月中OpenFaas社区的经验.下文的内容与Kubernetes 1.8兼容,并且已经应用于OpenFaaS ...
- kubernetes 实战5_命令_Assign Pods to Nodes&Configure a Pod to Use a ConfigMap
Assign Pods to Nodes how to assign a Kubernetes Pod to a particular node in a Kubernetes cluster. Ad ...
随机推荐
- Go语言之sync包 WaitGroup的使用
WaitGroup 是什么以及它能为我们解决什么问题? WaitGroup在go语言中,用于线程同步,单从字面意思理解,wait等待的意思,group组.团队的意思,WaitGroup就是指等待一组, ...
- Windows下PostgreSQL设置远程连接以及备份和恢复数据库
一.设置远程连接 修改安装路径下的postgresql.conf,定位到listen_address = '*',确保其值为'*'(Windows下默认是这样的,可不用修改) 修改安装路径下的pg_ ...
- Oracle DB 关于CONNECT、RESOURCE 和DBA 角色权限
授予角色的语法: grant <object/system privilege> to <role name>; 一般情况下,在新建数据库用户后,都会习惯性的给用户授权CONN ...
- for循环的注意事项
1.注意事项! 实操 可以看见上图,当{}里的循环走完后,i还存在,但是a消失了,因此{}里的变量会在每一次循环结束后释放 . 这也是为什么之前我们打印a会出错的原因:a早就已经从内存中释放了,还怎么 ...
- 【Unity】改变游戏运行时Window的窗口标题
[Unity]改变游戏运行时Window的窗口标题 零.需求 Unity打包好的Windows程序,启动后如何更改窗口标题?因为看着英文的感觉不太好,故有此想法.什么?你说为啥不改项目产品名?产品名会 ...
- github release 下载文件慢、或者失败的解决方法
Free Download Manager 下载工具可以解决Github 下载缓慢或失败问题. 扫描下方二维码,关注公众号 回复github,即可获取下载链接.
- 新装ubuntu电脑的一些调整
必要命令的安装 必要开发工具的安装 更换国内软件源 /etc/apt/sources.list文件,后面添加下面地址用来添加阿里源 deb http://mirrors.aliyun.com/ubun ...
- BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource
在练习中遇到的,我的情况是: 打算在common中建立student实体类,想到可能其他模块也会用到这个类,但是一些注解比如,@TableId等等需要用到mybatis-plus的依赖,所以我就把依赖 ...
- luat编程MQTT的自动重连失败分析
正确用法 查看代码 --- 模块功能:MQTT客户端处理框架 -- @author openLuat -- @module mqtt.mqttTask -- @license MIT -- @copy ...
- Mono GC
1.虽然是stw但mark阶段可以concurrent 2.并行mark就需要写屏障 3.unity的gc也不是扫描整个堆内存 https://schani.wordpress.com/2012/12 ...