同步和回滚 kubernetes 中的独立部署
Synchronize and rollback independent deployments in kubernetes
我有包含 2 个部署的 k8s 设置:从不同映像部署的客户端和服务器。两个部署内部都有副本集,定义了活性和就绪探针。客户端通过k8s的服务与服务端通信
目前,客户端和服务器的部署脚本是分开的(通过 kustomization 应用单独的 yaml 文件)。回滚独立地对两个部分都正常工作,但让我们考虑以下场景:
1.部署开始
2.两种部署配置都适用
3、k8s master开始替换server和client的pods
4. 服务器 pods 正确启动,因此新副本集具有所有新的 pods 和 运行
5.客户端pods有问题,所以旧的副本集仍然是运行
在很多情况下这不是问题,因为客户端和服务器是独立工作的,但是在某些情况下,当对服务器 API 的重大更改被发布时,客户端和服务器都必须更新。在那种情况下,如果这两者中的任何一个失败,那么都应该回滚(哪个失败并不重要 - 两者都需要回滚才能同步)。
有没有办法在 k8s 中实现?我花了很多时间寻找一些解决方案,但到目前为止我发现的所有内容都描述了 deployments/rollbacks 当时的一件事,并没有解决上述问题。
这里的问题是 Blue/Green 部署中涉及的问题。
Here 是 Blue/Green 使用 k8s 部署的很好参考。
基本思路是,部署新版本(绿色部署),同时保持先前版本(蓝色部署)正常运行,运行 并且仅在一切顺利时才允许流量流向新版本(绿色部署)很好。
我有包含 2 个部署的 k8s 设置:从不同映像部署的客户端和服务器。两个部署内部都有副本集,定义了活性和就绪探针。客户端通过k8s的服务与服务端通信
目前,客户端和服务器的部署脚本是分开的(通过 kustomization 应用单独的 yaml 文件)。回滚独立地对两个部分都正常工作,但让我们考虑以下场景: 1.部署开始 2.两种部署配置都适用 3、k8s master开始替换server和client的pods 4. 服务器 pods 正确启动,因此新副本集具有所有新的 pods 和 运行 5.客户端pods有问题,所以旧的副本集仍然是运行
在很多情况下这不是问题,因为客户端和服务器是独立工作的,但是在某些情况下,当对服务器 API 的重大更改被发布时,客户端和服务器都必须更新。在那种情况下,如果这两者中的任何一个失败,那么都应该回滚(哪个失败并不重要 - 两者都需要回滚才能同步)。
有没有办法在 k8s 中实现?我花了很多时间寻找一些解决方案,但到目前为止我发现的所有内容都描述了 deployments/rollbacks 当时的一件事,并没有解决上述问题。
这里的问题是 Blue/Green 部署中涉及的问题。 Here 是 Blue/Green 使用 k8s 部署的很好参考。
基本思路是,部署新版本(绿色部署),同时保持先前版本(蓝色部署)正常运行,运行 并且仅在一切顺利时才允许流量流向新版本(绿色部署)很好。