加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 系统 > 正文

畅聊Kubernetes 多集群调度方案

发布时间:2022-07-30 16:09:12 所属栏目:系统 来源:互联网
导读:Kubernetes 是一个容器编排平台,用于调度、部署和管理容器化应用。并且经过几年的发展,k8s 已经成为事实上的容器编排平台标准。集群是 k8s 架构的构建块(building block)。集群由多个工作节点(物理机或者虚拟机)组成,提供一个可供容器运行的资源池。
  Kubernetes 是一个容器编排平台,用于调度、部署和管理容器化应用。并且经过几年的发展,k8s 已经成为事实上的容器编排平台标准。集群是 k8s 架构的构建块(building block)。集群由多个工作节点(物理机或者虚拟机)组成,提供一个可供容器运行的资源池。一个集群拥有:
 
  为什么要有多集群调度?
  通常来说,一个集群的大小需要预估业务的资源总量。当资源不够时,可以通过增加机器数量来进行集群扩容。但是集群规模也不是无限上升的。当节点 /pod 的数量越多,对控制平台的组件的压力就越大,进而影响集群整体稳定性。
 
   场景
 
  Kubefed
 
  Liqo
 
  Pod 调度
 
  静态调度、动态调度只支持 Deployment/ReplicaSet
 
  动态调度,但是还是会出现 pending 情况
 
  控制平面
 
  一套中心化管理组件
 
  每个集群对等管理
 
  集群发现
 
  主动注册
 
  动态发现和注册新集群
 
  本文不会详细介绍这些项目在部署和网络管理的内容,重点分析两个项目(Kubefed、Liqo)的跨集群资源调度。
 
  KubeFed
  KubeFed 的目的是通过统一的 API 管理多个 k8s 集群,实现单一集群管理多个 k8s 集群的机制,并通过 CRD 的机制来扩展现有的 k8s 资源跨集群编排的能力。
 
  KubeFed 将集群分为 host cluster,member cluster 两个角色:
 
  host cluster:KubeFed 的控制平面面,用户需要安装 KubeFed 的 operator 组件。
  member cluster:注册到 KubeFed API 上的集群,由 KubeFed 统一管理。通过命令行​​kubefedctl join 的​​方式手动注册到 host cluster。
  被联邦管理的 k8s API 资源统称为 Federated Resources,例如 FederatedDeployments。开启跨集群调度也需要在 host cluster 上显式地对应用资源开启集群联邦管理,开启的方式是通过 ​​kubefedctl federate​​ 创建 FederatedTypeConfig。KubeFed 也支持联邦化 namespace,让 namespace 下面的资源都联邦化。通过 federation control plane 来下发资源到 member cluster。
 
  
 
  kubefed-overview
 
  KubeFed 概览
  资源调度
  那 KubeFed 怎么支持跨集群部署的呢?在开启资源的联邦化之后,Federated Resources 的 spec 分成 3 个基础配置 :
 
  template:原资源类型的 spec
  placement:定义期望部署的集群
  overrides:定义集群特定配置,基于原资源类型的 spec 进行修改,比如副本数的变化
  用户在部署服务时,可以在 spec 下定义部署的集群(placement)和集群指定参数(overrides)。比如服务需要在 cluster2 集群上增加副本数,修改 deployment 的 replicas,需要在 overrides 上填写“/spec/replicas”的修改。可以想到为了通用,overrides 的配置有一定复杂性。
 
  复制
  spec:
    template:
      metadata:
        labels:
          app: nginx
      spec:
        replicas: 3
        ...
    placement:
      clusters:
      - name: cluster2
      - name: cluster1
    overrides:
    - clusterName: cluster2
      clusterOverrides:
      - path: "/spec/replicas"
        value: 5
      ...
   Federated  Resources 还支持通过另一个 CRD 来 ReplicaSchedulingPreference 配置资源类型级别的集群调度倾向。该方法通过指定资源类型在 member cluster 的最大 / 最小副本数实现了依据剩余可用资源的动态平衡。最终 controller 会将 preference 信息更新到 Federated Resources 的 overrides 上,从而重新分配实例。不过该功能还只支持 deployment/replicaset 资源。
 
  可以看出在 KubeFed 的架构,还是区分了不同集群的配置和动态调度。
 
  具体看看静态调度和动态调度。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读