基于External-DNS的多集群Ingress DNS实践
概要
External-DNS提供了编程方式管理Kubernetes Ingress资源的DNS的功能,方便用户从Ingress管理DNS解析记录。而在kubernetes federation v2环境中,使用External-DNS可以快速的管理多个联邦集群的Ingress DNS解析,降低用户的操作成本。下面将简单介绍在阿里云容器服务环境中,如何使用External-DNS管理联邦集群的Ingress DNS解析。
联邦集群准备
参考阿里云Kubernetes容器服务上体验Federation v2 搭建两个集群组成的联邦集群(配置好kubeconfig,并完成两个集群的join)。
配置RAM信息
选择Kubernetes集群节点列表内任意一个Worker节点,打开对应的节点列表信息页面。
找到对应的 RAM 角色,打开RAM控制台,找到对应的角色名称,添加【AliyunDNSFullAccess】权限。
注意:每个集群都需要配置RAM信息。
部署External-DNS
配置RBAC
执行下面yaml:
apiVersion: v1
kind: ServiceAccount
metadata:name: external-dns
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:name: external-dns
rules:
- apiGroups: [""]resources: ["services"]verbs: ["get","watch","list"]
- apiGroups: [""]resources: ["pods"]verbs: ["get","watch","list"]
- apiGroups: ["extensions"]resources: ["ingresses"]verbs: ["get","watch","list"]
- apiGroups: [""]resources: ["nodes"]verbs: ["list"]
- apiGroups: ["multiclusterdns.federation.k8s.io"]resources: ["dnsendpoints"]verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:name: external-dns-viewer
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: external-dns
subjects:
- kind: ServiceAccountname: external-dnsnamespace: default
部署External-DNS服务
执行下面yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: external-dns
spec:strategy:type: Recreatetemplate:metadata:labels:app: external-dnsspec:serviceAccountName: external-dnscontainers:- name: external-dnsimage: registry.cn-beijing.aliyuncs.com/acs/external-dns:v0.5.8-27args:- --source=crd- --crd-source-apiversion=multiclusterdns.federation.k8s.io/v1alpha1- --crd-source-kind=DNSEndpoint- --provider=alibabacloud- --policy=sync # enable full synchronization- --registry=txt- --txt-prefix=cname- --txt-owner-id=my-identifier- --alibaba-cloud-config-file= # enable sts tokenvolumeMounts:- mountPath: /usr/share/zoneinfoname: hostpathvolumes:- name: hostpathhostPath:path: /usr/share/zoneinfotype: Directory
部署验证资源
创建FederatedDeployment和FederatedService:
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: nginxresources:limits:cpu: 500mrequests:cpu: 200mplacement:clusterNames:- cluster1- cluster2---apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedService
metadata:name: test-servicenamespace: test-namespace
spec:template:spec:selector:app: nginxtype: ClusterIPports:- name: httpport: 80placement:clusterNames:- cluster2- cluster1
各个集群ingress创建信息如下:
kubectl get ingress -n test-namespace --context cluster1
NAME HOSTS ADDRESS PORTS AGE
test-ingress * 47.93.69.121 80 54mkubectl get ingress -n test-namespace --context cluster2
NAME HOSTS ADDRESS PORTS AGE
test-ingress * 39.106.232.23 80 54m
创建FederatedIngress和IngressDNSRecord
apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedIngress
metadata:name: test-ingressnamespace: test-namespace
spec:template:spec:backend:serviceName: test-serviceservicePort: 80placement:clusterNames:- cluster2- cluster1 ---apiVersion: multiclusterdns.federation.k8s.io/v1alpha1
kind: IngressDNSRecord
metadata:name: test-ingressnamespace: test-namespace
spec:hosts:- ingress-example.example-domain.clubrecordTTL: 600
其中【ingress-example.example-domain.club】为测试阿里云托管的域名,请提前在阿里云上购买域名,并注意替换。
DNS解析验证
dig +short @dns7.hichina.com ingress-example.example-domain.club
47.93.69.121
39.106.232.23
可以看到我们绑定的域名已经解析到了cluster1和cluster2的ingress IP上了。
访问域名相应的服务:
curl ingress-example.sigma-host.club
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
总结
通过上面介绍,可以看到使用External-DNS可以非常方便的管理federation-v2环境下的Ingress DNS解析。
原文链接
本文为云栖社区原创内容,未经允许不得转载。
基于External-DNS的多集群Ingress DNS实践相关推荐
- vivo AI计算平台 Kubernetes集群Ingress网关实践
1.背景 vivo 人工智能计算平台小组从 2018 年底开始建设 AI 计算平台至今,已经在 kubernetes 集群.以及离线的深度学习模型训练等方面,积累了众多宝贵的开发.运维经验,并逐步打造 ...
- 基于External-DNS的多集群Service DNS实践
概述 External-DNS提供了编程方式管理Kubernetes Service资源的DNS的功能,类似于容器服务kubernetes federation v2实践一:基于External-DN ...
- 基于VMWare虚拟机搭建Linux集群
基于VMWare虚拟机搭建Linux集群 1.虚拟机的安装 2.下载CentOS系统 3.虚拟机安装CentOS系统 4.虚拟机和本机文件通信 5.虚拟机网络配置 6.本机物理机下载Xshell连接操 ...
- 基于开源软件构建高性能集群NAS系统
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...
- 基于 Alluxio 的 HDFS 多集群统一入口的实现
回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Alluxio! 本文作者郭业俊,同济大学自动化专业硕士毕业,现担任苏宁易购大数据存储平台负责人.主要负责苏宁Hadoop分布式文件系统 ...
- Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建
Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建 1. 前言 2. 安装三个Ubuntu 2.1 三个机器都关闭防火墙 2.2 三个机器都关闭swap 2.3 三个机器都 ...
- kubernetes集群配置dns服务
本文将在前文的基础上介绍在kubernetes集群环境中配置dns服务,在k8s集群中,pod的生命周期是短暂的,pod重启后ip地址会产生变化,对于应用程序来说这是不可接受的,为解决这个问题,K8S ...
- 基于Docker方式实现Elasticsearch集群
文本环境:Docker + (Elasticsearch6.8.5 * 3) 1.拉取Elasticsearch docker pull elasticsearch6.8.5 2.创建es挂载目录 创 ...
- 如何基于Docker快速搭建Elasticsearch集群?
如何基于Docker快速搭建Elasticsearch集群? Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步 ...
最新文章
- MySQLDump的备份方法
- 【转】高性能前端3-高性能javascript
- pandownload限速原因及解决方案
- Thinking in Java Reading Note(5.初始化与清理)
- 达摩院成立XG实验室!阿里官宣进军5G
- Prometheus+Grafana可视化监控SpringBoot项目
- 两个3*3*n旋转矩阵在第三维相乘
- day20---IO流概述
- android 多媒体文件信息,Android 获取多媒体信息
- 七日掌握设计配色基础pdf_【资源分享】[七日掌握设计配色基础].日本视觉设计研究所.编.插图版...
- oracle多边形经纬范围筛选_Oracle数据库之Oracle spatial空间查询的选择度分析
- 1FN3直线电机基于海德汉光栅尺和SIMOTION的调试
- 19841227同生缘
- tf.maximum
- Android Provision 的作用
- matlab零状态响应幅度频谱,matlab零状态、零输入响应
- C语言:判断一个数是否为素数/质数
- singleton和prototype
- 微信小程序搜索框 回车搜索事件
- 《祝你一路顺风》-吴奇隆(吉他谱)
热门文章
- 数据可视化demo_为更快读懂报表,我们将数据可视化了
- java类与对象实验报告心得体会_Java类与对象实验报告.doc
- python 循环 覆盖之前print内容_Python爬虫第二战---爬取500px图片
- int是不是python保留字_下面不属于Python保留字的是:
- opencomm在c语言中的作用,使用OpenMPI从Fortran调用C语言
- java 安卓调试_【转】Android 调试技术
- visio图标_弱电间机柜原型图整理,可编辑!(Excel,visio,CAD)
- 韦东奕:被数学“选中”的天才
- 世界上最长的博士论文,列入吉尼斯世界纪录
- 高考考入北大与普通大学考研进北大,有区别吗?