平台要求
集群节点上的内核模块要求
无论 Istio 的 数据平面 模式如何,在 Kubernetes 上下文中,Istio 通常需要运行 Linux 内核(具有 iptables
支持)的 Kubernetes 节点才能正常工作。过去十年发布的大多数 Linux 内核都内置支持 Istio 默认使用的所有 iptables
功能 - 无论是作为在需要时自动加载的内核模块,还是内置的。
作为参考,以下列出了 Istio 正确运行所需的所有与 iptables
相关的内核模块。
模块 | 备注 |
---|---|
br_netfilter | |
ip6table_mangle | 仅 IPv6/双栈集群需要 |
ip6table_nat | 仅 IPv6/双栈集群需要 |
ip6table_raw | 仅 IPv6/双栈集群需要 |
iptable_mangle | |
iptable_nat | |
iptable_raw | 仅在 Sidecar 模式下进行 DNS 拦截时需要 |
xt_REDIRECT | |
xt_connmark | 环境数据平面模式和带有 TPROXY 拦截(默认)的 Sidecar 数据平面模式需要 |
xt_conntrack | |
xt_mark | 环境数据平面模式和带有 TPROXY 拦截(默认)的 Sidecar 数据平面模式需要 |
xt_owner | |
xt_tcpudp | |
xt_multiport | |
ip_set | 环境数据平面模式需要 |
以下其他模块由上面列出的模块使用,也应该加载到集群节点上。
模块 | 备注 |
---|---|
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_ip | 环境数据平面模式需要 |
虽然不常见,但使用自定义或非标准的 Linux 内核或 Linux 发行版可能会导致上述特定模块在主机上不可用,或者 iptables
无法自动加载。例如,此 selinux 问题
描述了一些 RHEL 版本中的一种情况,其中 selinux
配置可能会阻止自动加载上述某些内核模块。
有关执行基于 iptables
的配置的特定 Istio 组件的更多详细信息,请参阅相关的数据平面模式文档。