Skip to main content

端口要求

为了保证正常运行,Rancher 要求在 Rancher 节点和下游 Kubernetes 集群节点上开放一些端口。

Rancher 节点#

下表列出了运行 Rancher Server 的节点之间需要开放的端口。根据 Rancher Server 的架构,端口的要求有所不同。

从 Rancher v2.5 开始,Rancher 可以安装在任何 Kubernetes 集群上。对于 Rancher 安装在 K3s、RKE 或 RKE2 Kubernetes 集群上,请参考下面的标签。对于其他 Kubernetes 发行版,请参考该发行版的文档,了解集群节点的端口要求。

注意:

  • Rancher 节点可能还需要为外部认证(例如 LDAP)提供额外的出站访问。
  • Kubernetes 建议 NodePort 端口使用 TCP 30000-32767。
  • 对于防火墙,可能需要在集群和 pod CIDR 内启用流量。

K3s 上 Rancher Server 节点的端口#

K3s Server 需要开放 6443 端口供节点访问。

使用 Flannel VXLAN 时,这些节点需要能够通过 UDP 端口 8472 访问其他节点。节点不应侦听其他端口。K3s 使用反向隧道,建立节点与 Server 的出站连接,所有 kubelet 通信都通过该隧道进行。但是,如果您不使用 Flannel,而是使用自定义的 CNI,则 K3s 不需要 8472 端口。

如果要使用 Metrics Server,则需要在每个节点上开放端口 10250。

重要

节点上的 VXLAN 端口不应暴露给外界,因为这会开放集群网络,任何人都可以访问它。请在禁止访问 8472 端口的防火墙/安全组后面运行节点。

Rancher Server 节点的入站规则
协议端口来源描述
TCP80Load balancer/proxy,做外部 SSL 终端使用外部 SSL 终止时的 Rancher UI/API
TCP443
  • server 节点
  • agent 节点
  • 托管/注册的 Kubernetes
  • 任何需要能够使用 Rancher UI 或 API 的源
Rancher agent, Rancher UI/API, kubectl
TCP6443K3s server 节点Kubernetes API
UDP8472K3s server 和 agent 节点Flannel VXLAN 需要
TCP10250K3s server 和 agent 节点kubelet
Rancher 节点出站规则
协议端口目的地描述
TCP22来自使用 Node Driver 程序创建的节点的任何节点 IP使用 Node Driver 程序 SSH 配置节点
TCP443git.rancher.ioRancher catalog
TCP2376Any node IP from a node created using Node driverDocker Machine 使用的 Docker daemon TLS 端口
TCP6443托管/导入的 Kubernetes APIKubernetes API server

RKE 上 Rancher Server 节点的端口#

通常情况下,Rancher 安装在三个 RKE 节点上,这些节点都有 etcd、control plane 和 worker 角色。

下表细分了 Rancher 节点之间流量的端口要求:

Rancher节点之间的流量规则
协议端口描述
TCP443Rancher agents
TCP2379etcd 客户端请求
TCP2380etcd 对等通信
TCP6443Kubernetes apiserver
UDP8472Canal/Flannel VXLAN overlay 网络
TCP9099Canal/Flannel livenessProbe/readinessProbe
TCP10250Metrics server 与所有节点的通信
TCP10254Ingress controller livenessProbe/readinessProbe

下表细分了入站和出站流量的端口要求:

Rancher 节点的入站规则
协议端口来源描述
TCP22RKE CLIRKE 通过 SSH 配置节点
TCP80负载均衡器/反向代理到 Rancher UI/API 的 HTTP 流量
TCP443
  • 负载均衡器/反向代理
  • 所有集群节点和其他 API/UI 客户端的 IP
到 Rancher UI/API 的 HTTPS 流量
TCP6443Kubernetes API 客户端到 Kubernetes API 的 HTTPS 流量
Rancher 节点的出站规则
ProtocolPort目的地描述
TCP44335.160.43.145,35.167.242.46,52.33.59.17Rancher catalog (git.rancher.io)
TCP22使用 node driver 创建的任何节点通过 node driver 对节点进行 SSH 配置
TCP2376使用 node driver 创建的任何节点node driver 使用的 Docker 守护进程 TLS 端口
TCP6443托管/导入的 Kubernetes APIKubernetes API server
TCPProvider dependent托管集群中 Kubernetes API endpoint 的端口Kubernetes API

