平台前提条件
集群节点上的 Linux 内核模块要求
在用 Istio 代理 Sidecar 容器运行应用程序 Pod 的集群节点上使用 iptables
拦截模式时,需要加载某些内核模块。Istio 也可以工作在没有 iptables 的 whitebox
模式下。如果使用的是这种模式,可以忽略本节内容,因为这种模式不需要任何专用的内核模块。
具体而言,istio-init
容器或 istio-cni
守护进程需要这些内核模块,才能在 Pod
中设置 iptables 规则,将任何传入或传出的流量重定向到 istio-proxy 容器中的 Sidecar
代理。尽管在许多平台上这些模块看起来像是自动加载的,但请务必确保满足相应的前提条件,
因为我们曾多次接报以下列出的某些专用模块在主机上不可用,或无法通过 iptables 自动加载。
例如,这个 selinux issue
就在讨论 RHEL 中的 selinux 有时会阻止自动加载下述某些内核模块。
模块 | 备注 |
---|---|
br_netfilter | |
ip6table_mangle | 仅适用于 IPv6 或双栈集群 |
ip6table_nat | 仅适用于 IPv6 或双栈集群 |
ip6table_raw | 仅适用于 IPv6 或双栈集群 |
iptable_mangle | |
iptable_nat | |
iptable_raw | 仅适用于 DNS 拦截 |
xt_REDIRECT | |
xt_connmark | 仅适用于 TPROXY 拦截模式 |
xt_conntrack | |
xt_mark | 仅适用于 TPROXY 拦截模式 |
xt_owner | |
xt_tcpudp | |
xt_multiport |
以下更多模块由上述列出的模块使用,也应该加载到集群节点上:
模块 | 备注 |
---|---|
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 |