Kubernetes 疑难杂症汇总

Posted lubanseven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes 疑难杂症汇总相关的知识,希望对你有一定的参考价值。


部署报错:The requested fsGroup is 123, but the volume local-pv-c7ef339e has GID 1000710000. The volume may not be shareable.

问题描述:

部署 CNF(pod 集群) 时,pod 中的 container crash,events 报错:

Warning AlreadyMountedVolume 11m kubelet The requested fsGroup is 123, but the volume local-pv-c7ef339e has GID 1000710000. The volume may not be shareable.

问题分析:

为什么 volume 这里会有 GID 1000710000,这个 GID 又是从哪来的呢?
查阅文档结合自己的理解,volume 本身是没有 GID 的,对于 volume 来说只有绑定的 uid 限制。既然不是 volume 自带的,那这个 GID 从何而来呢?

查看 volume mount 到 container 的目录,发现文件组权限都是 GID 1000710000。而 mount 的 pod fsGroup 是 123(uid, gid 都不是 1000710000)。

那么,大胆猜测会不会有另外一个 container mount 了这个 volume 到相同目录,并且是在 crash container 创建之前 mount 的。这样就能解释,这个文件实际的拥有者是另外
一个 container。

顺着这个思路往下走,是哪个 container 呢?创建的 CNF 通过 helm chart 部署的,在这个 pod 创建之前的 pod,会不会是 helm hook 调用的 pre pod,查看 pod 果然有一个 pod
mount 了这个 volume,查看该 pod 的 securityContext 发现正是 GID 1000710000!

结论:

helm chart 部署 pod 时,helm hook 调用的 pre pod mount 了主 pod 的 volume,而 pre pod 和主 pod 的用户权限不一致,并且和主 pod mount 的是同一目录,导致主 pod 启动时,
尝试读写 volume 失败,crash。

解决方式:

将 pre pod 的 securityContext 设置成和主 pod 一致。


以上是关于Kubernetes 疑难杂症汇总的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes基础自学系列 | 汇总

每天5分钟玩转Kubernetes | 汇总

Kubernetes学习总结——Kubernetes 常见面试题汇总

Kubernetes学习总结——Kubernetes 常见面试题汇总

Kubernetes之yaml文件详解(汇总-详细)

Kubernetes 错误汇总(持续更新)