初始化k8s报错:/proc/sys/net/bridge/bridge-nf-call-iptables does not exist。br_netfilter导致的。已解决!!。
·
初始化k8s报错如下:
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
错误原因
初始化Kubernetes集群时的错误,是/proc/sys/net/bridge/bridge-nf-call-iptables文件不存在的问题。
这个错误通常发生在Linux系统中,当系统没有加载br_netfilter模块时,因为该模块负责创建bridge-nf-call-iptables相关的sysctl参数。
Kubernetes要求节点启用bridge-nf-call-iptables规则,以确保Pod网络流量能被正确转发。该规则由br_netfilter内核模块控制,若模块未加载或参数未配置,会导致此错误。
解决方案:
1. 加载内核模块
sudo modprobe br_netfilter
2. 持久化模块加载(重启后生效)
echo 'br_netfilter' | sudo tee /etc/modules-load.d/br_netfilter.conf
3. 配置sysctl参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
4. 应用sysctl配置
sudo sysctl --system
5. 验证配置
# 检查模块是否加载
lsmod | grep br_netfilter
# 检查参数值
sysctl net.bridge.bridge-nf-call-iptables
6. 重新初始化Kubernetes
sudo kubeadm init
附加说明
云服务器/虚拟机用户:
某些云平台默认禁用桥接流量转发,需确保安全组/防火墙允许相关流量。
Docker用户:若已安装Docker,需在/etc/docker/daemon.json中添加:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"iptables": false
}
更多推荐
所有评论(0)