【发布时间】:2020-11-12 08:09:16
【问题描述】:
我的许多工作流程都使用 pod iam 角色。正如here 所记录的那样,我必须包含 fsGroup 才能让非根容器读取生成的身份令牌。问题是当我另外包含指向 cifs pv 的 pvc 时,由于超时,卷无法挂载。看起来这是因为 Kubelet 试图 chown 卷上的所有文件,这会花费太多时间并导致超时。问题……
- 当使用 hostPath 而不是 pvc 时,为什么 Kubernetes 不尝试 chown 所有文件?在我从 hostPath 切换到使用 pvcs 之前,所有工作流程都很好,现在发生了超时问题。
- 为什么这个问题发生在 cifs pvcs 而不是 nfs pvcs 上?我注意到 nfs pvcs 继续正常挂载,并且 fsGroup 似乎没有生效,因为我没有看到任何文件上的组 ID 更改。但是,由于超时问题,似乎无法再安装 cifs pvcs。如果重要的话,我正在使用本机 nfs pv lego 和 this cifs flexVolume plugin,到目前为止效果很好。
总体而言,这篇文章的目的是更好地了解 Kubernetes 如何确定在包含 fsGroup 时何时对卷上的所有文件进行 chown,以便在未来做出良好的设计决策。感谢您提供的任何帮助!
Kubernetes Chowing 文件参考
https://docs.microsoft.com/en-us/azure/aks/troubleshooting
由于 gid 和 uid 默认挂载为 root 或 0。如果是 gid 或 uid 设置为非 root,例如 1000,Kubernetes 将使用 chown 来 更改该磁盘下的所有目录和文件。这个操作可以 非常耗时,并且可能会导致安装磁盘非常慢。
默认情况下,Kubernetes 会递归更改所有权和权限 使每个卷的内容与 a 中指定的 fsGroup 相匹配 挂载该卷时 Pod 的 securityContext。对于大容量, 检查和更改所有权和权限可能需要很多时间 时间,减慢 Pod 启动速度。
【问题讨论】:
-
你好 Kubernetes 社区——如果有人对此有任何想法,请告诉我。我曾尝试在 Kubernetes 讨论论坛中提问,并且我正要在 Kubernetes github 存储库本身上提问——但它指出应该在此处提出与支持相关的问题。我还尝试与非常了解 Kubernetes 的 AWS 代表交谈,总的来说,到目前为止,没有人能够解释这是如何工作的
标签: kubernetes persistent-volumes persistent-volume-claims