RancherD 或 RKE2 上 Rancher Server 节点的端口#

RancherD(或 RKE2)Server 需要 6443 和 9345 端口才能被集群中的其他节点访问。

当使用 Flannel VXLAN 时,所有节点都需要能够通过 UDP 端口 8472 访问其他节点。

如果你想使用 metrics server,你需要在每个节点上打开 10250 端口。

重要

节点上的 VXLAN 端口不应暴露给外界,因为这会开放集群网络,任何人都可以访问它。请在禁止访问 8472 端口的防火墙/安全组后面运行节点。

RancherD或RKE2 Server 节点的入站规则
协议端口来源描述
TCP9345RancherD/RKE2 agent 节点Kubernetes API
TCP6443RancherD/RKE2 agent 节点Kubernetes API
UDP8472RancherD/RKE2 server 和 agent 节点仅要求用于 Flannel VXLAN
TCP10250RancherD/RKE2 server 和 agent 节点kubelet
TCP2379RancherD/RKE2 server 节点etcd 客户端端口
TCP2380RancherD/RKE2 server 节点etcd 对等端口
TCP30000-32767RancherD/RKE2 server 和 agent 节点NodePort 端口范围
HTTP8080负载均衡器/代理,进行外部 SSL 终端使用外部 SSL 终端时的 Rancher UI/API
HTTPS8443
  • 托管/注册的 Kubernetes
  • 任何需要能够使用 Rancher UI 或 API 的源
Rancher agent,Rancher UI/API,kubectl。如果你有 LB 做 TLS 终止,则不需要。

通常情况下,允许所有出站流量。

Docker 安装的 Rancher Server 的端口#

下表细分了 Rancher 节点对入站和出站流量的端口要求:

Rancher节点的入站规则
协议端口来源描述
TCP80负载均衡器/代理,进行外部 SSL 终端的处理使用外部 SSL 终端时的 Rancher UI/API
TCP443
  • 托管/注册的 Kubernetes
  • 任何需要能够使用 Rancher UI 或 API 的源
Rancher agent,Rancher UI/API,kubectl
Rancher节点的出站规则
协议端口来源描述
TCP22使用 Node Driver 创建的节点的任何节点 IP使用 Node Driver 对节点进行 SSH 配置
TCP443git.rancher.ioRancher catalog
TCP2376使用 node driver 创建的节点的任何节点 IPDocker Machine 使用的 Docker daemon TLS 端口
TCP6443托管/导入的 Kubernetes APIKubernetes API server

下游 Kubernetes 集群节点#

下游 Kubernetes 集群运行你的应用程序和服务。本节介绍了需要在下游集群的节点上打开哪些端口,以便 Rancher 能够与它们进行通信。

根据下游集群的启动方式,对端口的要求有所不同。下面的每个标签都列出了不同集群类型所需打开的端口。

下图描述了为每个集群类型打开的端口。

Rancher管理平面的端口要求

基本端口要求

提示:

如果安全不是一个很大的问题,并且你对开放一些额外的端口,你可以使用常用端口中的表格作为你的端口参考,而不是下面的综合表格。

Rancher 使用节点池启动 Kubernetes 集群的端口#

下表描述了 Rancher Launched Kubernetes 的端口要求,节点在基础设施提供商中创建。

注意: 在 Amazon EC2 或 DigitalOcean 等云提供商中创建集群期间,Rancher 会自动打开所需的端口。

