要允许从公用 Internet 访问 Tanzu Kubernetes Grid 集群中运行的 Kubernetes 服务,请在内部发布该服务,然后为其提供公用 IP 地址,并创建 DNAT 规则以通过输入 CIDR 中的 IP 地址公开该发布的服务。

对集群服务的 Internet 访问由负载均衡器通过激活 Tanzu Kubernetes Grid 时指定的输入 CIDR 块中经过 DNAT 处理的公用 IP 地址进行管理。在 VMware Cloud on AWS 中,负载均衡器服务由 NSX Container Plug-in 实施,在激活 Tanzu Kubernetes Grid 的每个 SDDC 集群自动配置了该插件。有关详细信息,请参见 NSX Container Plug-in 概述

以下步骤概述了可用于使 Kubernetes 服务可从公用 Internet 访问的典型工作流。VMware Cloud Tech Zone 文章在 VMware Cloud on AWS 中设置对 Tanzu Kubernetes 集群的公共访问更详细地介绍了此工作流。

过程

  1. 登录到 VMware Cloud Services (https://vmc.vmware.com)。
  2. 使用 VMware Cloud on AWS API 在内部发布服务。
    将其部署为 LoadBalancer 类型的服务,并指定命名空间和节点端口,如下所示。
    apiversion: v1
    kind: service
    metadata:
        name: example-svc
        namespace: ns1
        labels:
            app: hardtop-example
    spec:
        ports:
            port:80
            targetPort: 8080
        type: LoadBalancer
        selector:
            app: example-app
    部署 type: LoadBalancer 的 Kubernetes 服务将发布该服务,使其在集群内可通过指定端口(在此示例中为 port: 80)进行访问,并将服务的节点端口映射到大于 30000 的随机端口。
  3. 创建 VMware Cloud on AWS 计算网关防火墙规则,允许通过虚拟机的外部 IP 和映射的节点端口(在此示例中使用 31552)访问虚拟机。
    使用类似 kubectl 的命令返回防火墙规则所需的服务属性。
    kubectl get service  example-svc -n ns1
    NAME            TYPE             CLUSTER-IP       EXTERNAL-IP    PORT(S)
    example-svc     LoadBalancer     10.96.249.36     10.130.1.9     80:31552/TCP
    按照 《VMware Cloud on AWS 网络和安全性》指南中 添加或修改管理网关防火墙规则中的过程创建包含如下参数的规则:
    选项 描述
    任意
    目标 服务的 EXTERNAL-IP(在此示例中为 10.130.1.9)
    服务 HTTP
    操作 允许
  4. 为提供服务的虚拟机请求公用 IP 地址。
    按照 《VMware Cloud on AWS 网络和安全性》指南中 请求或释放公用 IP 地址中的过程执行操作:
  5. 为此公用 IP 创建 DNAT 规则。
    按照 《VMware Cloud on AWS 网络和安全性》指南中 创建或修改 NAT 规则中的过程创建一个 DNAT 规则将公用 IP 与内部 IP 相匹配。如果您的规则指定 匹配内部地址,则还需要创建一个防火墙规则以允许访问 Internet 接口上的 公用 IP 地址。