我之前已经使用 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)时,它只是挂起。
到目前为止我尝试过的:
设置
就我而言,这与防火墙有关。更多信息可以在这里找到。
其要点是,在 GKE 上,除了 10250 和 443 之外,至少还需要打开另一个端口 15017。这是为了允许从主节点到 VPC 的通信。
对于为什么会发生这种情况,我没有明确的答案。但是 kube-apiserver 无法通过服务 IP 访问 istiod,而我使用 istiod pod IP 时可以连接。
因为我无法控制虚拟机和较低的网络层,并且不确定它们是否更改了某些内容(因为它之前正在工作)。
我通过将 CNI 从编织更改为法兰绒来完成这项工作
就我而言,这是由于防火墙造成的。按照此 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 结合使用
无需更新集群安全组。