Deployment 如何使用部署中指定的不同版本在kubernetes中实现Canary部署

Deployment 如何使用部署中指定的不同版本在kubernetes中实现Canary部署,deployment,kubernetes,replicaset,canary-deployment,Deployment,Kubernetes,Replicaset,Canary Deployment,我有两个部署文件 1. 部署-1.yaml apiVersion:apps/v1 种类:部署 元数据: 名称:进程 标签: 应用程序:过程 规格: 副本:3份 选择器: 火柴标签: 应用程序:过程 模板: 元数据: 标签: 应用程序:过程 版本:v1 规格: 容器: -名称:拉 图片:parma/k8s php:red 端口: -集装箱港口:80 二,。 部署-2.yaml apiVersion:apps/v1 种类:部署 元数据: 名称:进程 标签: 应用程序:过程 规格: 副本:3份 选择器

我有两个部署文件 1. 部署-1.yaml apiVersion:apps/v1 种类:部署 元数据: 名称:进程 标签: 应用程序:过程 规格: 副本:3份 选择器: 火柴标签: 应用程序:过程 模板: 元数据: 标签: 应用程序:过程 版本:v1 规格: 容器: -名称:拉 图片:parma/k8s php:red 端口: -集装箱港口:80

二,。 部署-2.yaml apiVersion:apps/v1 种类:部署 元数据: 名称:进程 标签: 应用程序:过程 规格: 副本:3份 选择器: 火柴标签: 应用程序:过程 模板: 元数据: 标签: 应用程序:过程 版本:v2 规格: 容器: -名称:拉 图片:parma/k8s php:green 端口: -集装箱港口:80

由于我在spec.template.metadata中指定了两个不同的版本,它不会为两个副本集都运行6个pod,它只支持最新的replicaset设置和运行

有没有办法实现金丝雀部署,让replicaset保持在单一部署中,并使用v1中的3个pod和v2中的3个pod运行

  • 不能有多个同名的部署。将它们重命名为process-v1和process-v2
  • 您需要为每个选择器设置不同的选择器。第一个应该有匹配标签:{app:process,version:v1},第二个匹配标签:{app:process,version:v2}
  • 所以从技术上讲,这将是两个完全不同的部署。让他们成为“基线”和“金丝雀”的是你如何向他们发送流量。如果在服务中指定公共选择器(仅{app:process}),则两个部署都将看到少量流量

  • 不能有多个同名的部署。将它们重命名为process-v1和process-v2
  • 您需要为每个选择器设置不同的选择器。第一个应该有匹配标签:{app:process,version:v1},第二个匹配标签:{app:process,version:v2}

  • 所以从技术上讲,这将是两个完全不同的部署。让他们成为“基线”和“金丝雀”的是你如何向他们发送流量。如果在服务中指定公共选择器(仅{app:process}),则两个部署都将看到一小部分流量。

    要实现的名称是Canary部署。它是a/B测试的一个重要功能,并有助于连续交付和生产测试,它不必位于同一个位置—在负载平衡器和网关中部署此秘密。市场上有多种选择(Spring Zuul或Istio Environment),它们可以提供一种解决方案,将内容从一个部署过滤到某个百分比,另一个过滤到其他部署…

    您想要实现的名称是Canary部署。它是a/B测试的一个重要功能,并有助于连续交付和生产测试,它不必位于同一个位置—在负载平衡器和网关中部署此秘密。市场上有多种选择(Spring Zuul或Istio Environment),可以提供一种解决方案,将内容从一个部署过滤到某个百分比,从另一个部署过滤到其余部分…

    我希望两个ReplicatSet在一个单独的部署中为两个版本并行运行,是否可能?否。一个部署=一个版本。为什么需要这样做?这样两个版本都可以由kubernetes单一部署管理,一段时间后,负载将转移到单一版本。根据运行状况检查,旧版本的卸载部署可以在运行旧版本和新版本时处于中间状态,但它试图尽快解决这个问题,并将系统移动到目标状态。部署的目标状态只能是一个特定版本。如果您想运行canary一段时间(分钟、小时、天?),您的目标状态不能用一个版本来描述-它必须是两个不同的版本,即两个部署。我希望两个replicaset在一个单独的Deplyment中为两个版本并行运行,是否可能?否。一个部署=一个版本。为什么需要这样做?这样两个版本都可以由kubernetes单一部署管理,一段时间后,负载将转移到单一版本。根据运行状况检查,旧版本的卸载部署可以在运行旧版本和新版本时处于中间状态,但它试图尽快解决这个问题,并将系统移动到目标状态。部署的目标状态只能是一个特定版本。如果您想运行金丝雀一段时间(分钟、小时、天?),您的目标状态不能用一个版本来描述-它必须是两个不同的版本,即两个部署。