为什么注入Sidecar后,健康检查总失败或者无效

本文介绍注入Sidecar后,健康检查失败或者无效的问题现象、问题原因和解决方案。

问题现象

注入Sidecar后,健康检查失败或者无效。本文以TCP健康检查端口8087为例,启用mTLS后,在容器服务管理控制台的容器组详情页面事件页签下,未显示8087端口的健康检查信息。

健康检查无效

问题原因

服务网格开启mTLS后,kubelet向Pod发送的健康检查请求被Sidecar拦截,而kubelet没有对应的TLS证书,导致健康检查失败。

解决方案

配置端口健康检查流量免于经过Sidecar代理,具体操作步骤如下:

配置端口健康检查流量免于经过Sidecar代理

  1. 登录ASM控制台

  2. 在左侧导航栏,选择服务网格 > 网格管理

  3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理

  4. 在网格详情页面左侧导航栏,选择数据面组件管理 > Sidecar代理配置

  5. 命名空间页签下,选中相应的命名空间,单击按端口或地址来启用/禁用Sidecar代理页签,配置相应参数。

    参数配置说明如下:

    参数

    说明

    设置端口使入口流量免于经过Sidecar代理

    配置入口流量免于经过Sidecar代理的端口,本文配置为8087

    设置端口使出口流量免于经过Sidecar代理

    配置出口流量免于经过Sidecar代理的端口,本文配置为8087

  6. 配置完成后,单击更新设置

查看健康检查结果

  1. 登录容器服务管理控制台

  2. 在控制台左侧导航栏,单击集群
  3. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏,选择工作负载 > 容器组
  5. 单击目标容器组名称或右侧的详情,进入容器组详情页面。

  6. 在容器组详情页面,单击事件页签。

    如下图所示,端口8087的健康检查生效。健康检查