kubernetes 调用网络钩子“namespace.sidecar-injector.istio.io“失败

c6ubokkw  于 2023-02-18  发布在  Kubernetes
关注(0)|答案(3)|浏览(200)

我以前用istio ingressgateway做过部署工作。我不知道在istio或k8s端做过任何更改。
当我尝试部署时,我在副本集端看到一个错误,这就是为什么它无法创建新pod的原因。
创建错误:发生内部错误:调用网络钩子"www.example.com"失败:发布"www.example.com":拨打tcp 10.104.136.116:443:namespace.sidecar-injector.istio.io": Post "https://istiod.istio-system.svc:443/inject?timeout=10s": dial tcp 10.104.136.116:443: connect: no route to host
当我尝试进入api服务器并ping www.example.com(istiod服务IP)时,它只是挂起。10.104.136.116 (istiod service IP) it just hangs.
到目前为止我已经尝试过:

  • 已删除所有核心pod
  • 删除所有istiod pod
  • 删除所有编织pod
  • 通过istioctl x uninstall--purge重新安装istio
  • 将所有虚拟机防火墙
  • sudo iptables-P输入接受sudo iptables-P正向接受sudo iptables-P输出接受sudo iptables-F
  • 已重新启动所有节点
  • 手动istio pod注入

设置

  • k8s版本:1.21.2
  • 位置:1.10.3
  • HA设置
  • CNI:编织
  • CRI:集装箱d
w3nuxt5m

w3nuxt5m1#

在我的情况下,这是有关防火墙。更多的信息可以找到here
其要点是,在GKE上,除了10250和443之外,至少还需要打开另一个端口15017,以便允许从主节点到VPC的通信。

xmakbtuz

xmakbtuz2#

我没有一个明确的答案为什么会发生这种情况,但kube-apiserver不能通过服务IP访问istiod,当我使用istiod pod IP时,它可以连接。
因为我无法控制虚拟机和较低的网络层,不确定他们是否改变了一些东西(因为它以前工作)。
我把CNI从编织改成法兰绒

q8l4jmvw

q8l4jmvw3#

在我的情况下,这是由于防火墙。按照这个Istio调试指南,我发现kubectl get --raw /api/v1/namespaces/istio-system/services/https:istiod:https-webhook/proxy/inject -v4命令超时,而所有其他集群内部调用都正常。
诊断此问题的最佳方法是为端口15017临时打开与0.0.0.0/0相关的AWS安全组,然后重试。如果错误不会再次显示,则您知道需要修复此部分。
我正在使用EKS与亚马逊VPC CNI v1.12.2-eksbuild.1

相关问题