温馨提示×

centos k8s安装后如何设置防火墙

小樊
31
2025-10-15 13:34:45
栏目: 智能运维

CentOS K8s安装后防火墙设置指南

1. 关闭SELinux(K8s要求)

SELinux会限制容器进程的权限,导致K8s组件无法正常通信。需永久关闭SELinux:

setenforce 0 # 临时关闭 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 永久关闭 

2. 处理Firewalld与iptables冲突

K8s依赖iptables进行网络规则管理,若同时启用firewalld可能导致规则冲突。推荐方案

  • 方案一:关闭firewalld(简单场景适用)
    systemctl stop firewalld && systemctl disable firewalld # 停止并禁用 
  • 方案二:保留firewalld并配置K8s所需端口(生产环境推荐)
    若需保留firewalld,需开放K8s核心组件的通信端口(Master节点需全部开放,Node节点开放对应端口):
    firewall-cmd --permanent --add-port=6443/tcp # K8s API Server端口 firewall-cmd --permanent --add-port=2379-2380/tcp # etcd集群通信端口 firewall-cmd --permanent --add-port=10250/tcp # kubelet端口 firewall-cmd --permanent --add-port=10251/tcp # kube-scheduler端口 firewall-cmd --permanent --add-port=10252/tcp # kube-controller-manager端口 firewall-cmd --permanent --add-port=10255/tcp # kubelet只读端口 firewall-cmd --reload # 重新加载规则 

3. 配置iptables为空规则(可选但推荐)

若使用iptables作为防火墙工具,需清空现有规则以避免干扰K8s网络:

yum install -y iptables-services # 安装iptables服务 systemctl start iptables && systemctl enable iptables # 启动并开机自启 iptables -F # 清空所有规则 service iptables save # 保存规则 

4. 调整内核参数支持K8s网络

K8s需要开启IP转发、桥接流量调用iptables等功能,需修改内核参数:

cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables=1 # 桥接流量调用iptables net.bridge.bridge-nf-call-ip6tables=1 # IPv6桥接流量调用ip6tables net.ipv4.ip_forward=1 # 开启IP转发 EOF sysctl --system # 生效配置 

5. 验证防火墙设置

  • 检查firewalld状态systemctl status firewalld(应为inactive
  • 检查iptables规则iptables -L -n(应无冲突规则)
  • 测试K8s组件通信:通过kubectl get nodes验证Master与Node节点是否正常通信。

注意事项

  • 生产环境建议:若需保留firewalld,需确保仅开放K8s必需端口,并避免频繁修改规则影响集群稳定性。
  • 网络插件兼容性:部分网络插件(如Calico)可能需要额外防火墙规则,需参考插件文档补充配置。

0