调用 webhook“namespace.sidecar-injector.istio.io”失败

问题描述 投票:0回答:4

我之前已经使用 istio ingressgateway 进行了部署。我不知道 istio 或 k8s 方面有任何更改。

当我尝试部署时,我在副本集端看到一个错误,这就是它无法创建新 Pod 的原因。

创建错误:发生内部错误:调用 webhook 失败 “namespace.sidecar-injector.istio.io”:帖子 "https://istiod.istio-system.svc:443/inject?timeout=10s":拨打 tcp 10.104.136.116:443:连接:没有到主机的路由

当我尝试进入 api-server 并 ping 10.104.136.116(istiod 服务 IP)时,它只是挂起。

到目前为止我尝试过的:

  • 删除了所有 coredns pod
  • 删除所有 istiod pod
  • 删除了所有编织荚
  • 通过 istioctl x uninstall --purge 重新安装 istio
  • 关闭所有虚拟机防火墙
  • sudo iptables -P 输入接受 sudo iptables -P 转发接受 sudo iptables -P 输出接受 sudo iptables -F
  • 重新启动所有节点
  • 手动 Istio Pod 注入

设置

  • k8s版本:1.21.2
  • istio:1.10.3
  • HA 设置
  • CNI:编织
  • CRI:容器化
kubernetes istio
4个回答
4
投票

就我而言,这与防火墙有关。更多信息可以在这里找到。

其要点是,在 GKE 上,除了 10250 和 443 之外,至少还需要打开另一个端口 15017。这是为了允许从主节点到 VPC 的通信。


2
投票

对于为什么会发生这种情况,我没有明确的答案。但是 kube-apiserver 无法通过服务 IP 访问 istiod,而我使用 istiod pod IP 时可以连接。

因为我无法控制虚拟机和较低的网络层,并且不确定它们是否更改了某些内容(因为它之前正在工作)。

我通过将 CNI 从编织更改为法兰绒来完成这项工作


1
投票

就我而言,这是由于防火墙造成的。按照此 Istio 调试指南,我发现

kubectl get --raw /api/v1/namespaces/istio-system/services/https:istiod:https-webhook/proxy/inject -v4
命令超时,而所有其他集群内部调用都正常。

诊断此问题的最佳方法是打开临时涉及端口

0.0.0.0/0
的AWS安全组,然后重试。 如果错误不再出现,您就知道需要修复此部分。
我将 EKS 与 Amazon VPC CNI v1.12.2-eksbuild.1 结合使用


0
投票

无需更新集群安全组。

© www.soinside.com 2019 - 2024. All rights reserved.