摘要: kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧,如何应对可用区级别的Fail,以及容灾备份?是否会造成厂商锁定,增加迁移成本?如何应对线上线下突发流量?如何统一管理调度容器资源?单个集群规模的上限等等。
点此查看原文:http://click.aliyun.com/m/43608/
kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个云厂商的多个Region,更不用说支持跨跨域不同的云厂商。这样会给企业带来一些担忧,如何应对可用区级别的Fail,以及容灾备份?是否会造成厂商锁定,增加迁移成本?如何应对线上线下突发流量?如何统一管理调度容器资源?单个集群规模的上限等等。
Federation集群联邦可以一定程度上解决这些问题。Federation是可以将分布在多个Region或者多个云厂商的Kubernetes集群整合成一个大的集群,统一管理与调度。
本文档演示搭建一个杭州和北京的kubernetes集群组成集群联邦,其中杭州集群作为联邦的控制平面
准备域名
Federation使用域名将不同子集群的同一个服务暴露出来,因此需要用户提供一个可配置的域名。您可以通过万网在阿里云上购买域名然后配置到您的Federation集群上。 以域名spacexnice.xyz为例,请按照购买域名文档购买好域名。
配置域名
由于Federation在添加域名解析记录的时候设置域名的TTL为3分钟,域名层级为5级,因此需要到阿里云上对您刚购买的域名进行设置,使得该域名允许的最小TTL值小于3分钟,同时域名层级大于5.
进入云解析控制台选择您刚刚购买的域名,更多里面选[升级]或者[升级VIP]
在弹出的页面中更改最低TTL值为60s,子域名级别为7级,然后保存。
创建多个子集群
本示例创建的Federation集群包含两个子集群,分别在杭州和北京region。我们首先需要在这两个Region创建出两个可用的集群,集群创建步骤参考文档
杭州集群
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
cn-hangzhou.i-bp11ajet2v9o3tp0o2uw Ready master 3d v1.8.4
cn-hangzhou.i-bp15pt2475mgw64k72ma Ready master 3d v1.8.4
cn-hangzhou.i-bp18fggko6p3vyr0p0ew Ready 3d v1.8.4
cn-hangzhou.i-bp18fggko6p3vyr0p0ex Ready 3d v1.8.4
cn-hangzhou.i-bp1bpj58bdzdosdxxf82 Ready master 3d v1.8.4
北京集群
[root@iZze7z98ssc50pfzt6be9 ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
cn-beijing.i-2ze7z98ssc50pfzt6be9 Ready master 3d v1.8.4
cn-beijing.i-2ze8hr6k03ccroopicd2 Ready master 3d v1.8.4
cn-beijing.i-2zeipodwz2junslmihqz Ready master 3d v1.8.4
cn-beijing.i-2zeipodwz2junyipunrf Ready 3d v1.8.4
部署federation控制平面
选择杭州的子集群作为Federation的宿主集群,安装Federation的控制平面。并配置好本地的kubeconfig。通过运行kubefed init命令来初始化主集群。具体步骤如下:
安装kubefed
在hangzhou集群的master节点安装kubefed
[root@iZze7z98ssc50pfzt6be9 ~]# curl -L http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/bin/kubefed-1.8.4 -o kubefed
[root@iZze7z98ssc50pfzt6be9 ~]# sudo cp kubefed /usr/bin
[root@iZze7z98ssc50pfzt6be9 ~]# sudo chmod +x /usr/bin/kubefed
[root@iZze7z98ssc50pfzt6be9 ~]# kubefed version
配置kubeconfig
在杭州集群master节点中配置hangzhou,beijing两个集群的context,让改节点能通过切换context连接不同的子集群。要修改的内容如下:
1.修改hangzhou集群的kubeconfig的cluster,user,context的名字为hangzhou 2.拷贝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的登录密码。
[root@iZbp1bpj58bdzdosdxxf82Z ~]# curl http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/tools/context.py > context.py
[root@iZbp1bpj58bdzdosdxxf82Z ~]# sudo pip install pyyaml
[root@iZbp1bpj58bdzdosdxxf82Z ~]# unset KUBECONFIG
[root@iZbp1bpj58bdzdosdxxf82Z ~]# python context.py -H ${HOST}
Info: host, hangzhou:118.31.177.21,beijing:47.95.96.234 .
Info: file /root/.kube/config successfully generated.
配置结果如下:
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
hangzhou kubernetes-hangzhou kubernetes-admin-hangzhou
* beijing kubernetes-beijing kubernetes-admin-beijing
配置alidns.yaml文件
zones填写您前面申请的域名,注意以点号结尾。并且替换您的accesskeyid和accesskeysecret.
cat >alidns.yaml
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?