端口要求

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

Rancher 节点

下表列出了运行 Rancher Server 的节点之间需要开放的端口。

端口要求因 Rancher 是安装在 K3s Kubernetes 集群,RKE Kubernetes 集群还是单个 Docker 容器中而有所不同。

  • K3s
  • RKE
  • Docker
  • RancherD

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

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

如果要使用指标服务器(Metrics Server),则需要在每个节点上开放端口 10250。

重要

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

Rancher Server 节点的入站规则

协议端口描述
TCP6443K3s server 节点Kubernetes API
UDP8472K3s server 和 agent 节点Flannel VXLAN 需要
TCP10250K3s server 和 agent 节点kubelet

通常情况下,可以允许全部出站流量。

Rancher 节点的入站规则

协议端口描述
TCP80负载均衡或反向代理到 Rancher UI/API 的 HTTP 流量
TCP443
  • 负载均衡或反向代理
  • 所有集群节点的 IP 和其他 API/UI 客户端
到 Rancher UI/API 的 HTTPS 流量

Rancher 节点的出站规则

协议端口目的描述
TCP22使用主机驱动创建的节点中的任何节点 IP使用主机驱动通过 SSH 进行节点配置
TCP443git.rancher.ioRancher Catalogs
TCP2376使用主机驱动创建的节点中的任何节点 IPDocker Machine 使用的 Docker 守护进程的 TLS 端口
TCP取决于供应商托管集群的 Kubernetes API 端口Kubernetes API

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

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

如果希望利用度量服务器,则需要在每个节点上打开 10250 端口。

重要的是:节点上的 VXLAN 端口不应该暴露在世界范围内,因为它打开了你的集群网络,任何人都可以访问。在防火墙/安全组后面运行您的节点,禁止访问端口 8472。

RancherD 或 RKE2 服务器节点的入站规则如下:

协议端口描述
TCP9345RancherD/RKE2 agent nodesKubernetes API
TCP6443RancherD/RKE2 agent nodesKubernetes API
UDP8472RancherD/RKE2 server and agent nodesRequired only for Flannel VXLAN
TCP10250RancherD/RKE2 server and agent nodeskubelet
TCP2379RancherD/RKE2 server nodesetcd client port
TCP2380RancherD/RKE2 server nodesetcd peer port
TCP30000-32767RancherD/RKE2 server and agent nodesNodePort port range
HTTP8080Load balancer/proxy that does external SSL terminationRancher UI/API when external SSL termination is used
HTTPS8443
  • hosted/imported Kubernetes
  • any source that needs to be able to use the Rancher UI or API
Rancher agent, Rancher UI/API, kubectl. Not needed if you have LB doing TLS termination.

Rancher 节点的入站规则

协议端口描述
TCP80在外部进行 TLS 终止的负载均衡或反向代理使用外部 TLS 终止时的 Rancher UI/API
TCP443
  • 导入的/托管的 Kubernetes
  • 所有需要使用 API/UI 的源
Rancher agent,Rancher UI/API,kubectl

Rancher 节点的出站规则

协议端口目的描述
TCP22使用主机驱动创建的节点中的任何节点 IP使用主机驱动通过 SSH 进行节点配置
TCP443git.rancher.ioRancher Catalogs
TCP2376使用主机驱动创建的节点中的任何节点 IPDocker Machine 使用的 Docker 守护进程的 TLS 端口
TCP取决于供应商托管集群的 Kubernetes API 端口Kubernetes API
注意
  • 如果您配置了的外部身份验证系统(例如 LDAP),Rancher 节点可能还需要其他出站规则。
  • Kubernetes 建议将 TCP 30000-32767 用于节点端口服务(NodePort svc)。
  • 可能需要对防火墙进行配置,启用在集群和 Pod CIDR 中的流量。

GCP GKE 中 Rancher Server 端口

当把 Rancher 部署到 GKE 私有集群中时,Rancher 运行的节点必须可以从 controlplane 访问。

协议端口来源描述
TCP9443The GKE master /28 rangeRancher webhooks

下游 Kubernetes 集群节点

下游 Kubernetes 集群可运行您的业务应用。本节介绍需要在下游集群中的节点上开放哪些端口,以便 Rancher 可以与它们进行通信。

集群节点需要开放的端口会根据集群的启动方式而变化。下面列出了需要为不同集群创建类型开放的端口。

提示

如果安全不是一个大问题,并且可以开放一些其他端口,可以将常用端口作为端口参考,而不是使用下面的完整列表。

节点池中节点的端口要求

下表描述了在基础设施提供商中创建节点用于Rancher 启动 Kubernetes的端口需求。

从 / 到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)
外部负载均衡 (5)80 TCP
443 TCP (6)
API / UI 客户端80 TCP (3)80 TCP
443 TCP (3)443 TCP
工作负载客户端30000-32767 TCP / UDP
(nodeport)
80 TCP (Ingress)
443 TCP (Ingress)
注意:

