Admission Webhook 位于资源写入路径上。服务不可达、证书失效或处理变慢时,创建和更新资源可能同时失败,影响范围取决于匹配规则与 failurePolicy。
从错误确定对象
kubectl get validatingwebhookconfigurations,mutatingwebhookconfigurations
kubectl get validatingwebhookconfiguration policy-webhook -o yaml
kubectl get events -A --sort-by=.lastTimestamp | tail -30
关注错误中的 webhook 名称、超时、TLS 原因和目标资源。检查 rules、namespaceSelector、objectSelector 是否意外覆盖系统命名空间。
验证服务链路
kubectl get svc,endpoints,endpointslices -n policy-system
kubectl logs -n policy-system deploy/policy-webhook --since=15m
kubectl get secret -n policy-system webhook-tls -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -noout -dates -subject
证书 SAN 必须匹配 <service>.<namespace>.svc,caBundle 也要与签发链一致。服务有端点但仍超时,应继续检查 NetworkPolicy、kube-proxy 和 API Server 到 Pod 的路径。
应急边界
- 先缩小 webhook 匹配范围或恢复副本
- 修改
failurePolicy: Ignore前评估绕过策略的风险 - 不删除配置而不保留原始 YAML
- 为延迟、拒绝率和证书有效期设置监控
收尾清单
分别测试应被允许和拒绝的对象,确认准入逻辑真正恢复。补做 webhook 不可用演练,并记录紧急豁免的审批与回滚步骤。