subpath子路径使用说明
更新时间:2022-06-16
1. 功能说明
在 BIE 中创建应用时,可以添加多个容器,一个应用对应边缘侧的一个Pod,1个Pod包含多个容器。这种场景下,会出现以下需求:
- 1个Pod当中的多个容器期望挂载同一个卷,实现卷的共享。
- 将1个卷当中的不同配置映射进不容的容器当中,实现卷的数据隔离。
一次我们引入了Kubernetes的子路径(subPath)功能:
- 子路径(subPath)用于指定所引用卷内的子路径,而不是其根路径
子路径(subPath)在BIE 2.3.4 版本开始支持
2. 操作指南
2.1 创建节点
在【节点管理】页面创建节点 subpath-node
2.2 创建配置项
在【配置管理】页面点击创建配置项 subpath-conf
,增加三对kv数据:
- key0:000
- key1:111
- key2:222
2.3 创建应用
- 在【应用管理】页面创建应用
subpath-app
- 创建卷conf,关联前面创建的配置项
subpath-conf
- 添加容器,增加两个标准容器
-
busybox0
- 镜像地址:busybox:1.33
-
卷配置
- 目录:/etc/test/data
- subpath:
key0
-
启动参数:
/bin/sh
-c
cat /etc/test/data;while true; do echo $(date); sleep 1; done
-
busybox1
- 镜像地址:busybox:1.33
-
卷配置
- 目录:/etc/test/data
- subpath:
key1
-
启动参数:
/bin/sh
-c
cat /etc/test/data;while true; do echo $(date); sleep 1; done
- 在目标节点处选择 单节点匹配 ,选择
subpath-node
2.4 节点安装
- 在 subpath-node 节点详情页获取安装命令
- 在边缘节点进行安装
- 执行以下命令,查看系统应用和用户应用部署情况
kubectl get po -nbaetyl-edge-system
kubectl get po -nbaetyl-edge
- 执行以下命令,查看Pod下两个容器的日志
kubectl logs -nbaetyl-edge subpath-app-xxxxx busybox0
kubectl logs -nbaetyl-edge subpath-app-xxxxx busybox1
- 可以看到配置项的两组kv都是挂载到对应容器的
/etc/test/data
文件。通过不同的subpath映射,/etc/test/data
文件被赋予了不同的值。 - 也可以通过以下命令进入对应容器内查看
/etc/test/data
文件的内容
kubectl exec -it -nbaetyl-edge subpath-app-xxxxx -c busybox0 -- /bin/sh