如果您希望在自定义的一个或多个专有网络中将私有域名映射到IP资源地址,同时在其他网络环境中无法访问您的私有域名,可以使用云解析PrivateZone的服务发现功能。阿里云容器服务 Serverless 版支持的服务发现功能是基于阿里云专有网络VPC(Virtual Private Cloud)环境的私有域名解析和管理服务,目前支持Intranet service、Headless service、ClusterIP service。
前提条件
已在云解析DNS控制台中开通云解析PrivateZone。
请选择合适的地域。PrivateZone目前未在中东东部1(迪拜)地域开服。
已创建ACK Serverless集群,并确保已启用PrivateZone组件。
方式一:对于新建的ACK Serverless集群,您可以在创建集群时,指定PrivateZone作为DNS服务发现,启用PrivateZone组件。
方式二:对于已创建的ACK Serverless集群,您可以在
eci-profile
配置项中设置enablePrivateZone
参数值为true
,启用PrivateZone组件。
费用说明
PrivateZone的收费规则,请参见产品定价。
操作步骤
部署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
执行以下命令,查看应用的运行状况。
kubectl get svc,pod,deployment
登录到 云解析DNS控制台。
在左侧导航栏单击内网DNS解析(PrivateZone),在右上角选择管理配置模式,再单击内置权威,在此页签下单击用户域名。
在用户域名页签,单击目标域名操作列的解析记录。
说明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域名解析原理。