Citadel 的健康检查

    当健康检查功能被开启,Citadel 中的 检测器 模块会定期向 Citadel 的 CSR gRPC 服务发送 CSRs 并校验响应信息以此判断服务的健康状况。如果 Citadel 服务是健康状态,检测器 会更新 健康状态文件更新时间 ,否则什么都不做。Citadel 依赖 Kubernetes 的健康和就绪检测功能,使用命令行检查 pod 中 健康状态文件更新时间 。如果这个文件有一段时间不更新了,Kubelet 将会重启 Citadel 容器。

    注意:Citadel 的健康检查目前只提供了对 CSR 服务 API 的支持,如果没有使用 或者 Mesh Expansion 就没有必要使用这个功能。

    为了完成这个任务,你可以,并设置 为 true

    使用认证策略为命名空间内的部分或者全部服务配置双向 TLS 支持。在进行全局设置配置时必须对所有命名空间重复一遍。细节可参考。

    部署启用健康检查的 Citadel

    重新部署 Citadel 启用健康检查:

    Citadel 会记录健康检查的结果,运行下面的命令行:

    会看到类似下面这样的输出:

    (可选)健康检查的配置

    这部分的讨论关于如何修改健康检查的配置。打开 citadel-health-check.yaml 文件,并定位到下面的内容:

    健康状态文件的路径为 liveness-probe-pathprobe-path。你应该同时更新在 Citadel 和 中的路径。如果 Citadel 是健康的,liveness-probe-interval 的值用于更新健康状态文件的周期。Citadel 的健康检查控制器使用 probe-check-interval 的值作为请求 Citadel CSR 服务的周期。interval 是自上次更新健康状况文件至今的最长时间,供检测器判断 Citadel 是否健康。initialDelaySeconds 和 的值确定初始化延迟以及每次激活 livenessProbe 的时间间隔。

    延长 probe-check-interval 会减少健康检查的开销,但是一旦遇到故障情况,健康监测器也会更晚的得到故障信息。为了避免检测器因为临时故障重启 Citadel,检测器的 interval 应该设置为 liveness-probe-interval 的 倍,这样就让检测器能够容忍持续 N-1 次的检查失败。

    • 在 Citadel 上禁用健康检查:

    相关内容

    Shows how to do health checking for Istio services.

    Multi-mesh deployments for isolation and boundary protection

    Deploy environments that require isolation into separate meshes and enable inter-mesh communication by mesh federation.

    Using Istio to secure multi-cloud Kubernetes applications with zero code changes.

    Taking advantage of Kubernetes trustworthy JWTs to issue certificates for workload instances more securely.

    Istio 1.2.4 sidecar image vulnerability

    An erroneous 1.2.4 sidecar image was available due to a faulty release operation.

    Comparison of alternative solutions to control egress traffic including performance considerations.