Kubernetes 操作员可以查看 PVC 中的文件吗

问题描述

kubernetes 操作员是否可以查看持久卷声明 (PVC) 中的文件? 我正在创建一个 k8s Golang 操作员来部署和管理我的应用程序。应用程序 pod 将有一个已安装的卷。如果 PVC 上的配置文件发生更改,我需要能够停止和启动 pod。这可能吗?我可以在文档中看到我可以为 PVC 添加一个观察者,但不确定这是否也观察文件更新或更改。

解决方法

正如评论中提到的,您需要一个具有 ReadWriteMany 功能的卷提供程序,但可以肯定。这不是大多数操作员的工作方式,因此您必须自己管理文件监视,但有一些很好的低级 inotify 绑定可用,我认为 Viper 可以自行重新加载。将其与控制器运行时中的通道观察以及与注入协调事件的文件观察接口的后台 goroutine 结合起来,您应该一切准备就绪。

也就是说,除非绝对必要,否则应避免使用 RWX 卷,因为所有现有的提供程序(NFS、CephFS 等)都有明显的缺点和需要注意的注意事项。这也不是操作员应该如何工作的一般模型,它们应该是 API 驱动的。一个可能更好的方法是,不是包含配置的共享 RWX 卷,而是在每个 Pod 中有一个类似控制器的边车,它监视 API 并在 Pod 共享的 emptyDir 卷中重新生成配置。大多数 Ingress Controller 基本上就是这样工作的,因此您可以使用它们作为示例。