[设为首页] [加入收藏]
您现在的位置:主页 > 本港开奖直播现场 >

基于 Kubernetes 构建多集群的流水线

[时间:2021-09-21 13:10来源:未知作者:admin浏览:]

  3)业务隔离:尽管kubernetes提供了ns级别的隔离,你可以设置每个ns各自的使用的cpu 内存 甚至可以使用network policy配置不同ns的连通性 有一个更加彻底的物理隔离的环境依然是被需要的,避免业务之间的互相影响

  4)避免厂商锁定:混合云场景下,企业希望可以选择多个公有云厂商和私有云方案,避免受限于单一云厂商,降低一定成本。

  上图是一个replicaset的示例,与普通的rs区别就是多了一些annotation ,里面主要引入了单独的apiserver, 带来了额外的维护成本。我们都知道k8s里一个资源是通过group/version/kind确定的, 但是v1里面gvk绑定导致对不同版本的集群api兼容性很差。

  这里我们定义了两个概念:host集群指的是装了kubefed的集群,这是所有操作访问的入口,属于control plane;member集群指的是被管控集群 二者通过kubefed实现了联邦。

  上图是KubeSphere整个多集群的架构,通过kubefed实现联邦化以后 ,所有的管理操作界面都集中在了左边的host集群上,在多租户的权限这块 也是改造成了crd ,通过Kubefed联邦化把租户相关的crd下放到member集群 。这里可能就会有用人会质疑了,为何不直接在host集群统一做认证授权以后再操作member集群, 这里其实当时在设计的时候也考虑过这种做法 ,并且我们发现rancher也是这么做的 ,但是考虑到host集群作为一个中心化的管理层有挂掉的可能 ,因此把租户这类资源下放到member集群以后 ,依然可以在发生宕机的时候登陆member集群进行业务发布, 提高了平台的灾备能力。

  因此对于一个用户这样的资源来说,可以看到在图中host集群和member集群都存在。在一个API请求来到以后,会统一在host集群进行认证 ,通过以后再转发到member集群进行授权 ,对于host集群对于member集群网络不可达的私有场景下 kubefed是没办法做到联邦的,因此我们基于chilsel开源了tower 做了一个隧道。

  在kubesphere里面一个租户就是一个workspace ,一个租户可以为其分配指定的某些集群 ,也可以限制其cpu和内存的配额 ,一个租户既可以像从前那样创建一个单集群的ns ,也可以在多集群下创建一个联邦的ns。不管是单集群场景还是多集群场景,我们统一了其管理视角 对于用户来说都是一个入口 解决了管理上的难题。

  前面有提到对于host集群到member集群网络不可达的情况下,目前kubefed还没有办法做到联邦,也就是没办法从host集群推送deployment到member集群。因此 kubesphere基于chisel开源了tower 实现了私有云场景下集群联邦管理 ,tower分为server和agent,用户只需要在私有集群创建一个agent, agent通过server的地址建立一个隧道, server端再为这个隧道代理请求到member集群的apiserver ,再为其分配一个kubeconfig ,就可以实现集群联邦。08777祖师高手论坛m

  前提我们提到 Kubefed里面核心的多集群联邦是通过crd和controller来实现的,而在2.1版本以及之前 KubeSphere则是前端通过后端转发直接调用了Jenkins的API。这种命令式的API肯定是不适合云原生的场景的 ,因此3.0 Devops模块重点改造成了声明式的API ,前端只需要告诉后台它想要什么 ,至于如何实现则完全交给controller去做。

  第一个是在单个pipeline里面部署应用到开发staging 生产环境,图片里是这个流水线的流程,第一个则是checkout 获取代码 ,然后跑单测,

  你也可以选择性的集成sonarqube进行代码分析 ,然后对镜像build/push ,然后一开始会把应用部署到测试集群进行测试,

  验证没问题以后再部署到staging环境, 最后则是生产环境。这里展示了具体的流水线定义,其中的每一步都可以通过图形化的方式进行编辑 ,这大大降低了用户的Jenkins file的学习成本 ,也让整个平台更加易用。

  前面我们提到部署到测试环境以后是需要验证的 ,不能直接再部署到其他环境 ,因此这里平台增加了审批功能 ,只有管理员点击同意以后 ,才能进行下一步的部署。

  场景2比较适用于应用的多集群部署,前面几步都跟之前比较类似,最大的区别就是最后一步直接通过apply yaml到host集群,这里为了直观我截取了Jenkins file的一部分内容 ,这个yaml本质上是一个federated deployment这样的crd,通过host集群的kubefed 直接下放到member集群,这样就减少了对member集群的权限的依赖。1378kjcom手机现场开奖32期

  目前来说Kubefed API还是太多了,每一个资源都需要一个API,尽管我们已经做了一定的屏蔽,但对于二次开发来说还是有一定难度,所以我们还是比较倾向去兼容k8s原生API,因为去年还没有Karmada项目,因此我们只能用KubeFed项目。如何从Kubefed迁移到Karmada是我们比较关心的,也希望后续能够与Karmada社区加强合作。

  目前来说Kubefed API还是太多了,每一个资源都需要一个API,尽管我们已经做了一定的屏蔽,但对于二次开发来说还是有一定难度,所以我们还是比较倾向去兼容k8s原生API,因为去年还没有Karmada项目,因此我们只能用KubeFed项目。如何从Kubefed迁移到Karmada是我们比较关心的,也希望后续能够与Karmada社区加强合作。多集群服务发现

  声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。

网站首页本港开奖直播现场手机最快现场开奖直播开奖公式北京塞车pk10开奖结果直播www.740555.comwww.493999.com