AWS EKS集群部分节点Istio代理与istiod通信出现认证错误
Istio代理与istiod通信认证错误排查指南
问题表现
仅部分AWS EKS工作节点上的Istio代理出现与istiod通信的认证错误,无重大变更情况下突发,经AWS官方确认非EKS平台故障,具体报错日志如下:
warn sds failed to warm certificate: failed to generate workload certificate: create certificate: rpc error: code = Unauthenticated desc = request authenticate failure
排查步骤
- 校验异常节点上Istio代理的ServiceAccount Token有效性
部分节点上的Pod ServiceAccount Token可能过期,或是kubelet未及时刷新Token导致认证失败
执行命令查看Pod的istio-token挂载状态:kubectl describe pod <异常Istio代理所在Pod名> -n <Pod所在命名空间>
进入Pod内部解析Token校验合法性:cat /var/run/secrets/istio/token | jwt decode
重点校验Token的过期时间、签发者字段是否与Istio配置匹配。 - 检查异常节点的时间同步状态
节点时钟偏移超过5分钟会直接导致JWT类认证校验失败
在异常节点执行以下命令确认时钟偏移情况:date && chronyc tracking
对比正常节点的时间,确认偏移量是否在允许范围以内。 - 验证Istio全局认证配置一致性
执行命令查看Istio核心配置:kubectl get configmap istio -n istio-system -o yaml
检查jwksUri、issuer等认证相关配置是否符合预期,排除配置未同步到部分节点的情况。 - 排查异常节点的Istio CNI插件运行状态
若集群使用Istio CNI,异常节点的CNI插件故障会导致Istio代理无法正常访问kube-apiserver获取认证凭证,执行命令检查对应节点的CNI Pod状态:kubectl get pod -n kube-system -l k8s-app=istio-cni-node --field-selector spec.nodeName=<异常节点名>
对应修复方案
- ServiceAccount Token异常:直接删除故障的Istio代理Pod触发重建,自动重新挂载有效Token即可恢复
- 节点时钟偏移:修复节点时间同步服务,时钟对齐后认证会自动恢复
- Istio CNI异常:重启异常节点上的Istio CNI Pod,待CNI恢复正常后重建故障的Istio代理Pod
内容的提问来源于stack exchange,提问作者MattTheCat
相关产品推荐
相关产品推荐

