Istio CNI 插件日志提供了插件如何基于 PodSpec
配置应用 Pod 流量重定向的信息。
该插件运行在容器运行时进程空间,因此您可以在 kubelet
日志中看到 CNI 日志条目。
为了便于调试,CNI 插件还将其日志发送到 istio-cni-node
DaemonSet。
CNI 插件的默认日志级别为 info
。要获取更详细的日志输出,可以通过编辑 ServiceMesh 组件配置中 istioCNI 的 cni.values.logLevel
来更改级别。
Istio CNI DaemonSet Pod 日志还提供了有关 CNI 插件安装和竞态条件修复的信息。
CNI DaemonSet 的就绪状态表明 Istio CNI 插件已正确安装和配置。
如果 Istio CNI DaemonSet 未就绪,则说明存在问题。请查看 istio-cni-node
DaemonSet 日志进行诊断。
默认情况下,Istio CNI DaemonSet 启用了竞态条件缓解, 它会驱逐在 CNI 插件准备好之前启动的 Pod。 要了解哪些 Pod 被驱逐,请查找如下日志行:
CNI 插件的一个常见问题是 Pod 因容器网络设置失败而无法启动。 通常失败原因会写入 Pod 事件,并可通过 Pod 描述查看:
如果 Pod 持续出现 init 错误,请检查 init 容器 istio-validation
的日志中是否有如下“connection refused”错误:
istio-validation
init 容器会设置一个本地的虚拟服务器,监听流量重定向目标的入站/出站端口,并检查测试流量是否能被重定向到该虚拟服务器。
当 CNI 插件未正确设置 Pod 流量重定向时,istio-validation
init 容器会阻止 Pod 启动,以防止流量绕过。
要查看是否有任何错误或异常的网络设置行为,请在 istio-cni-node
中搜索该 Pod 的 ID。
CNI 插件异常的另一个表现是应用 Pod 在启动时不断被驱逐。 这通常是因为插件未正确安装,导致无法设置 Pod 流量重定向。 CNI 的竞态修复逻辑会认为该 Pod 因竞态条件而损坏,并持续驱逐该 Pod。 遇到此问题时,请检查 CNI DaemonSet 日志,了解插件无法正确安装的原因。
当使用 Multus 链接多个 CNI 提供者时,例如 Kube-OVN,可能会导致 Istio CNI 插件被多次安装配置(在 Multus 和 Kube-OVN 中均安装),
从而形成无法为 Pod 配置网络的循环 CNI 链。为缓解此问题,您可以显式指定 cni.values.cniConfFileName
为 Multus 配置文件名。
并手动检查所有 CNI 配置,确保没有重复配置。