基于External-DNS的多集群Service DNS实践
概述
External-DNS提供了編程方式管理Kubernetes Service資源的DNS的功能,類似于容器服務(wù)kubernetes federation v2實(shí)踐一:基于External-DNS的多集群Ingress DNS實(shí)踐,External-DNS會監(jiān)聽LoadBalancer類型的Service,然后與云廠商打通,按照可用區(qū)、region和全局三個(gè)維度生成獨(dú)自的域名解析記錄,便于服務(wù)間調(diào)用引導(dǎo)流量。本文簡單介紹如何在阿里云容器平臺上使用External-DNS管理多集群Service DNS。
環(huán)境準(zhǔn)備
參考容器服務(wù)kubernetes federation v2實(shí)踐一:基于External-DNS的多集群Ingress DNS實(shí)踐完成【聯(lián)邦集群準(zhǔn)備】、【配置RAM信息】和【部署External-DNS】部分,并配置好kubeConfig,如下所示:
kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * cluster1 cluster1 kubernetes-admin1cluster2 cluster2 kubernetes-admin2資源部署
創(chuàng)建FederatedDeployment和FederatedService
yaml如下,注意FederatedService類型為LoadBalancer
apiVersion: v1 kind: Namespace metadata:name: test-namespace---apiVersion: types.federation.k8s.io/v1alpha1 kind: FederatedNamespace metadata:name: test-namespacenamespace: test-namespace spec:placement:clusterNames:- cluster1- cluster2---apiVersion: types.federation.k8s.io/v1alpha1 kind: FederatedDeployment metadata:name: test-deploymentnamespace: test-namespace spec:template:metadata:labels:app: nginxspec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- image: nginxname: nginxplacement:clusterNames:- cluster1- cluster2---apiVersion: types.federation.k8s.io/v1alpha1 kind: FederatedService metadata:name: test-servicenamespace: test-namespace spec:template:spec:selector:app: nginxtype: LoadBalancerports:- name: httpport: 80placement:clusterNames:- cluster2- cluster1查看各個(gè)集群Service詳情:
get svc -n test-namespace --context cluster1 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE test-service LoadBalancer 172.23.5.173 39.96.243.59 80:30185/TCP 28sget svc -n test-namespace --context cluster2 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE test-service LoadBalancer 172.21.11.44 47.95.152.65 80:30384/TCP 31s創(chuàng)建Domain和ServiceDNSRecord
yaml如下,注意請將【service.example-domain.club】替換成測試域名(必須由阿里云托管的域名)。
apiVersion: multiclusterdns.federation.k8s.io/v1alpha1 kind: Domain metadata:name: test-domainnamespace: federation-system domain: service.example-domain.club --- apiVersion: multiclusterdns.federation.k8s.io/v1alpha1 kind: ServiceDNSRecord metadata:name: test-servicenamespace: test-namespace spec:domainRef: test-domainrecordTTL: 600結(jié)果分析
查看DnsEndpoint詳情:
kubectl get dnsendpoint -n test-namespace -o yaml apiVersion: v1 items: - apiVersion: multiclusterdns.federation.k8s.io/v1alpha1kind: DNSEndpointmetadata:creationTimestamp: 2019-05-17T08:49:31Zgeneration: 2name: service-test-servicenamespace: test-namespaceresourceVersion: "742339863"selfLink: /apis/multiclusterdns.federation.k8s.io/v1alpha1/namespaces/test-namespace/dnsendpoints/service-test-serviceuid: afd3e22a-7880-11e9-9566-326dc52c25d3spec:endpoints:- dnsName: test-service.test-namespace.test-domain.svc.cn-beijing-a.cn-beijing.service.example-domain.clubrecordTTL: 600recordType: Atargets:- 47.95.152.65- dnsName: test-service.test-namespace.test-domain.svc.cn-beijing-f.cn-beijing.service.example-domain.clubrecordTTL: 600recordType: Atargets:- 39.96.243.59- dnsName: test-service.test-namespace.test-domain.svc.cn-beijing.service.example-domain.clubrecordTTL: 600recordType: Atargets:- 39.96.243.59- 47.95.152.65- dnsName: test-service.test-namespace.test-domain.svc.service.example-domain.clubrecordTTL: 600recordType: Atargets:- 39.96.243.59- 47.95.152.65 kind: List metadata:resourceVersion: ""selfLink: ""可以看到External-DNS已經(jīng)自動生成了4條解析記錄,包含北京兩個(gè)可用區(qū)、北京region和全局四個(gè)dns解析記錄。
dig +short @dns7.hichina.com test-service.test-namespace.test-domain.svc.cn-beijing-a.cn-beijing.service.example-domain.club 47.95.152.65dig +short @dns7.hichina.com test-service.test-namespace.test-domain.svc.cn-beijing-f.cn-beijing.service.example-domain.club 39.96.243.59dig +short @dns7.hichina.com test-service.test-namespace.test-domain.svc.cn-beijing.service.example-domain.club 47.95.152.65 39.96.243.59dig +short @dns7.hichina.com test-service.test-namespace.test-domain.svc.service.example-domain.club 47.95.152.65 39.96.243.59結(jié)論
External-DNS在Federation-V2多集群聯(lián)邦環(huán)境下,可以根據(jù)Service部署所在的可用區(qū)、region和全局三個(gè)維度生成多條DNS解析記錄,幫助服務(wù)靈活的引導(dǎo)流量。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的基于External-DNS的多集群Service DNS实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Archsummit 2019重磅分享|
- 下一篇: 为什么kill进程后socket一直处于