阿里云Kubernetes集群的虚拟节点已经支持服务发现功能,目前支持Intranet service、Headless service、ClusterIP service。
前提条件
- 需要先开通云解析PrivateZone,在云解析DNS控制台中开通。
- 您在Kubernetes集群创建一个虚拟节点,请参见通过部署ACK虚拟节点组件创建ECI Pod。
- 您已成功连接到Kubernetes集群,请参见获取集群KubeConfig并通过kubectl工具连接集群。
环境准备
通过Chart部署虚拟节点后,需要确认已正确配置相关环境变量。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,选择 。
- 在应用市场页面单击应用目录页签,然后搜索并选中ack-virtual-node。
- 在ack-virtual-node页面,单击一键部署。
- 在创建面板中,选择集群和命名空间,然后单击下一步。
- 在参数配置页面,设置相应参数,然后单击确定。
ECI_VPC
:Kubernetes集群使用的VPC ID,需要替换成您当前集群使用的VPC ID。ALIYUN_CLUSTERID
:Kubernetes集群ID,需要替换成您当前使用集群的ID。不允许为空或者设置为default。
操作步骤
- 部署Deployment和创建Service。
样例模板如下所示,在YAML文件中复制如下YAML代码,然后执行
kubectl create -f nginx-service-ack.yaml
命令进行创建。apiVersion: v1 kind: Service metadata: name: nginx-headless-service annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" spec: ports: - port: 80 protocol: TCP selector: app: nginx clusterIP: None --- apiVersion: v1 kind: Service metadata: name: nginx-clusterip-service annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" 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 service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" 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
说明 Kubernetes集群中的Service默认是不会同步到PrivateZone,需要给Service加上以下信息:
此时,虚拟节点Controller才会把Service的解析记录同步到PrivateZone中。annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true"
- 登录云解析DNS控制台。
- 在左侧导航栏中单击PrivateZone,在权威Zone页签,可看到在Zone中自动生成IP解析记录。
- 在目标Zone右侧单击解析设置,弹出解析设置详情页面。说明 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。
文档内容是否对您有帮助?