k8s subpath

参考:https://www.cnblogs.com/gdut1425/p/13112176.html

一.使用场景一

一个pod中有多个容器挂载不同目录或者一个容器挂载不同目录,但只使用了一个volumes的情况

  1. 因为volumeMounts都使用了data-volume,当在/ttt下新建文件,/home2下也会出现相同文件,相当于都使用了/vvv/dd下的,没有数据隔离
  2. 解决方法:加上subPath,会在/vvv/dd下生成mn和nn两个文件夹,用来分别对应/ttt和/home2下的数据
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  hostNetwork: true
  containers:
  - name: busybox
    image: busybox:1.34
    command: ["/bin/sh","-c","touch /ttt/a.txt;sleep 36000"]
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - mountPath: /ttt
      name: data-volume
      #subPath: mn     
    - mountPath: /home2
      name: data-volume
      #subPath: nn
  volumes:
  - name: data-volume
    hostPath:
      path: /vvv/dd
      type: DirectoryOrCreate
  restartPolicy: Always

二.使用场景二

不想覆盖pod中目录,只想改变某个文件,用configmap+subpath

创建configmap:kubectl create configmap nginxconf --from-file=/root/nginx.conf

piVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx 
  name: ssx-nginx-dm
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template: 
    metadata:
      labels: 
        app: nginx
    spec: 
      containers: 
      - name: ssx-nginx-c
        image: nginx:1.17.1 
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80 
        volumeMounts: 
        - name: volume 
          #须写绝对路径,这样不会覆盖/etc/nginx目录,只会覆盖nginx.conf
          #如果写相对路径,且不加subpath会覆盖/etc/nginx目录
          mountPath: /etc/nginx/nginx.conf 
          subPath: nginx.conf #文件名称
      volumes:
      - name: volume 
        configMap:
          name: nginxconf
posted @   MISF  阅读(607)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
     JS过度和变形效果演示   
  
    html5.png   
点击右上角即可分享
微信分享提示