我配置了istio,但没有启用CNI插件。
当时,我有一个带有服务帐户的init容器,它将调用Kubernetes API来验证一些事情(通过kubectl(。
由于我启用了CNI插件,这个init容器失败,并显示以下消息:
与服务器10.23.64.1:443的连接被拒绝-您指定了正确的主机或端口吗?
我尝试删除所有的网络策略,看看这是否是问题所在,但结果相同。我还告诉服务帐户,这个pod使用集群管理员角色,但它没有起到作用。
我测试了Istio的1.6和1.7分支。
这里的问题是什么?没有这个init容器的其他pod也可以正常工作。
为了在启用istio-cni的情况下实现init容器网络连接,请遵循istio文档中的解决方法指南:
与应用程序初始化容器的兼容性
Istio CNI插件可能会导致任何应用程序
initContainers
的网络连接问题。使用Istio CNI时,kubelet
通过以下步骤启动注入的pod:
- Istio CNI插件在pod中设置到Istio sidecar代理的流量重定向
- 所有init容器都成功执行并完成
- Istio sidecar代理与pod的其他容器一起在pod中启动
Init容器在sidecar代理启动之前执行,这可能会导致执行过程中的流量损失。通过以下一种或两种设置避免这种流量损失:
- 设置
traffic.sidecar.istio.io/excludeOutboundIPRanges
注释以禁用将流量重定向到init容器通信的任何CIDR- 设置
traffic.sidecar.istio.io/excludeOutboundPorts
注释以禁用将流量重定向到init容器使用的特定出站端口