你真的搞清楚k8s的subpath了吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你真的搞清楚k8s的subpath了吗?相关的知识,希望对你有一定的参考价值。

参考技术A 我们经常会使用subpath,当我们直接挂载一个存储或者configmap到一个目录后,目录下面原有的内容将会被覆盖。比如,我们只想替换nginx容器里面的 /etc/default.conf 这个文件,但如果通过configmap 直接挂载到 /etc 目录是不行的,会直接覆盖整个目录,导致原有的文件被覆盖了。此时,就需要借助subpath了。

通过subpath我们可以只挂载一个文件到/etc 目录下,从而避免全目录覆盖,但这里也要一个小瑕疵,就是这个文件后续的变化不会更新到容器里面了,这点需要注意。

回到主题,那么这个subpath是如何实现的? 我们先看这样一个例子。

当我们登录到容器里面后,可以看到 /mnt/aaa/bbb 和 /mnt/ccc/ddd 这两个目录,在宿主机上可以看到 /srv/aaa/bbb 和 /srv/aaa/eee目录。这个subpath 其实是我们存储的subpath,k8s 会在存储的目录下找寻这个文件或者目录,如果不存在,则会创建。我们看一下k8s代码实现。

如果存储里面已经包含了subpath路径,比如 NAS存储子目录已经存在,或者configmap 某个key 已经存在,此时就不会创建这个文件或者目录,反之,如果不存在,则会首先创建这个目录。

后续只是将这个subpath路径 bind mount 到容器里面的路径,和其他存储挂载没啥差别。

以上是关于你真的搞清楚k8s的subpath了吗?的主要内容,如果未能解决你的问题,请参考以下文章

搞清楚时序与频率的区别了吗?哪个对内存性能影响大?

MySQL 全局锁表级锁行级锁,你搞清楚了吗?

MySQL 全局锁表级锁行级锁,你搞清楚了吗?

chr(10)" ""\n"r" " 你搞清楚了吗?

linux内核网络参数tcp_tw_recycle 和 tcp_tw_reuse 你搞清楚了吗?

JCLSLF4JLog4JLog4J2LogBack和JUL之间的关系,你搞清楚了吗?