使用 firewalld 打开端口

我们建议禁用 firewalld。如果你使用的是 Kubernetes 1.19 或更高版本,则必须关闭 firewalld。

某些 源自 RHEL 的 Linux 发行版(包括 Oracle Linux)的默认防火墙规则可能会阻止与 Helm 的通信。

例如,AWS 中的一个 Oracle Linux 镜像具有 REJECT 规则,这些规则会阻止 Helm 与 Tiller 通信:

  1. Chain INPUT (policy ACCEPT)
  2. target prot opt source destination
  3. ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
  4. ACCEPT icmp -- anywhere anywhere
  5. ACCEPT all -- anywhere anywhere
  6. ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
  7. REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
  8. Chain FORWARD (policy ACCEPT)
  9. target prot opt source destination
  10. REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
  11. Chain OUTPUT (policy ACCEPT)
  12. target prot opt source destination

你可运行以下命令检查默认防火墙规则:

  1. sudo iptables --list

下文介绍如何使用 firewalld,将防火墙端口规则应用到高可用 Rancher Server 集群中的节点。

先决条件

安装 v7.x 或更高版本的 firewalld

  1. yum install firewalld
  2. systemctl start firewalld
  3. systemctl enable firewalld

应用防火墙端口规则

在 Rancher 高可用安装中,Rancher Server 设置在三个节点上,三个节点均具有 Kubernetes 的所有三个角色(etcd、controlplane 和 worker)。如果你的 Rancher Server 节点同时具有这三个角色,请在每个节点上运行以下命令:

  1. firewall-cmd --permanent --add-port=22/tcp
  2. firewall-cmd --permanent --add-port=80/tcp
  3. firewall-cmd --permanent --add-port=443/tcp
  4. firewall-cmd --permanent --add-port=2376/tcp
  5. firewall-cmd --permanent --add-port=2379/tcp
  6. firewall-cmd --permanent --add-port=2380/tcp
  7. firewall-cmd --permanent --add-port=6443/tcp
  8. firewall-cmd --permanent --add-port=8472/udp
  9. firewall-cmd --permanent --add-port=9099/tcp
  10. firewall-cmd --permanent --add-port=10250/tcp
  11. firewall-cmd --permanent --add-port=10254/tcp
  12. firewall-cmd --permanent --add-port=30000-32767/tcp
  13. firewall-cmd --permanent --add-port=30000-32767/udp

如果你的 Rancher Server 节点配置了单独的角色,请根据节点角色运行以下命令:

  1. # 在 etcd 节点上运行以下命令:
  2. firewall-cmd --permanent --add-port=2376/tcp
  3. firewall-cmd --permanent --add-port=2379/tcp
  4. firewall-cmd --permanent --add-port=2380/tcp
  5. firewall-cmd --permanent --add-port=8472/udp
  6. firewall-cmd --permanent --add-port=9099/tcp
  7. firewall-cmd --permanent --add-port=10250/tcp
  8. # 在 controlplane 节点上运行以下命令:
  9. firewall-cmd --permanent --add-port=80/tcp
  10. firewall-cmd --permanent --add-port=443/tcp
  11. firewall-cmd --permanent --add-port=2376/tcp
  12. firewall-cmd --permanent --add-port=6443/tcp
  13. firewall-cmd --permanent --add-port=8472/udp
  14. firewall-cmd --permanent --add-port=9099/tcp
  15. firewall-cmd --permanent --add-port=10250/tcp
  16. firewall-cmd --permanent --add-port=10254/tcp
  17. firewall-cmd --permanent --add-port=30000-32767/tcp
  18. firewall-cmd --permanent --add-port=30000-32767/udp
  19. # 在 worker 节点上运行以下命令:
  20. firewall-cmd --permanent --add-port=22/tcp
  21. firewall-cmd --permanent --add-port=80/tcp
  22. firewall-cmd --permanent --add-port=443/tcp
  23. firewall-cmd --permanent --add-port=2376/tcp
  24. firewall-cmd --permanent --add-port=8472/udp
  25. firewall-cmd --permanent --add-port=9099/tcp
  26. firewall-cmd --permanent --add-port=10250/tcp
  27. firewall-cmd --permanent --add-port=10254/tcp
  28. firewall-cmd --permanent --add-port=30000-32767/tcp
  29. firewall-cmd --permanent --add-port=30000-32767/udp

在节点上运行 firewall-cmd 命令后,使用以下命令启用防火墙规则:

  1. firewall-cmd --reload

结果:防火墙已更新,因此 Helm 可以与 Rancher Server 节点通信了。