Istio 安装成功但无法部署 POD

问题描述

我已经在 k8 集群中成功安装了 Istio。

  • Istio 版本为 1.9.1

  • 使用的 Kubernetes CNI 插件:Calico 3.18 版(Calico POD 已启动并运行)

kubectl get pod -A

istio-system           istio-egressgateway-bd477794-8rnr6           1/1     Running   0          124m
istio-system           istio-ingressgateway-79df7c789f-fjwf8        1/1     Running   0          124m
istio-system           istiod-6dc55bbdd-89mlv                       1/1     Running   0          124

当我尝试部署示例 Nginx 应用程序时,出现以下错误

Failed calling webhook sidecar-injector.istio.io context deadline exceeded
Post "https://istiod.istio-system.svc:443/inject?timeout=30s": 
context deadline exceeded

当我禁用自动代理 sidecar 注入时,pod 的部署没有任何错误

kubectl label namespace default istio-injection-

我不知道如何解决这个问题,请问有人能帮我解决这个问题吗?

解决方法

在这种情况下,将 hostNetwork:true 下的 spec.template.spec 添加到 istiod 部署可能会有所帮助。 使用 Calico CNI 进行 pod 网络时,这似乎是一种解决方法(请参阅:failed calling webhook "sidecar-injector.istio.io

正如我们在 Kubernetes Host namespaces documentation 中所见:

HostNetwork - 控制 pod 是否可以使用节点网络命名空间。这样做可以让 pod 访问环回设备、侦听本地主机上的服务,并可用于窥探同一节点上其他 pod 的网络活动。