跳到内容

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 知道我们需要更新控制平面节点。滚动更新完成后,您将拥有一个仅面向内部的负载均衡器,控制平面节点已注册到该负载均衡器。