1. 运行Rancher的单节点或者Rancher高可用的节点。
2. 需要用来拉取Rancher应用商店库。
3. 适用于不使用外部负载均衡的情况。
4. 本地流量(非跨节点流量)。
5. 负责Rancher UI / API的负载均衡或反向代理。
6. 仅适用于SSL没有在外部负载均衡终止。
注意

在 Amazon EC2 或阿里云等云提供商中创建集群时,Rancher 会自动开放所需的端口。

自定义节点的端口要求

下表描述了带有自定义节点RKE 集群的端口要求。

从 / 到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)
外部负载均衡 (5)80 TCP
443 TCP (6)
API / UI 客户端80 TCP (3)80 TCP
443 TCP (3)443 TCP
工作负载客户端30000-32767 TCP / UDP
(nodeport)
80 TCP (Ingress)
443 TCP (Ingress)
注意:

1. 运行Rancher的单节点或者Rancher高可用的节点。
2. 需要用来拉取Rancher应用商店库。
3. 适用于不使用外部负载均衡的情况。
4. 本地流量(非跨节点流量)。
5. 负责Rancher UI / API的负载均衡或反向代理。
6. 仅适用于SSL没有在外部负载均衡终止。
7. 仅适用于 Windows 集群中使用 Overlay 网络模式。

托管集群的端口要求

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

从 / 到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)
外部负载均衡 (5)80 TCP
443 TCP (6)
API / UI 客户端80 TCP (4)
443 TCP (4)
80 TCP
443 TCP
工作负载客户端取决于集群 / 供应商 (7)
注意:

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

导入集群的端口要求

下表描述了导入集群的端口要求。

从 / 到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)
外部负载均衡 (5)80 TCP
443 TCP (6)
API / UI 客户端80 TCP (4)
443 TCP (4)
80 TCP
443 TCP
工作负载客户端取决于集群 / 供应商 (7)
注意:

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

其他端口注意事项

常用端口

通常情况下,可以将这些端口在 Kubernetes 节点上开放,无论它是哪种类型的集群。

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

本地节点流量

标记为local traffic(即: 9099 TCP)的端口用于 Kubernetes 健康检查(livenessProbereadinessProbe)。这些健康检查在节点本身上执行。在大多数云环境中,默认情况下会允许此本地流量。

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

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

在这些情况下,您必须在您的主机防火墙,或者在公有/私有云托管机器(AWS 或 OpenStack)安全组配置中显式地允许这些流量。请记住,在将安全组用作安全组中的源或目标时,显式打开端口只适用于节点/实例的私有接口。

Rancher AWS EC2 安全组

在使用AWS EC2 主机驱动在 Rancher 中配置集群节点时,您可以选择让 Rancher 创建一个名为 rancher-nodes 的安全组。以下规则将自动添加到此安全组。

类型协议端口范围源/目的规则类型
SSHTCP220.0.0.0/0入站
HTTPTCP800.0.0.0/0入站
自定义 TCP 规则TCP4430.0.0.0/0入站
自定义 TCP 规则TCP23760.0.0.0/0入站
自定义 TCP 规则TCP2379-2380sg-xxx (rancher-nodes)入站
自定义 UDP 规则UDP4789sg-xxx (rancher-nodes)入站
自定义 TCP 规则TCP64430.0.0.0/0入站
自定义 UDP 规则UDP8472sg-xxx (rancher-nodes)入站
自定义 TCP 规则TCP10250-10252sg-xxx (rancher-nodes)入站
自定义 TCP 规则TCP10256sg-xxx (rancher-nodes)入站
自定义 TCP 规则TCP30000-327670.0.0.0/0入站
自定义 UDP 规则UDP30000-327670.0.0.0/0入站
全部流量AllAll0.0.0.0/0出站

SLES 15/ openSUSE LEAP 15

  1. SSH 进入实例。

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

    1. sudo yast2

    Copy

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

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

    1. TCP Ports
    2. 22, 80, 443, 2376, 2379, 2380, 6443, 9099, 9796, 10250, 10254, 30000-32767
    3. UDP Ports
    4. 8472, 30000-32767

    Copy

  5. 当所有需要的端口都输入后,选择接受

SLES 12/ openSUSE LEAP 42

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

  1. SSH 进入实例。
  2. 编辑/etc/sysconfig/SuSEfirewall2,打开所需端口。在本例中,也打开 9796 和 10250 端口进行监控。FW_SERVICES_EXT_TCP=”22 80 443 2376 2379 2380 6443 9099 9796 10250 10254 30000:32767” FW_SERVICES_EXT_UDP=”8472 30000:32767” FW_ROUTE=yes
  3. 用新的端口重新启动防火墙。SuSEfirewall2

结果:该节点拥有添加到自定义集群所需的开放端口。节点有开放的端口,需要添加到自定义集群。