1

我配置了 istio,但没有启用 CNI 插件。

那时,我有一个带有服务帐户的 init 容器,它会调用 Kubernetes API 来验证几件事(通过 kubectl)。

由于我启用了 CNI 插件,因此该初始化容器失败并显示以下消息:

与服务器 10.23.64.1:443 的连接被拒绝 - 您是否指定了正确的主机或端口?

我尝试删除所有网络策略以查看是否是问题所在,但结果相同。我还提供了这个 pod 使用 cluster-admin 角色的服务帐户,但它没有起到作用。

我测试了 Istio 的 1.6 和 1.7 分支。

这里有什么问题?没有这个 init 容器的其他 pod 可以正常工作。

4

1 回答 1

2

为了启用 Istio cni 的 init 容器网络连接,请按照指南获取 istio文档中的解决方法:

与应用程序初始化容器的兼容性

Istio CNI 插件可能会导致任何应用程序出现网络连接问题 initContainers。使用 Istio CNI 时, kubelet 通过以下步骤启动注入的 pod:

  1. Istio CNI 插件将流量重定向到 pod 内的 Istio sidecar 代理。
  2. 所有初始化容器都成功执行并完成。
  3. Istio sidecar 代理与 pod 的其他容器一起在 pod 中启动。

Init 容器在 sidecar 代理启动之前执行,这可能会导致执行过程中的流量丢失。使用以下一项或两项设置避免这种流量丢失:

  • 设置 traffic.sidecar.istio.io/excludeOutboundIPRanges 注释以禁用将流量重定向到初始化容器与之通信的任何 CIDR。
  • 设置 traffic.sidecar.istio.io/excludeOutboundPorts 注释以禁用将流量重定向到初始化容器使用的特定出站端口。
于 2020-10-15T14:05:15.490 回答