平台要求

集群节点上的 Linux 内核模块要求

无论 Istio 处于何种数据平面模式, 在 Kubernetes 环境中,Istio 通常要求 Kubernetes 节点运行支持流量拦截和路由的 Linux 内核。 Istio 支持两种流量管理后端:iptables(默认)和 nftables

过去十年发布的大多数 Linux 内核都内置了对 Istio 所用功能的支持 - 要么是以内核模块的形式在需要时自动加载, 要么是直接内置的。所需的具体内核模块取决于您选择使用的后端。

iptables 后端

使用 iptables 后端(默认)时,Istio 需要以下内核模块才能正常运行:

主要 iptables 模块

模块备注
br_netfilter
ip6table_mangle仅适用于 IPv6/双栈集群
ip6table_nat仅适用于 IPv6/双栈集群
ip6table_raw仅适用于 IPv6/双栈集群
iptable_mangle
iptable_nat
iptable_raw仅需要 DNS 拦截
xt_REDIRECT
xt_connmarkAmbient 数据平面模式和带有 TPROXY 拦截的 Sidecar 数据平面模式需要(默认)
xt_conntrack
xt_markAmbient 数据平面模式和带有 TPROXY 拦截的 Sidecar 数据平面模式需要(默认)
xt_owner
xt_tcpudp
xt_multiport
ip_setAmbient 数据平面模式所需

以下更多模块由上述列出的模块使用,也应该加载到集群节点上:

模块备注
bridge
ip6_tables仅适用于 IPv6/双栈集群
ip_tables
nf_conntrack
nf_conntrack_ipv4
nf_conntrack_ipv6仅适用于 IPv6/双栈集群
nf_nat
nf_nat_ipv4
nf_nat_ipv6仅适用于 IPv6/双栈集群
nf_nat_redirect
x_tables
ip_set_hash_ipAmbient 数据平面模式所需

nftables 后端

nftables 框架是 iptables 的现代替代方案,提供更高的性能和灵活性。 Istio 依赖 nft 命令行工具来配置 nftables 规则。 nft 二进制文件必须为 1.0.1 或更高版本,并且需要 Linux 内核版本 5.13 或更高版本。 为了使 nft 命令行工具正常运行,主机系统上必须安装以下内核模块。

模块备注
nf_tables核心 nftables 模块.
nf_conntrack需要连接跟踪支持.
nft_ct
nf_defrag_ipv4
nf_defrag_ipv6仅适用于 IPv6/双栈集群
nft_nat
nft_socket
nft_tproxy
nft_redir

内核模块问题

虽然不常见,但使用自定义或非标准的 Linux 内核或 Linux 发行版可能会导致上述特定模块在主机上不可用, 或者无法自动加载。例如,这篇 selinux issue 描述了某些 RHEL 版本中 selinux 配置可能会阻止自动加载上述某些内核模块的情况。

有关执行流量拦截和路由配置的具体 Istio 组件的更多详细信息,请参阅相关的数据平面模式文档。

这些信息有用吗?
您是否有更多建议和改进意见?

感谢您的反馈!