Kubernetes Blue-green部署,我正在修补Kubernetes-application-service,以将流量从app-v1重定向到app-v2(在负载均衡器后面)。如果在“修补”过程中有任何连接正在进行,是否会断开连接?如果不是的话!我怎样才能测试这个?
对于从app-v1到app-v2的热切换(没有任何连接丢失),您认为最好的版本部署方法是什么?
发布于 2020-03-02 17:58:23
问题似乎是关于同时支持两个版本。这是一种Canary deployment,它使生产流量逐渐从app-v1转移到app-v2。
这可以通过以下方式实现:
app-v1和app-v1新流量通过一些入口注释路由到新部署,但仍然保持对旧版本的访问,因此不会丢弃现有连接。除了你上面的问题蓝绿色部署。蓝绿色部署是指拥有两个相同的环境,其中一次只有一个环境处于活动状态,假设blue现在在生产环境中处于活动状态。一旦您有了可以部署的新版本,例如green,就可以单独部署和测试。最后,当您对绿色环境的测试结果感到满意时,您将流量切换到了绿色环境。因此green变为活动,而blue稍后变为空闲或终止。(参考自martin fowler article)。
在Kubernetes中,这可以通过两个相同的部署来实现。这是一个很好的reference。
基本上,你可以有两个完全相同的部署,假设你有当前的部署my-deployment-blue在生产环境中。一旦您准备好了新版本,您就可以将其部署为一个全新的部署,比如说my-deployment-green,并使用单独的测试服务来测试green环境。最后,当所有测试都通过时,将流量切换到my-deployment-green。
发布于 2020-10-09 01:22:40
如果您正在尝试在Kubernetes中实现蓝色/绿色,那么我的答案可能会对您有所帮助。
通过设置以下配置进行滚动更新
多么?部署控制器首先将最新版本扩展到过时版本的100%。一旦最新版本健康,它会立即将过时的版本缩减到0%。
示例代码:
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
strategy:
rollingUpdate:
maxSurge: 100%
maxUnavailable: 0
type: RollingUpdatehttps://stackoverflow.com/questions/60485503
复制相似问题