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

Rancher 节点

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

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

import Tabs from ‘@theme/Tabs’; import TabItem from ‘@theme/TabItem’;

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 进行节点配置
TCP44335.160.43.145/3235.167.242.46/3252.33.59.17/32git.rancher.io (应用商店)
TCP2376使用主机驱动创建的节点中的任何节点 IPDocker Machine 使用的 Docker 守护进程的 TLS 端口
TCP取决于供应商托管集群的 Kubernetes API 端口Kubernetes API

Rancher 节点的入站规则

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

Rancher 节点的出站规则

协议端口目的描述
TCP22使用主机驱动创建的节点中的任何节点 IP使用主机驱动通过 SSH 进行节点配置
TCP44335.160.43.145/3235.167.242.46/3252.33.59.17/32git.rancher.io (应用商店)
TCP2376使用主机驱动创建的节点中的任何节点 IPDocker Machine 使用的 Docker 守护进程的 TLS 端口
TCP取决于供应商托管集群的 Kubernetes API 端口Kubernetes API

注意:

  • 如果您配置了的外部身份验证系统(例如 LDAP),Rancher 节点可能还需要其他出站规则。
  • Kubernetes 建议将 TCP 30000-32767 用于节点端口服务(NodePort svc)。
  • 可能需要对防火墙进行配置,启用在集群和 Pod CIDR 中的流量。

下游 Kubernetes 集群节点

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

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

提示:

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

节点池中节点的端口要求

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

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

import PortsIaasNodes from ‘@theme/PortsIaasNodes’;

自定义节点的端口要求

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

import PortsCustomNodes from ‘@theme/PortsCustomNodes’;

托管集群的端口要求

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

import PortsImportedHosted from ‘@theme/PortsImportedHosted’;

导入集群的端口要求

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

其他端口注意事项

常用端口

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

协议端口描述
TCP22使用主机驱动通过 SSH 进行节点配置
TCP2376主机驱动与 Docker 守护进程通信的 TLS 端口
TCP2379etcd 客户端请求
TCP2380etcd 节点通信
UDP8472Canal/Flannel VXLAN overlay 网络
UDP4789Windows 集群中 Flannel VXLAN overlay 网络
TCP9099Canal/Flannel 健康检查
TCP9796集群监控拉取节点指标的默认端口(仅需要内网可达)
TCP6783Weave 端口
UDP6783-6784Weave UDP 端口
TCP10250kubelet API
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出站