记一次 k8s apiserver watch hang 问题排查
问题背景
传统的 kubernetes apiserver 请求访问链路为客户端直连 apiserver,为了做 apiserver 高可用,通常我们会给 apiserver 前端再套一层4层或7层代理做多个 apiserver 实例的负载均衡。
在我们的场景下,使用了 istio 的 ingressgateway 作为 client -> apiserver
这条链路中的7层代理。链路变成了 client -> ingressgateway -> apiserver
,gateway 暴露 80 端口供客户端访问, 同时通过 istio virtualService + destinationRule 规则配置 gateway 能通过域名访问到 apiserver 6443 端口,从而实现流量路由。