阿里云上Kubernetes集群联邦
kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧,如何应对可用区级别的Fail,以及容灾备份?是否会造成厂商锁定,增加迁移成本?如何应对线上线下突发流量?如何统一管理调度容器资源?单个集群规模的上限等等。
Federation集群联邦可以一定程度上解决这些问题。Federation是可以将分布在多个Region或者多个云厂商的Kubernetes集群整合成一个大的集群,统一管理与调度。
本文档演示搭建一个杭州和北京的kubernetes集群组成集群联邦,其中杭州集群作为联邦的控制平面。
原文:http://click.aliyun.com/m/43608/
准备域名
Federation使用域名将不同子集群的同一个服务暴露出来,因此需要用户提供一个可配置的域名。您可以通过万网在阿里云上购买域名然后配置到您的Federation集群上。以域名spacexnice.xyz
为例,请按照购买域名文档购买好域名。
配置域名
由于Federation在添加域名解析记录的时候设置域名的TTL为3分钟,域名层级为5级,因此需要到阿里云上对您刚购买的域名进行设置,使得该域名允许的最小TTL值小于3分钟,同时域名层级大于5.
进入云解析控制台选择您刚刚购买的域名,更多里面选[升级]或者[升级VIP]
在弹出的页面中更改最低TTL值为60s,子域名级别为7级,然后保存。
创建多个子集群
本示例创建的Federation集群包含两个子集群,分别在杭州和北京region。我们首先需要在这两个Region创建出两个可用的集群,集群创建步骤参考文档
杭州集群
北京集群
部署federation控制平面
选择杭州的子集群作为Federation的宿主集群,安装Federation的控制平面。并配置好本地的kubeconfig。通过运行kubefed init命令来初始化主集群。具体步骤如下:
安装kubefed
在hangzhou集群的master节点安装kubefed
配置kubeconfig
在杭州集群master节点中配置hangzhou,beijing两个集群的context,让改节点能通过切换context连接不同的子集群。要修改的内容如下:
-
修改hangzhou集群的kubeconfig的cluster,user,context的名字为hangzhou
-
拷贝beijing集群kubeconfig中的cluster,user,context内容到a)步骤中kubeconfig,并修改相应的cluster,user,context名字为beijing
为了方便初学者,我们提供了一个自动化的脚本,可以自动通过ssh从您指定的集群中下载kubeconfig配置文件,并合并成一个整体。
通过执行脚本来自动生成~/.kube/config
文件。脚本需要指明从哪些集群上下载kubeconfig文件并合并,格式如下python context.py -H hangzhou:1.1.1.1,beijing:2.2.2.2
注意参数替换成你自己的集群Region和IP,脚本可能会要求您输入ssh的登录密码。
配置结果如下:
配置alidns.yaml文件
zones填写您前面申请的域名,注意以点号结尾。并且替换您的accesskeyid和accesskeysecret.
初始化控制federation平面
添加集群至federation
目前为止您已经成功的初始化好了Federation的控制平面。接下来需要将各个子集群加入到Federation集群中。
添加hangzhou集群
添加beijing集群
后面介绍下集群查询,移除集群,删除联邦等命令
集群查询
查询注册到Federation的kubernetes集群列表
移除集群
移除beijing集群
删除集群联邦
集群联邦控制平面的删除功能还在开发中,目前可以通过删除namespace federation-system的方法来清理(注意pv不会删除)。命令在host-cluster-context上执行。
创建服务
集群联邦支持以下联邦资源,这些资源会自动在所有注册的kubernetes集群中创建.
-
Federated ConfigMap
-
Federated Service
-
Federated DaemonSet
-
Federated Deployment
-
Federated Ingress
-
Federated Namespaces
-
Federated ReplicaSets
-
Federated Secrets
-
Federated Events(仅存在federation控制平面)
创建service
您还可以通过kubectl scale deploy nginx --replicas=3 --context=federation
来扩展nginx副本,然后观察nginx应用在各个子集群中的分布情况。
创建deployment
查看federation service
通过域名访问服务:
查看云解析dns的record记录
我们可以在阿里云云解析控制台看见刚刚添加的nginx的dns记录。
总结
Federation为您提供一种多集群管理的途径,统一管理多云(multi-cloud)资源,并提供了一种灾备的新途径。阿里云Kubernetes服务也将进一步简化Federation的用户体验,将容器服务Kubernetes集群管理与Federation完美结合在一起。也欢迎您的意见和建议,帮助我们迭代产品能力。
阿里云Kubernetes服务 全球首批通过Kubernetes一致性认证,简化了Kubernetes集群生命周期管理,内置了与阿里云产品集成,也将进一步简化Kubernetes的开发者体验,帮助用户关注云端应用价值创新。