从 / 到Rancher 节点etcd 节点Control Plane 节点Worker 节点外部负载均衡互联网
Rancher 节点 (1)22 TCPgit.rancher.io (2):
35.160.43.145:32
35.167.242.46:32
52.33.59.17:32
2376 TCP
etcd 节点443 TCP (3)2379 TCP443 TCP
2380 TCP
6443 TCP
8472 UDP
9099 TCP (4)
Control Plane 节点443 TCP (3)2379 TCP443 TCP
2380 TCP
6443 TCP
8472 UDP
10250 TCP
9099 TCP (4)
10254 TCP (4)
Worker 节点443 TCP (3)6443 TCP443 TCP
8472 UDP
9099 TCP (4)
10254 TCP (4)
Kubernetes API Clients6443 TCP (5)
工作负载客户端或负载均衡器30000-32767 TCP / UDP
(nodeport)
80 TCP (Ingress)
443 TCP (Ingress)
注意:

1. 运行Rancher的单节点或者Rancher高可用的节点。
2. 需要用来拉取Rancher应用商店库。
3. 适用于不使用外部负载均衡的情况。
4. 本地流量(非跨节点流量)。
5. 仅当授权集群端点被激活时。

Rancher 使用自定义节点启动 Kubernetes 集群的端口#

下表描述了使用自定义节点启动 Kubernetes 集群的端口要求。

从 / 到Rancher 节点etcd 节点Control 节点Worker 节点外部负载均衡互联网
Rancher 节点 (1)git.rancher.io (2):
35.160.43.145:32
35.167.242.46:32
52.33.59.17:32
etcd 节点443 TCP (3)2379 TCP443 TCP
2380 TCP
6443 TCP
8472 UDP
4789 UDP (7)
9099 TCP (4)
Control Plane 节点443 TCP (3)2379 TCP443 TCP
2380 TCP
6443 TCP
8472 UDP
4789 UDP (7)
10250 TCP
9099 TCP (4)
10254 TCP (4)
Worker 节点443 TCP (3)6443 TCP443 TCP
8472 UDP
4789 UDP (7)
9099 TCP (4)
10254 TCP (4)
Kubernetes API Clients6443 TCP(5)
工作负载客户端或负载均衡器30000-32767 TCP / UDP
(nodeport)
80 TCP (Ingress)
443 TCP (Ingress)
注意:

1. 运行Rancher的单节点或者Rancher高可用的节点。
2. 需要用来拉取Rancher应用商店库。
3. 适用于不使用外部负载均衡的情况。
4. 本地流量(非跨节点流量)。
5. 仅当授权集群端点被激活时。
6. 仅当在 Windows 集群上使用 Overlay 模式时。

托管的 Kubernetes 集群的端口#

下表描述了托管集群 的端口要求。

从 / 到Rancher 节点托管的 / 导入的集群外部负载均衡互联网
Rancher 节点 (1)Kubernetes API
端点端口 (2)
git.rancher.io (3):
35.160.43.145:32
35.167.242.46:32
52.33.59.17:32
8443 TCP
9443 TCP
托管的 / 导入的集群443 TCP (4)(5)443 TCP (5)
Kubernetes API Clients取决于集群 / 供应商 (6)
工作负载客户端取决于集群 / 供应商 (7)
注意:

1. 运行Rancher的单节点或者Rancher高可用的节点。
2. 仅适用于托管集群。
3. 需要用来拉取Rancher应用商店库。
4. 适用于不使用外部负载均衡的情况。
5. 来自 worker 节点。
6. 无需 Rancher 即可直接访问 Kubernetes API。
7. 通常是 Ingress 负载均衡和/或 nodeport。

注册集群的端口#

注意:在 Rancher v2.5 版之前,注册集群被称为导入集群。

下表描述了注册集群的端口要求。

从 / 到Rancher 节点托管的 / 导入的集群外部负载均衡互联网
Rancher 节点 (1)Kubernetes API
端点端口 (2)
git.rancher.io (3):
35.160.43.145:32
35.167.242.46:32
52.33.59.17:32
托管的 / 导入的集群443 TCP (4)(5)443 TCP (5)
Kubernetes API Clients取决于集群 / 供应商 (6)
工作负载客户端取决于集群 / 供应商 (7)
注意:

1. 运行Rancher的单节点或者Rancher高可用的节点。
2. 仅适用于托管集群。
3. 需要用来拉取Rancher应用商店库。
4. 适用于不使用外部负载均衡的情况。
5. 来自 worker 节点。
6. 无需 Rancher 即可直接访问 Kubernetes API。
7. 通常是 Ingress 负载均衡和/或 nodeport。

