集群管理

本文介绍如何在 ZadigX 系统上进行多集群管理。ZadigX 基于本地集群安装,同时支持外部多个 K8s 集群资源的接入和使用。

添加集群

注意

需要保证添加的集群可以访问到 ZadigX 所在的集群

访问 系统设置 -> 集群管理,点击 新建 添加集群。

cluster

参数说明:

  • 连接方式:支持代理连接直接连接两种方式,具体操作请参考 代理连接方式直接连接方式
  • 名称:集群名称只支持小写字母、数字和中划线。
  • 集群提供商:支持阿里云 ACK腾讯云 TKE腾讯云 TKE Serverless华为云 CCEAmazon EKS和其他自建的 Kubernetes 集群。
  • 描述: 该集群的用途描述信息。
  • 生产集群:开启后,构建/测试/代码扫描/通用任务/自定义任务/灰度发布/istio发布/蓝绿发布/金丝雀发布/更新 K8s YAML 任务/创建环境选择集群等均显示是否为生产。
  • KubeConfig:待接入集群的 KubeConfig 配置文件内容,使用直接连接方式时需填写。

创建集群时可设置高级配置,也可以在创建完成后再修改。高级配置说明:

  • 指定项目范围:指定该集群可被哪些项目使用,默认为创建集群时,系统当前全部项目。
  • Dind 资源配置:设置 Dind 的资源规格,参考 Dind 资源配置

代理连接

在外接集群中安装 Agent,适用场景:外接集群可以访问 ZadigX 所在的集群。

选择代理连接方式填写集群基本信息后,在待接入集群中执行 Agent 安装脚本,如图所示:

cluster_add_kubectl

脚本执行完毕后,刷新集群列表查看集群状态,状态正常即为接入成功。

直接连接

需要外接集群的 admin 权限,在 ZadigX 系统中配置其 KubeConfig,适用场景:ZadigX 所在的集群可以访问外接集群。

选择直接连接方式填写集群基本信息及外接集群的 KubeConfig 内容后保存即可。

基本操作

  • 断开:断开集群操作并不会删除已经在集群中创建的环境资源,如需清理,请手动删除。集群断开后,可通过再次执行 Agent 安装脚本接入。
  • 编辑:可修改集群的基本信息及高级配置。
  • 删除:删除集群操作并不会删除已经在集群中创建的环境资源,如需清理,请手动删除。
  • 更新 Agent:更新 ZadigX 系统在该集群中安装的 Agent,即:koderover-agent 命名空间下的 dind、koderover-agent-node-agent 和 resource-server 资源。

设置调度策略

点击编辑,可设置该集群资源的调度策略。以执行工作流任务为例对不同的策略说明如下:

  • 随机调度:不需要指定标签,工作流任务将被随机调度在集群的任意节点上执行。
  • 优先调度:需要指定标签,工作流任务将被优先调度到符合标签的节点上执行,若节点资源无法满足调度需求,则该任务会被分配给其他节点。
  • 强制调度:需要指定标签,工作流任务将被调度到符合标签的节点上执行。
  • 配置容忍度 :在文本框内可以进行容忍度配置,具体参数如下:
  1. key: "key1"
  2. operator: "Equal"
  3. value: "value1"
  4. effect: "NoSchedule"

容忍度(Toleration) 是应用于 Pod 上的。容忍度允许调度器调度带有对应污点的 Pod。

污点和容忍度互配合,可以更精细的将 Pod 分配到目标节点上。 每个节点上都可以应用一个或多个污点,如果 Pod 不能容忍这些污点,则不会被部署在该节点。

注意

容忍度允许调度并不保证调度成功,除容忍度以外,调度器也会评估其他参数。

详情可见:污点和容忍度集群管理 - 图3 (opens new window)

修改集群调度策略

缓存资源配置

可按需对不同集群资源配置缓存策略。

使用对象存储

修改集群缓存资源配置

将会使用系统默认对象存储来缓存资源,可在对象存储管理中设置默认对象存储。

使用集群存储

修改集群缓存资源配置

可使用集群中已有的存储资源或按需动态创建资源。

选择存储资源

  • 动态生成资源:选择文件存储类型的 StorageClass 并指定动态生成的存储空间大小,注意:若使用腾讯云 cbs 作为 StorageClass,则有效的存储空间大小范围 (GiB):[10, 32000]。
  • 使用现有存储资源:选择已有存储资源,注意:创建该存储资源的 PVC 中,accessModes 需要是 ReadWriteMany。

缓存目录规则

可设置缓存资源在集群存储中的存储目录相对路径规则,实现共享缓存,或者根据不同的项目/工作流/服务组件独享缓存。支持以下变量:

  1. $PROJECT:项目名称
  2. $WORKFLOW:工作流名称
  3. $SERVICE_MODULE:服务组件名称 (测试工作流中无此参数,对于测试工作流的缓存,该变量将被忽略)

举例说明如下:

缓存目录规则说明
$PROJECT/$WORKFLOW/$SERVICE_MODULE为同一项目同一工作流中的服务组件单独设置独享缓存,不同服务组件之间互不干扰
$PROJECT/$WORKFLOW同一项目下的同一工作流共享缓存;不同工作流之间独享缓存互不干扰
$PROJECT/$SERVICE_MODULE同一项目下的相同服务组件共享缓存
$PROJECT同一项目共享缓存;不同项目的缓存资源将存储在集群 PVC 的不同目录中,彼此独享缓存互不干扰
cache缓存资源将存储在集群 /<PVC 根目录>/cache 目录下,所有项目共享使用缓存
缓存资源将存储在集群 /<PVC 根目录> 下 ,所有项目共享使用缓存

更多信息

若修改了集群的缓存资源配置(比如将对象存储修改为集群存储,或者动态生成资源修改为使用现有存储资源),则修改之前已缓存的资源在修改后将不再生效,会在新的存储资源下重新开始缓存。

Dind 资源配置

配置集群的 Dind 资源。

  • 副本数量:默认为 1,可按需调整。设置多副本后,同一个服务的构建任务会被尽可能调度到同一个 Dind 实例,不同服务的构建任务会被尽可能打散调度到不同的 Dind 实例,避免因单个 Dind 实例承载过多的构建任务而增加失败概率。
  • 资源限制:CPU 默认为 4000m,Memory 默认为 8192Mi。
  • 存储资源:可用于存储镜像缓存等。当指定集群存储资源时,选择文件存储类型的 StorageClass 并指定动态生成的存储空间大小。

注意:若使用腾讯云 cbs 作为 StorageClass,则有效的存储空间大小范围 (GiB):[10, 32000]

Dind 资源配置

集群使用

  1. 在 ZadigX 系统中接入外部集群后,便可以在该集群上创建新环境,并使用工作流对新环境进行更新操作,环境操作可参考 创建环境