自动处理:
灵活运用 readinessProbe 和 livenessProbe 探针,对于常规异常 (如:服务没有响应,健康检查失败) 做到自动处理,业务日志记录异常
- readinessProbe 主要是用来探测服务是否可用,如果不可用,从 service 流量负载中删除
- livenessProbe 探测容器是否健康,如果不健康则重启服务
人工介入
探针没有关注到的异常,可以通过监控告警,及时发现问题(如 cpu 负载过高等),人工介入。此时可以通过下面操作,完成流量切换和保留现场
修改异常 pod 的 labels(对应于 service 的 selector 配置),如:
kubectl -n test edit pod data-message-7974fdd4db-zh692
修改:
labels:
cluster: data-message
为
labels:
cluster: data-message-err
原理:k8s 提供的 service 负载均衡是通过 labels 来选择同一个 ns 下的 pod 作为 endpoints。手动更改异常 pod label 可以做到切除用户流量,并保留异常 pod。同时 k8s 会自动起一个新的 pod,补充刚刚剔除的异常 pod