外部网络要求
Anthos clusters on Bare Metal 需要连接到互联网才能运行。Anthos clusters on Bare Metal 从 Container Registry 检索集群组件,并且集群已向 Connect 注册。
您可以使用公共互联网,通过 HTTPS、虚拟专用网 (VPN) 或专用互连连接连接到 Google。
内部网络要求
Anthos clusters on Bare Metal 可以与集群节点之间的第 2 层或第 3 层连接搭配使用,但要求负载均衡器节点具有第 2 层连接。负载均衡器节点可以是控制平面节点,也可以是一组专用节点。如需了解详情,请参阅选择和配置负载均衡器。
无论您是在控制层面节点池还是一组专用节点上运行负载均衡器,第 2 层连接要求都适用。
负载均衡器机器的要求如下:
- 给定集群的所有负载均衡器都在同一个第 2 层网域中。
- 所有虚拟 IP 地址 (VIP) 都必须在负载均衡器机器子网中,并且可路由到子网的网关。
- 用户负责允许入站负载均衡器流量。
Pod 网络
Anthos clusters on Bare Metal 1.7.0 及更高版本允许您在每个节点上最多配置 250 个 pod。Kubernetes 会为每个节点分配一个无类别域间路由 (CIDR) 地址块,以便每个 pod 都可以有一个唯一的 IP 地址。CIDR 地址块的大小对应于每个节点的最大 pod 数量。下表列出了 Kubernetes 根据每个节点的已配置最大 Pod 数量分配给每个节点的 CIDR 地址块的大小:
每个节点的最大 Pod 数量 | 每个节点的 CIDR 地址块 | IP 地址数量 |
---|---|---|
32 | /26 | 64 |
33 - 64 | /25 | 128 |
65 – 128 | /24 | 256 |
129 - 250 | /23 | 512 |
若要在每个节点运行 250 个 pod,需要 Kubernetes 为每个节点预留 /23
CIDR 地址块。假设您的集群对 clusterNetwork.pods.cidrBlocks
字段使用默认值 /16
,则该集群的节点数上限为 (2(23-16))=128 个。如果您打算让该集群超出此上限,则可以增大 clusterNetwork.pods.cidrBlocks
的值或减小 nodeConfig.podDensity.maxPodsPerNode
的值。
具有高可用性的单用户集群部署
下图通过一种可能的网络配置介绍 Anthos clusters on Bare Metal 的一些关键网络概念。
请考虑以下信息以满足网络要求:
- 控制层面节点运行负载均衡器,并且它们都具有第 2 层连接,而其他连接(包括工作器节点)只需要第 3 层连接。
- 配置文件定义工作器节点池的 IP 地址。配置文件还定义用于以下用途的 VIP:
- 服务
- 入站
- 通过 Kubernetes API 访问控制层面
- 需要连接到 Google Cloud。
端口使用量
本部分介绍在集群和负载均衡器节点上如何使用 UDP 和 TCP 端口。
控制层面节点
协议 | 方向 | 端口范围 | 用途 | 使用者 |
---|---|---|---|---|
UDP | 入站 | 6081 | GENEVE 封装 | 本身 |
TCP | 入站 | 22 | 管理员集群节点的预配和更新 | 管理员工作站 |
TCP | 入站 | 6444 | Kubernetes API 服务器 | 全部 |
TCP | 入站 | 2379 - 2380 | etcd 服务器客户端 API | kube-apiserver 和 etcd |
TCP | 入站 | 10250 | kubelet API | 自行控制层面 |
TCP | 入站 | 10251 | kube-scheduler | 本身 |
TCP | 入站 | 10252 | kube-controller-manager | 本身 |
TCP | 入站 | 10256 | 节点健康检查 | 全部 |
TCP | 两者 | 4240 | CNI 健康检查 | 全部 |
工作器节点
协议 | 方向 | 端口范围 | 用途 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 22 | 用户集群节点的预配和更新 | 管理员集群节点 |
UDP | 入站 | 6081 | GENEVE 封装 | 本身 |
TCP | 入站 | 10250 | kubelet API | 自行控制层面 |
TCP | 入站 | 10256 | 节点健康检查 | 全部 |
TCP | 入站 | 30000 - 32767 | NodePort 项服务 | 本身 |
TCP | 两者 | 4240 | CNI 健康检查 | 全部 |
负载均衡器节点
协议 | 方向 | 端口范围 | 用途 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 22 | 用户集群节点的预配和更新 | 管理员集群节点 |
UDP | 入站 | 6081 | GENEVE 封装 | 本身 |
TCP | 入站 | 443* | 集群管理 | 全部 |
TCP | 两者 | 4240 | CNI 健康检查 | 全部 |
TCP | 入站 | 7946 | Metal LB 健康检查 | 负载均衡器节点 |
UDP | 入站 | 7946 | Metal LB 健康检查 | 负载均衡器节点 |
TCP | 入站 | 10256 | 节点健康检查 | 全部 |
* 可以在集群配置中使用 controlPlaneLBPort
字段配置此端口。
多集群端口要求
在多集群配置中,添加的集群必须包含以下端口才能与管理员集群通信。
协议 | 方向 | 端口范围 | 用途 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 22 | 集群节点的预配和更新 | 所有节点 |
TCP | 入站 | 443* | 用于添加集群的 Kubernetes API 服务器 | 控制平面和负载均衡器节点 |
* 可以在集群配置中使用 controlPlaneLBPort
字段配置此端口。
配置 firewalld 端口
您无需停用 firewalld 即可在 Red Hat Enterprise Linux (RHEL) 或 CentOS 上运行 Anthos clusters on bare metal。如需使用 firewalld,您必须打开控制层面节点、工作器节点和负载均衡器节点使用的 UDP 和 TCP 端口,如本页面上的端口使用量中所述。以下示例配置展示了如何使用 firewalld 命令行实用程序 firewall-cmd
打开端口。
控制平面节点示例配置
以下命令块展示了如何在运行控制层面节点的服务器上打开所需端口的示例:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250-10252/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=2379-2380/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
将 PODS_CIDR
替换为为 clusterNetwork.pods.cidrBlocks
字段中配置的 pod 预留的 CIDR 地址块。Pod 的默认 CIDR 地址块是 192.168.0.0/16
。
工作器节点示例配置
以下命令块展示了如何在运行工作器节点的服务器上打开所需端口的示例:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
将 PODS_CIDR
替换为为 clusterNetwork.pods.cidrBlocks
字段中配置的 pod 预留的 CIDR 地址块。Pod 的默认 CIDR 地址块是 192.168.0.0/16
。
负载均衡器节点示例配置
以下命令块展示了如何在运行负载均衡器节点的服务器上打开所需端口的示例:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=7946/tcp
firewall-cmd --permanent --zone=public --add-port=7946/udp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
将 PODS_CIDR
替换为为 clusterNetwork.pods.cidrBlocks
字段中配置的 pod 预留的 CIDR 地址块。Pod 的默认 CIDR 地址块是 192.168.0.0/16
。