阿里云Serverless Kubernetes已经支持服务发现功能,目前支持Intranet service、Headless service、ClusterIP
service。
前提条件
- 需要先开通云解析 PrivateZone,在云解析DNS控制台中开通。
- 您已经成功创建一个 Serverless Kubernetes 集群,参见创建 Serverless Kubernetes 集群。
- 您已成功连接到 Kubernetes 集群,参见通过 kubectl 连接 Kubernetes 集群。
背景信息
云解析 PrivateZone,是基于阿里云专有网络VPC(Virtual Private Cloud)环境的私有域名解析和管理服务。您能够在自定义的一个或多个专有网络中将私有域名映射到IP资源地址,同时在其他网络环境无法访问您的私有域名。
说明 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/v1beta2
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控制台
- 在左侧导航栏中单击,可看到在Zone中自动生成IP解析记录。
- 单击解析设置,弹出解析设置详情页面。
说明 Zone里面的Record格式为
$svc.$ns
,对应相应的IP解析。解析规则如下:
- LoadBalancer service:PrivateZone中只对应一条解析Record,为SLB IP。
- ClusterIP service:PrivateZone中对应多条解析Record,分别为后端Pod的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