阿里云上Kubernetes集群联邦

摘要: 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     <none>    3d        v1.8.4
cn-hangzhou.i-bp18fggko6p3vyr0p0ex   Ready     <none>    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     <none>    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                    NAMESPACEhangzhou   kubernetes-hangzhou   kubernetes-admin-hangzhou
*         beijing    kubernetes-beijing    kubernetes-admin-beijing

配置alidns.yaml文件

zones填写您前面申请的域名,注意以点号结尾。并且替换您的accesskeyid和accesskeysecret.

cat >alidns.yaml <<EOF
[Global]
access-key-id = <Your-key-id>
access-key-secret = <Your-key-secret>
zones = spacexnice.xyz.
EOF

初始化控制federation平面

通过本条命令初始化federation控制平面,参数如下:

     kubefed init federation \ # 联邦的名字--host-cluster-context=hangzhou \ # 主集群的context名字
            --dns-provider="alidns" \ # DNS服务提供商
            --dns-zone-name="spacexnice.xyz." \ # 前面注册好的域名,必须以.结束
            --dns-provider-config="alidns.yaml" \ # alidns配置文件
            --image="registry.cn-hangzhou.aliyuncs.com/google-containers/hyperkube-amd64:v1.8.4-4_99c084ce" \ # hyperkube镜像
            --etcd-image='registry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.1.11' \ #etcd 镜像
            --etcd-persistent-storage=false # 关闭etcd持久存储
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed init federation \--host-cluster-context=hangzhou \
            --dns-provider="alidns" \
            --dns-zone-name="spacexnice.xyz." \
            --dns-provider-config="alidns.yaml" \
            --image="registry.cn-hangzhou.aliyuncs.com/google-containers/hyperkube-amd64:v1.8.4-4_99c084ce" \
            --etcd-image='registry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.1.11' \
            --etcd-persistent-storage=false

Creating a namespace federation-system for federation system components... done
Creating federation control plane service..... done
Creating federation control plane objects (credentials, persistent volume claim)... done
Creating federation component deployments... done
Updating kubeconfig... done
Waiting for federation control plane to come up..................................................................................................................................................... done
Federation API server is running at: 120.55.196.1

添加集群至federation

目前为止您已经成功的初始化好了Federation的控制平面。接下来需要将各个子集群加入到Federation集群中。

添加hangzhou集群

命令行参数解析kubefed join hangzhou \ #加入联邦的集群命名名字--context=federation \ #联邦的context
            --cluster-context=hangzhou \ #要添加集群的context
            --host-cluster-context=hangzhou #主集群的context
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed join hangzhou \--context=federation \
            --cluster-context=hangzhou \
            --host-cluster-context=hangzhou

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --context=federation
NAME       STATUS    AGE
hangzhou   Ready     28s

添加beijing集群

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed join beijing \--context=federation \
            --cluster-context=beijing \
            --host-cluster-context=hangzhou

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --context=federation
NAME       STATUS    AGE
hangzhou   Ready     4m
beijing    Ready     59s

后面介绍下集群查询,移除集群,删除联邦等命令

集群查询

查询注册到Federation的kubernetes集群列表

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get cluster --context=federation
NAME       STATUS    AGE
hangzhou   Ready     4m
beijing    Ready     59s

移除集群