其他端口注意事项#

常用的端口#

这些端口通常在你的 Kubernetes 节点上打开,无论它是什么类型的集群。

协议端口描述
TCP22使用主机驱动通过 SSH 进行节点配置
TCP179Calico BGP 端口
TCP2376主机驱动与 Docker 守护进程通信的 TLS 端口
TCP2379etcd 客户端请求
TCP2380etcd 节点通信
UDP8472Canal/Flannel VXLAN overlay 网络
UDP4789Windows 集群中 Flannel VXLAN overlay 网络
UDP8443Rancher webhook
TCP9099Canal/Flannel 健康检查
TCP9100Monitoring 从 Linux node-exporters 中抓取指标所需的默认端口
TCP9443Rancher webhook
TCP9796集群监控拉取节点指标的默认端口(仅需要内网可达)
TCP6783Weave 端口
UDP6783-6784Weave UDP 端口
TCP10250Metrics server 与所有节点的通信
TCP10254Ingress controller 健康检查
TCP/UDP30000-32767NodePort 端口范围

本地节点流量#

上述要求中标记为 本地流量 的端口(即 9099 TCP)被用于 Kubernetes 健康检查(livenessProbereadinessProbe)。 这些健康检查是在节点本身执行的。在大多数云环境中,这种本地流量默认是允许的。

但是,在以下情况下可能会阻止此流量

  • 你已经在节点上应用了严格的主机防火墙策略。
  • 你正在使用有多个接口(多宿主)的节点。

在这些情况下,你必须在你的主机防火墙中明确地允许这种流量,如果是公共/私有云托管的机器(即 AWS 或 OpenStack),在你的安全组配置中明确允许此流量。请记住,当在你的安全组中使用安全组作为源或目标时,明确开放端口只适用于节点/实例的私有接口。

Rancher AWS EC2 安全组#

当使用AWS EC2 node driver 在 Rancher 中配置集群节点时,你可以选择让 Rancher 创建一个名为 rancher-nodes 的安全组。以下规则会自动添加到该安全组中。

类型协议端口范围来源/目的地规则类型
SSHTCP220.0.0.0/0Inbound
HTTPTCP800.0.0.0/0Inbound
Custom TCP RuleTCP4430.0.0.0/0Inbound
Custom TCP RuleTCP23760.0.0.0/0Inbound
Custom TCP RuleTCP2379-2380sg-xxx (rancher-nodes)Inbound
Custom UDP RuleUDP4789sg-xxx (rancher-nodes)Inbound
Custom TCP RuleTCP64430.0.0.0/0Inbound
Custom UDP RuleUDP8472sg-xxx (rancher-nodes)Inbound
Custom TCP RuleTCP10250-10252sg-xxx (rancher-nodes)Inbound
Custom TCP RuleTCP10256sg-xxx (rancher-nodes)Inbound
Custom TCP RuleTCP30000-327670.0.0.0/0Inbound
Custom UDP RuleUDP30000-327670.0.0.0/0Inbound
All trafficAllAll0.0.0.0/0Outbound

打开 SUSE Linux Ports#

SUSE Linux 可能有一个防火墙,默认情况下会阻止所有端口。要打开将主机添加到自定义集群所需的端口,

  1. SSH 进入实例。

  2. 在文本模式下启动 YaST。

    sudo yast2
  3. 导航到安全和用户 > 防火墙 > 区域:公共 > 端口。要在界面内导航,请按照指示这里

  4. 要打开所需的端口,将它们输入TCP 端口UDP 端口字段。在这个例子中,9796 和 10250 端口也被打开,用于监控。由此产生的字段应类似于以下内容。

    TCP Ports
    22, 80, 443, 2376, 2379, 2380, 6443, 9099, 9796, 10250, 10254, 30000-32767
    UDP Ports
    8472, 30000-32767
  5. 当所有需要的端口都输入后,选择接受

Last updated on by kingsd041