您当前的位置: 首页 >  kubernetes

阿里云云栖号

暂无认证

  • 0浏览

    0关注

    5305博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

阿里云上Kubernetes集群联邦

阿里云云栖号 发布时间:2018-03-12 16:51:16 ,浏览量:0

摘要: 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             
关注
打赏
1664438436
查看更多评论
0.0639s