【问题标题】:Debugging nfs volume "Unable to attach or mount volumes for pod"调试 nfs 卷“无法为 pod 附加或挂载卷”
【发布时间】:2021-11-26 10:37:31
【问题描述】:

根据https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs 的示例,我已经设置了一个为RMW pv 提供服务的nfs 服务器

此设置在许多生产环境中对我来说都很好,但在某些特定的 GKE 集群实例中,挂载在 pod 重新启动后停止工作。

从 kubelet 日志中我看到以下重复多次

无法为 pod“api-bf5869665-zpj4c_default(521b43c8-319f-425f-aaa7-e05c08282e8e)”附加或挂载卷:未挂载的卷=[shared-mount],未附加的卷=[geekadm-net deployment-role- token-6tg9p shared-mount]:等待条件超时;跳舱

同步 pod 521b43c8-319f-425f-aaa7-e05c08282e8e 时出错(“api-bf5869665-zpj4c_default(521b43c8-319f-425f-aaa7-e05c08282e8e)”),跳过:未挂载的卷=[共享挂载],未附加的卷= [geekadm-net deployment-role-token-6tg9p shared-mount]:等待条件超时

在任何节点上手动安装 nfs 都可以正常工作:mount -t nfs <service ip>:/ /tmp/mnt

如何进一步调试问题?除了 kubelet 之外,我还可以查看其他日志吗?

【问题讨论】:

  • 删除 nfs-server 服务和 pvc 并重新创建它们可以解决问题。还是不知道下次怎么调试。
  • 向谷歌报告问题。请参阅link 提出问题。在该链接中,点击创建新的 Google Kubernetes Engine 问题并提出问题。

标签: kubernetes google-kubernetes-engine mount nfs persistent-volumes


【解决方案1】:

如果 pod 因为挂载太慢而被踢出节点,您可能会在日志中看到类似的消息。

Kubelets 甚至会在日志中告知此问题。
来自 Kubelets 的示例日志:
为 /var/lib/kubelet/pods/c9987636-acbe-4653-8b8d- 设置卷所有权 aa80fe423597/volumes/kubernetes.io~gce-pd/pvc-fbae0402-b8c7-4bc8-b375- 1060487d730d 和 fsGroup 设置。如果卷有很多文件,那么设置 卷所有权可能很慢,请参阅https://github.com/kubernetes/kubernetes/issues/69699

原因:
pod.spec.securityContext.fsGroup 设置使 kubelet 对为给定 pod 挂载的卷中的所有文件运行 chown 和 chmod。在包含大量文件的大卷的情况下,这可能是一件非常耗时的事情。

默认情况下,Kubernetes 会递归地更改每个卷内容的所有权和权限,以在挂载该卷时匹配 Pod 的 securityContext 中指定的 fsGroup。来自document

解决方案:
可以通过以下方式处理。

  1. 减少卷中的文件数。
  2. 停止使用 fsGroup 设置。

【讨论】:

    猜你喜欢
    • 2022-07-27
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2018-07-28
    • 2018-06-12
    相关资源
    最近更新 更多