阿里雲Serverless Kubernetes已經支援服務發現功能,目前支援內網SLB和Headless Service的服務發現。
關於雲解析PrivateZone
Alibaba Cloud DNS PrivateZone,是基於阿里雲Virtual Private Cloud(Virtual Private Cloud)環境的私人網域名稱解析和管理服務。您能夠在自訂的一個或多個專用網路中將私人網域名稱映射到IP資源地址,同時在其他網路環境無法訪問您的私人網域名稱。
前提條件
- 需要先開通Alibaba Cloud DNS PrivateZone,在Alibaba Cloud DNS控制台中開通。
- 您已成功建立一個 Serverless Kubernetes 叢集,參見建立 Serverless Kubernetes 叢集。
- 您已成功串連到 Kubernetes 叢集,參見通過 kubectl 串連 Kubernetes 叢集。
操作步驟
- 通過 kubectl 串連到 Kubernetes 叢集,執行如下命令,確認串連的叢集。
kubectl cluster-info Kubernetes master is running at https://xxxxxx.serverless-1.kubernetes.cn-shanghai.aliyuncs.com:6443
- 部署 deployment 和建立 Service。目前僅支援 Intranet Service 和 Headless Service。
以 Intranet Service 為例。建立樣本nginx-deployment-basic.yaml檔案。
vim nginx-deployment-basic.yaml
範例模板如下所示,在yaml檔案中複製如下yaml代碼,然後執行
kubectl create -f nginx-deployment-basic.yaml
命令進行建立。apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 # replace it with your exactly <image_name:tags> ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service-intranet #可通過服務名作為短網域名稱進行訪問 annotations: ##添加註解 service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet spec: ports: - port: 80 protocol: TCP selector: app: nginx type: LoadBalancer
您也可建立 Headless Service 類型的服務,樣本模板如下。
apiVersion: v1 kind: Service metadata: name: nginx-service-headless spec: ports: - port: 80 protocol: TCP selector: app: nginx clusterIP: None
- 執行以下命令,查看應用的健全狀態。
kubectl get svc,pod,deployment
- 登入 Alibaba Cloud DNS控制台。
- 在左側導覽列中單擊
您可在該 VPC 網路環境中通過私人網域名稱訪問Service(長網域名稱或者短網域名稱)。- 長網域名稱訪問:本例中是
nginx-service-intranet.$NAMESPACE.svc.cluster.local
,其中$NAMESPACE為Serverless叢集 ID,在控制台上可以看到,也可以在pod的yaml檔案中通過環境變數得到。env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace
- 短網域名稱訪問:nginx-service-intranet 或 nginx-service-headless,即在yaml編排中定義的服務名。
,可看到該列表下自動產生一條記錄。
- 長網域名稱訪問:本例中是
更多資訊可參見serverless-k8s-examples