我以前用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
3条答案
按热度按时间w3nuxt5m1#
在我的情况下,这是有关防火墙。更多的信息可以找到here。
其要点是,在GKE上,除了10250和443之外,至少还需要打开另一个端口15017,以便允许从主节点到VPC的通信。
xmakbtuz2#
我没有一个明确的答案为什么会发生这种情况,但kube-apiserver不能通过服务IP访问istiod,当我使用istiod pod IP时,它可以连接。
因为我无法控制虚拟机和较低的网络层,不确定他们是否改变了一些东西(因为它以前工作)。
我把CNI从编织改成法兰绒
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