网络要求

网络要求

外部网络要求

Anthos clusters on Bare Metal 需要连接到互联网才能运行。Anthos clusters on Bare Metal 从 Container Registry 检索集群组件,并且集群需要注册到 Connect

您可以使用公共互联网(通过 HTTPS),通过 Virtual Private Network (VPN) 或通过专用互连连接到 Google。

内部网络要求

Anthos clusters on Bare Metal 可以与集群节点之间的第 2 层或第 3 层连接搭配使用,并且要求负载均衡器节点位于同一第 2 层网域。负载均衡器节点可以是控制层面节点或一组专用节点。如需了解配置信息,请参阅选择和配置负载均衡器

无论您是在控制层面节点池还是一组专用节点上运行负载均衡器,第 2 层网络要求都适用。

负载均衡器机器的要求如下:

  • 给定集群的所有负载均衡器都在同一个第 2 层网域中。
  • 所有 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 的一些关键网络概念。

Anthos clusters on Bare Metal 的典型网络配置

  • 控制层面节点运行负载均衡器,它们都位于同一第 2 层网络中,而其他连接(包括工作器节点)只需要第 3 层连接。
  • 配置文件定义工作器节点池的 IP 地址。配置文件还定义用于以下用途的 VIP:
    • 服务
    • 入站
    • 通过 Kubernetes API 访问控制层面
  • 此外还需要与 Google Cloud 的连接。

端口使用量

本部分介绍在集群和负载均衡器节点上如何使用 UDP 和 TCP 端口。

主节点

协议方向端口范围用途使用者
UDP入站6081GENEVE 封装本身
TCP入站22管理员集群节点的预配和更新管理员工作站
TCP入站6444Kubernetes API 服务器全部
TCP入站2379 - 2380etcd 服务器客户端 APIkube-apiserver、etcd
TCP入站10250kubelet API自身、控制层面
TCP入站10251kube-scheduler本身
TCP入站10252kube-controller-manager本身
TCP两者4240CNI 健康检查全部

工作器节点

协议方向端口范围用途使用者
TCP入站22用户集群节点的预配和更新管理员集群节点
UDP入站6081GENEVE 封装本身
TCP入站10250kubelet API自身、控制层面
TCP入站30000 - 32767NodePort Service本身
TCP两者4240CNI 健康检查全部

负载均衡器节点

协议方向端口范围用途使用者
TCP入站22用户集群节点的预配和更新管理员集群节点
UDP入站6081GENEVE 封装本身
TCP入站443*集群管理全部
TCP两者4240CNI 健康检查全部
TCP入站7946Metal LB 健康检查LB 节点
UDP入站7946Metal LB 健康检查LB 节点

* 可以在集群配置中使用 controlPlaneLBPort 字段配置此端口。

多集群端口要求

在多集群配置中,添加的集群必须包含以下端口才能与管理员集群通信。

协议方向端口范围用途使用者
TCP入站22集群节点的预配和更新所有节点
TCP入站443*用于添加集群的 Kubernetes API 服务器控制层面、LB 节点

* 可以在集群配置中使用 controlPlaneLBPort 字段配置此端口。

配置 firewalld 端口

从 Anthos clusters on Bare Metal 1.7.0 开始,您无需停用 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=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 替换为为 pod 预留的 CIDR 块 clusterNetwork.pods.cidrBlocks。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=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 替换为为 pod 预留的 CIDR 块 clusterNetwork.pods.cidrBlocks。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=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 --reloadfirewall-cmd --reload

PODS_CIDR 替换为为 pod 预留的 CIDR 块 clusterNetwork.pods.cidrBlocks。Pod 的默认 CIDR 地址块是 192.168.0.0/16