若要能夠從公用網際網路存取 Tanzu Kubernetes Grid 叢集中執行的 Kubernetes 服務,請在內部發佈該服務,然後為其提供公用 IP 位址,並建立 DNAT 規則以在入口 CIDR 中的某個 IP 位址公開已發佈的服務。

對叢集服務的網際網路存取由負載平衡器透過啟用 Tanzu Kubernetes Grid 時指定的入口 CIDR 區塊中經過 DNAT 處理的公用 IP 位址進行管理。在 VMware Cloud on AWS 中,負載平衡器服務由 NSX Container Plug-in 實作,為啟用 Tanzu Kubernetes Grid 的每個 SDDC 叢集自動設定了該外掛程式。如需詳細資訊,請參閱 NSX Container Plug-in 概觀

以下步驟概述了可用於使 Kubernetes 服務可從公用網際網路存取的典型工作流程。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 相符。如果您的規則指定 符合內部位址,則還需要建立防火牆規則以允許存取網際網路介面上的 公用 IP 位址。