91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2023-03-02 17:04:22 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“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 busybox
WORKDIR /workspace
RUN touch a.txt b.txt c.txt

切換到dockerfile目錄下執行:

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

configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap
  namespace: dev
data:
  info: |
    username:admin
    password:123456
  info2: zhangssssssssssssssssssssssssss

pod1.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod1
  namespace: dev
spec:
  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: v1
kind: Pod
metadata:
  name: pod2
  namespace: dev
spec:
  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 dev
NAME   READY   STATUS    RESTARTS   AGE
pod1   1/1     Running   0          2m20s
pod2   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字段怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

都江堰市| 土默特右旗| 周口市| 贵溪市| 通州市| 锡林郭勒盟| 澳门| 抚远县| 宁德市| 军事| 景德镇市| 富源县| 安泽县| 上犹县| 宁明县| 黄平县| 永寿县| 吴桥县| 普兰店市| 绍兴县| 汤原县| 沅陵县| 遂川县| 海安县| 调兵山市| 图们市| 红桥区| 河津市| 兰州市| 宜昌市| 游戏| 永康市| 香格里拉县| 东莞市| 柳林县| 长宁县| 麦盖提县| 孟州市| 若尔盖县| 大港区| 辽宁省|