跳转到内容

金丝雀正在运行但未接收任何流量

Symptom

金丝雀的容器正在运行且健康,每个请求仍然到达稳定版本。 金丝雀自身的指标保持为零,这很容易被理解为“新版本没问题”。

Diagnose

  1. 金丝雀是否真的在运行? GET /api/v1/deployments/{name}/canary。处于待定或暂停状态的金丝雀按设计不会接收任何流量。
  2. 设置了什么权重? 权重为零意味着金丝雀存在但不接收流量。这是一个合法状态——这是金丝雀暂存的方式——也是此症状最常见的原因。
  3. 金丝雀的容器是否通过了探测? 只有健康的容器才会被分配流量。
  4. 部署是否被路由? 金丝雀权重在路由边缘应用,因此没有主机名的部署没有地方可以应用权重。
  5. 更改是否已生效? 路由更改需要一小段时间才能传播。在得出什么都没发生的结论之前,请间隔一分钟测量两次。
Odysseus 仪表板中的金丝雀屏幕,列出了每个金丝雀发布及其流量份额和健康状况——该视图区分了不健康的金丝雀与健康但未接收任何流量的金丝雀。

Resolve

  • 权重为零: 提升它。POST /api/v1/deployments/{name}/canary/start 开始滚动更新; promote、pause、resume 和 rollback 路由是它的其他控制项。
  • 金丝雀不健康: 修复探测或镜像——金丝雀正在告诉你它的用途。
  • 未路由: 加权滚动更新需要一个主机名。参见 rollouts。

Prevent

在启动金丝雀的同一操作中设置第一个权重,这样分阶段的金丝雀就不会被误认为是失败的金丝雀,并且应关注金丝雀自身的指标,而不是部署的总指标。