全部產品
Search
文件中心

Container Service for Kubernetes:雲端式解析PrivateZone的服務發現

更新時間:Nov 07, 2024

如果您希望在自訂的一個或多個專用網路中將私人網域名稱映射到IP資源地址,同時在其他網路環境中無法訪問您的私人網域名稱,可以使用雲解析PrivateZone的服務發現功能。阿里雲Container Service Serverless 版支援的服務發現功能是基於阿里雲Virtual Private Cloud(Virtual Private Cloud)環境的私人網域名稱解析和管理服務,目前支援Intranet service、Headless service、ClusterIP service。

前提條件

  • 已在Alibaba Cloud DNS控制台中開通雲解析PrivateZone。

    請選擇合適的地區。PrivateZone目前未在中東東部1(杜拜)地區開服。

  • 已建立ACK Serverless叢集,並確保已啟用PrivateZone組件。

    • 方式一:對於建立的ACK Serverless叢集,您可以在建立叢集時,指定PrivateZone作為DNS服務發現,啟用PrivateZone組件。

      image.png

    • 方式二:對於已建立的ACK Serverless叢集,您可以在eci-profile配置項中設定enablePrivateZone參數值為true,啟用PrivateZone組件。

  • 已通過kubectl串連Kubernetes叢集

費用說明

PrivateZone的收費規則,請參見產品定價

操作步驟

  1. 部署Deployment和建立Service。

    範例模板如下所示,在YAML檔案中複製如下的YAML代碼,然後執行kubectl create -f nginx-service.yaml命令進行建立。

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-headless-service
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      clusterIP: None
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-clusterip-service
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      type: ClusterIP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-intranet-service
      annotations:
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      type: LoadBalancer
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image:  nginx:alpine
            ports:
            - containerPort: 80
  2. 執行以下命令,查看應用的健全狀態。

    kubectl get svc,pod,deployment
  3. 登入到 Alibaba Cloud DNS控制台

  4. 在左側導覽列單擊內網DNS解析(PrivateZone),在右上方選擇管理配置模式,再單擊內建權威,在此頁簽下單擊使用者網域名稱

  5. 使用者網域名稱頁簽,單擊目標網域名稱操作列的解析記錄

    說明

    Zone裡面的Record格式為$svc.$ns,對應相應的IP解析。解析規則如下:

    • LoadBalancer service:PrivateZone中只對應一條解析Record,為SLB IP。

    • ClusterIP service:PrivateZone中只對應一條解析Record,為Cluster IP。

    • Headless service:PrivateZone中對應多條解析Record,分別為後端Pod的IP。

    您可在該VPC網路環境中通過私人網域名稱訪問Service。

    • 長網域名稱訪問:$svc.$ns.svc.cluster.local.$clusterId,通過這種方式也可以訪問其他叢集中同步到PrivateZone的Service。

    • 短網域名稱訪問:您可以通過$svc訪問本Namespace下的Service,通過$svc.$ns訪問其他Namespace中的Service。

    更多資訊,請參見serverless-k8s-examples

相關文檔

ACK Serverless叢集除了可以選擇PrivateZone,也可以選擇CoreDNS作為DNS伺服器(二者選其一即可)。具體操作,請參見ACK Serverless叢集中DNS網域名稱解析原理