在多容器复制控制器上使用滚动更新的策略?

Strategies for using rolling updates on multi-container replication controllers?

有什么方法可以对具有 2 个或更多容器的复制控制器进行滚动更新吗?

例如,我将 Jenkins 设置为在使用 --image 标志指定存储在 GCR 中的新容器映像成功构建后,在我们的开发环境中自动对 rep 控制器进行滚动更新。当同一个 pod 中有两个容器并且没有“-c”标志来指定您希望在 rolling-update 命令上更新的容器时,此方法不起作用,就像在其他命令(例如 [=19=)上一样] 或 "logs"。

我希望拥有多个 pods 的原因是为了实现一个日志记录边车,如下所示: https://github.com/kubernetes/contrib/tree/master/logging/fluentd-sidecar-es

我能想到的唯一选择是将 fluentd 配置烘焙到每个容器中,这对我来说绝对是 'un-kubernetes'。

您说得对,kubectl rolling-update frontend --image=image:v2 没有为您提供一种在更新具有多个容器的 pod 时提供有关容器的更多详细信息的方法。它给你一个错误 Image update is not supported for multi-container pods

但是,它肯定会给你 2 个变体

  1. kubectl rolling-update frontend-v1 -f frontend-v2.json
  2. cat frontend-v2.json | kubectl rolling-update frontend-v1 -f -

其中 v1 和 v2 可以是您的构建版本。这样一来,您的 Pod 名称也将与您的构建版本保持一致。