阿里云Serverless Kubernetes已经支持服务发现功能,目前支持内网SLB和Headless Service的服务发现。
关于云解析PrivateZone
云解析 PrivateZone,是基于阿里云专有网络VPC(Virtual Private Cloud)环境的私有域名解析和管理服务。您能够在自定义的一个或多个专有网络中将私有域名映射到IP资源地址,同时在其他网络环境无法访问您的私有域名。
[tr=transparent]
[/url]说明[tr=transparent]PrivateZone的收费规则参见[url=https://help.aliyun.com/document_detail/71338.html]收费标准。
前提条件
- 需要先开通云解析 PrivateZone,在云解析DNS控制台中开通。
- 您已成功创建一个 Serverless Kubernetes 集群,参见 创建 Serverless Kubernetes 集群。
- 您已成功连接到 Kubernetes 集群,参见通过 kubectl 连接 Kubernetes 集群。
操作步骤
- 通过 kubectl 连接到 Kubernetes 集群,执行如下命令,确认连接的集群。kubectl cluster-infoKubernetes 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: v1kind: Servicemetadata:name: nginx-service-headlessspec:ports:- port: 80protocol: TCPselector:app: nginxclusterIP: None - 执行以下命令,查看应用的运行状况。kubectl get svc,pod,deployment
- 登录 云解析DNS控制台。
- 在左侧导航栏中单击PrivateZone > Zone 列表,可看到该列表下自动生成一条记录。
您可在该 VPC 网络环境中通过私有域名访问Service(长域名或者短域名)。
- 长域名访问:本例中是 nginx-service-intranet.$NAMESPACE.svc.cluster.local,其中$NAMESPACE为Serverless集群 ID,在控制台上可以看到,也可以在pod的yaml文件中通过环境变量得到。env:- name: NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace
- 短域名访问:nginx-service-intranet 或 nginx-service-headless,即在yaml编排中定义的服务名。
更多信息可参见
serverless-k8s-examples