0

基本上,我想要创建一个 sidecar 容器来扫描集群中的入口对象并将生成的文件复制到其他容器。

我怎样才能做到这一点?

4

1 回答 1

1

您可以编写一个称为控制器的特殊 Kubernetes 程序。这是一个普通的程序,运行在一个普通的 pod 中,它使用Kubernetes API来监视一些对象集并修改一些其他对象集。

执行您所描述的控制器的主循环可能非常简单:

  1. 观察所有 Ingress 对象(在命名空间中,匹配一些标签,...)
  2. 在控制器的普通变量中保留有关当前组合的 Ingress 集的一些状态。(如果控制器退出并重新启动,手表将首先将所有当前对象重播到新的控制器进程中。)
  3. 生成要输出到 ConfigMap 对象的文件。

然后其他 pod 可以像任何其他 ConfigMap 一样挂载 ConfigMap,它恰好由您的控制器拥有,而不是手动维护。

这个过程不适合“sidecar”容器。它基本上运行一个完全独立的进程,没有紧密绑定到特定的 pod。这也避免了尝试手动修改容器文件系统,从而以多种方式为您提供弹性:如果新 pod 启动,它将自动获取现有的 ConfigMap 内容;如果你的控制器以某种方式彻底失败,那么 pod 可以继续使用旧的 ConfigMap 内容,直到它重新启动。

于 2020-02-27T00:45:01.473 回答