kOps 中的网络拓扑 ¶
kOps 支持多种预定义的网络拓扑。它们被分成常用的场景或拓扑。
下面列出了每个支持的拓扑,以及如何部署它们的示例。
支持的拓扑 ¶
kOps 支持以下拓扑
拓扑 | 值 | 描述 |
---|---|---|
公共集群 | public | 所有节点都将在可从互联网访问的子网中启动。 |
私有集群 | private | 所有节点都将在没有来自互联网的入站流量的子网中启动。 |
子网类型 ¶
公共子网 ¶
类型为 Public
的子网接受来自互联网的入站流量。
私有子网 ¶
类型为 Private
的子网不会从互联网路由流量。
如果集群为 IPv6,则 Private
子网为纯 IPv6。
如果子网支持 IPv4,则它通常具有来自私有 IP 地址空间的 CIDR 范围。出站到互联网的流量通常通过网络地址转换 (NAT) 设备(如 AWS NAT 网关)进行路由。
如果子网支持 IPv6,则出站到互联网的流量通常通过连接跟踪防火墙(如 AWS 出站专用互联网网关)进行路由。出站到 NAT64 范围 64:ff9b::/96
的流量通常路由到 NAT64 设备(如 AWS NAT 网关)。
双栈子网 ¶
类型为 DualStack
的子网类似于 Private
,但支持 IPv4 和 IPv6。
在 AWS 上,此子网类型用于节点(如控制平面节点和堡垒机),这些节点需要是负载均衡器的实例目标。
实用子网 ¶
类型为 Utility
的子网类似于 Public
,但不用于配置节点。
实用子网用于配置接受来自互联网的入站流量的负载均衡器。它们还用于配置 NAT 设备。
在创建时定义拓扑 ¶
要指定拓扑,请使用 --topology
或 -t
标志,如下所示
kops create cluster ... --topology public|private
您也可以设置 网络选项,但 kubenet
选项不支持私有拓扑。
使用私有拓扑新创建的集群将通过负载均衡器具有对 Kubernetes API 的公共访问权限以及(可选的)SSH 堡垒机实例。这可以通过以下描述进行更改。
更改 API 服务器的拓扑 ¶
要将位于 API 服务器前面的负载均衡器从面向互联网更改为仅面向内部,需要完成以下步骤
AWS 负载均衡器不支持从面向互联网更改为面向内部。但是,我们可以手动将其删除,并让 kOps 为我们重新创建 ELB。
将负载均衡器从面向互联网更改为面向内部的步骤 ¶
- 编辑集群:
kops edit cluster $NAME
- 将 api 负载均衡器类型从:Public 更改为 Internal。完成时应如下所示
spec: api: loadBalancer: type: Internal
- 保存并退出编辑
- 运行更新命令以检查配置:
kops update cluster $NAME
- 在使用
--yes
选项执行相同的命令之前,请进入 AWS 控制台并删除 api 负载均衡器 - 运行:
kops update cluster $NAME --yes
- 运行滚动更新,以便控制平面节点注册到新的内部负载均衡器。运行
kops rolling-update cluster --cloudonly --force --instance-group-roles master --yes
命令。
我们必须使用--cloudonly
选项,因为我们删除了 API 负载均衡器,因此无法与 Kubernetes API 通信。--force
选项是为了让 kOps 知道我们需要更新控制平面节点。滚动更新完成后,您将拥有一个仅面向内部的负载均衡器,控制平面节点已注册到该负载均衡器。