移除beijing集群

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubefed unjoin beijing --host-cluster-context=hangzhou --context=federation[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get clusters --context=federation
NAME       STATUS    AGE
hangzhou   Ready     1d

删除集群联邦

集群联邦控制平面的删除功能还在开发中,目前可以通过删除namespace federation-system的方法来清理(注意pv不会删除)。命令在host-cluster-context上执行。

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl delete ns federation-system

创建服务

集群联邦支持以下联邦资源,这些资源会自动在所有注册的kubernetes集群中创建.

Federated ConfigMap
Federated Service
Federated DaemonSet
Federated Deployment
Federated Ingress
Federated Namespaces
Federated ReplicaSets
Federated Secrets
Federated Events(仅存在federation控制平面)

创建service

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl run nginx --image nginx --context=federation
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl expose deploy nginx --port 80 --target-port 80 --type LoadBalancer --context=federation
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get svc --context=federation

您还可以通过kubectl scale deploy nginx –replicas=3 –context=federation来扩展nginx副本,然后观察nginx应用在各个子集群中的分布情况。

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get deploy --context=beijing
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl get deploy --context=hangzhou

创建deployment

[root@iZbp1bpj58bdzdosdxxf82Z ~]# cat deployment-nginx.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80
[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl create -f deployment-nginx.yaml --context=federation

查看federation service

[root@iZbp1bpj58bdzdosdxxf82Z ~]# kubectl describe svc nginx --context=federation
Name:            nginx
Namespace:        default
Labels:            app=nginx
Annotations:        federation.kubernetes.io/service-ingresses={"items":[{"cluster":"hangzhou","items":[{"ip":"120.55.149.69"}]},{"cluster":"shanghai","items":[{"ip":"139.196.70.146"}]}]}
Selector:        app=nginx
Type:            LoadBalancer
IP:
LoadBalancer Ingress:    120.55.149.69, 139.196.70.146
Port:            http    80/TCP
Endpoints:        <none>
Session Affinity:    None
Events:            <none>

通过域名访问服务:

[root@iZbp1bpj58bdzdosdxxf82Z ~]# curl nginx.default.fed.svc.spacexnice.xyz
<!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>

查看云解析dns的record记录

我们可以在阿里云云解析控制台看见刚刚添加的nginx的dns记录。

图片描述

总结

Federation为您提供一种多集群管理的途径,统一管理多云(multi-cloud)资源,并提供了一种灾备的新途径。阿里云Kubernetes服务也将进一步简化Federation的用户体验,将容器服务Kubernetes集群管理与Federation完美结合在一起。也欢迎您的意见和建议,帮助我们迭代产品能力。
阿里云Kubernetes服务 全球首批通过Kubernetes一致性认证,简化了Kubernetes集群生命周期管理,内置了与阿里云产品集成,也将进一步简化Kubernetes的开发者体验,帮助用户关注云端应用价值创新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘检测robert原理_在操作机器视觉检测过程中,遇到检测精度的难题怎么办?_西旺科技...

随着自动化行业发展&#xff0c;机器视觉技术的应用已经十分广泛。但是在一些机器视觉检测项目中&#xff0c;很多客户遇到了检测精度的难题。例如&#xff1a;检测加工零件的外形尺寸、内外径&#xff0c;要求精度到10um。目前很多配置选择500万的相机&#xff0c;理论上是可以…

引以为戒,特斯拉Kubernetes控制台被黑客攻击

摘要&#xff1a; 特斯拉公司惨遭“毒手”是因为其Kubernetes平台没有设置密码保护。 点此查看原文&#xff1a;http://click.aliyun.com/m/43609/ 几个月前RedLock公司工作人员发现&#xff1a;数百个Kubernetes管理控制台无需密码即可访问&#xff0c;即直接公开暴露在互联网…

来华30载,这些都是Oracle的神来之笔……

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者|刘晶晶出色的数据掌控可以为企业带来极大的业务领先与竞争优势&#xff0c;这一点毋庸置疑&#xff0c;尽管在面对海量数据管理时依然会出现诸多问题与挑战。如此说来那些在数据管理方面战略到位的企业们究竟有何杀手锏&#x…

Chrome 渲染流水线演化的未来

摘要&#xff1a;前段时间我写了一篇文章浏览器渲染流水线解析与网页动画性能优化&#xff0c;对目前 60 左右版本的 Chrome 的渲染流水线进行解析&#xff0c;文末也讨论了当前渲染流水线的一些不足和未来演化的方向。 当前的渲染流水线过于复杂和冗长&#xff0c;特别是对于非…

iOS Mach异常和signal信号

摘要&#xff1a; 本着探究下iOS Crash捕获的目的&#xff0c;学习了下Crash捕获相关的Mach异常和signal信号处理&#xff0c;记录下相关内容&#xff0c;并提供对应的测试示例代码。Mach为XNU的微内核&#xff0c;Mach异常为最底层的内核级异常&#xff0c;在iOS系统中&#x…

怎样清除手机中的html文件夹,怎么彻底清除手机APP卸载后的残留文件夹 能删与不能删文件名...

手机里的文件和手机下载了app之后&#xff0c;即使卸载&#xff0c;也很容易有垃圾残留&#xff0c;而且占用的空间还挺多&#xff0c;但是根本不知道哪些是垃圾&#xff0c;要怎么清除这些垃圾&#xff1f;  一般清理垃圾软件&#xff0c;如360&#xff0c;腾讯管家等可以清…

Kubernetes要成为一个企业友好平台,到底还缺啥?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Kubernetes的崛起令人惊叹。在短短几年时间内&#xff0c;它已经从一个由一群云原生开发者倡导的开源项目转变为由三家主要云服务提供商推广的标准运维平台。由于应用程序工作负载从VM转移到容器&#xff0c;Kubernetes已成为自动化…

局域网设置_局域网设置

把路由连好后,在2台机上分本地网络-(TCP/IP)里,别输入同一IP段就可以了例如:192.168.1.2255.255.255.0192.168.1.3255.255.255.0上面说的只是通过连接好路由后,不考虑上网状况,只是电脑对连可以打游戏和互传东西的方法以下是从设置路由到设置机器从而能上网和互连的过程:打开一…

10分钟上线 - API网关 + 函数计算实现图片处理服务

摘要&#xff1a; 阿里云函数计算服务&#xff08;FunctionCompute&#xff0c;FC&#xff09;是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成&#xff0c;开发者只需要编写函数代码&#xff0c;就能够快速地开发出弹性高可用的后端系统。接下来我们利…

Spring Boot2 整合 MyBatis 多数据源

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

如何利用阿里云打造感知零售平台

摘要&#xff1a; 一、背景介绍所谓感知零售是指的根据店铺顾客的情绪变化以及顾客在店铺内对商品货架停留位置来判断顾客对商品感兴趣程度&#xff0c;实时在线调整营销策略。帮助企业第一时间掌握顾客感受&#xff0c;第一时间下发营销策略&#xff0c;第一时间得到营销效果反…

Spark精华问答 | 怎么运行Spark?

戳蓝字“CSDN云计算”关注我们哦&#xff01;为什么要学习Spark&#xff1f;作为一个用来实现快速而通用的集群计算的平台。扩展广泛使用的MapReduce计算模型&#xff0c;而且高效地支持更多的计算模式&#xff0c;包括交互式查询和流处理。Spark的一个重要特点就是能够在内存中…

mac抹掉磁盘重装系统未能与服务器取得联系_【工具】mac笔记本rm -rf 后 如何恢复删除的文件...

本来是要cp -rf 到另一个地方的&#xff0c;然后用git管理起来的。当时不知道怎么了&#xff0c;可能是最近加班多了直接执行了rm -rf 。这种一般是可以恢复的就是要来回折腾&#xff0c;不过也没办法只有折腾了&#xff0c;写了几天的内容可不想再重写一边~这里做一下恢复的记…

基于AliOS Things玩转智能语音

摘要&#xff1a; 随着AI技术的进步&#xff0c;智能语音开始将人机交互从手眼睛的传统模式中解放出来。带给人们更便捷、更风趣、更有人情味的体验&#xff0c;让被操作对象变得不再只是一个死板的工具&#xff0c;而更像是一个有生命的助理。“帮我打开空调”&#xff0c;“明…

SpringBoot2.0整合Mybatis-Plus多数据源

文章目录一、pom依赖二、application.yml多数据源配置三、持久层3.1. UserMapper 接口3.2. 接口映射UserMapper.xml(可以不写)四、逻辑处理层4.1. IUserService 接口4.2. 接口实现类IUserServiceImpl五、通用返回对象封装六、测试UserController七、启动类加扫描mapper注解八、…

百度积极回应阿波龙项目不实报道;半数开发者认为学习新语言很困难;腾讯在长沙建立首个智慧产业总部……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 惠普在其官网上公布了即将发…

精打细算使用MaxCompute搭建数仓

摘要&#xff1a; MaxCompute是一套阿里自主研发的数据仓库解决方案。产品除了功能、性能、简单等优势外&#xff0c;还能在费用上节省下一大笔前。墨迹天气使用MaxCompute&#xff0c;除了性能和稳定性也有提升外&#xff0c;整体存储和计算的费用比之前节省70%。这是如何做到…

计算机知识产权 教学目标,计算机教学设计模板

计算机教学设计模板计算机是现今学生们学习的一个重点&#xff0c;那么关于计算机的教学设计又应该怎么进行呢?下面就随小编一起去阅读计算机教学设计模板&#xff0c;相信能带给大家启发。第一篇&#xff1a;计算机教学设计模板【学习目标】了解计算机网络的发展&#xff0c;…

linux 环境 安装nginx

文章目录一、Nginx简介&#xff1a;1.1 Nginx是什么&#xff1f;1.2 能干什么&#xff1f;1.3 有什么特点&#xff1f;二、Nginx安装依赖环境2.1 安装gcc2.2 安装pcre2.3 安装zlib2.4 安装openssl2.5 综合命令安装(一步到位)三、下载/解压/安装NGINX3.1 在线下载nginx3.2 解压n…

行!这下 CSDN 玩大了!粉丝:太良心

CSDN从建立之初&#xff0c;我们的初心就是为了帮助广大开发者解决技术问题&#xff0c;成为大家最喜爱的技术社区。今年是CSDN的20周年&#xff0c;我们也为大家准备了一份良心礼物&#xff0c;可谓吐血操作。我们与AI博士唐宇迪 / Oracle认证讲师等4位讲师&#xff0c;共同为…