跳到主要内容
版本:v1.3

2.1 快速安装

本文会将 SREWorks 以最小化的方式安装在 Kubernetes 上,这样可以帮助你节省资源。

1. 前提条件

  • Kubernetes 的版本需要大于等于 1.20
  • 硬件:
    • 分布式部署: 建议至少3台节点(配置为4 核 CPU,16G 内存),存储需要300G以上空间,90个Pod以上配额
    • 单机完整(数智版)部署: 建议至少 8核/32G内存/300G硬盘
    • 单机基础版部署: 建议至少 4核/16G内存/100G硬盘

2. 安装部署

推荐使用 Helm 来安装 SREWorks

安装 Helm

使用以下命令安装(如果已安装了 Helm 3,可以跳过这一步骤):

# 适用Mac intel芯片
wget "http://sreworks.oss-cn-beijing.aliyuncs.com/bin/helm-darwin-amd64" -O helm

# 适用Linux intel芯片
# wget https://sreworks.oss-cn-beijing.aliyuncs.com/bin/helm-linux-am64 -O helm

chmod +x ./helm
mv ./helm /usr/local/bin/

网络模式: Ingress/NodePort

Ingress模式

  • SREWorks的部署必须指定ingress的域名。
  • 以阿里云ACK集群为例,域名可以在【基本信息】中可以找到,例如 http://*.ceea604.cn-huhehaote.alicontainer.com ,* 部分用户可以自行填写,比如http://sreworks.c34a60e3c93854680b590b0d5a190310a.cn-zhangjiakou.alicontainer.com
  • 未使用阿里云ACK集群的也可以自行确定浏览器访问SREWorks控制台的域名,在安装时传入appmanager.home.url参数即可。

Ingress网络模式部署参数参考如下

--set appmanager.home.url="https://your-website.***.com" 

NodePort模式

  • 在云厂商购买虚机,运行NodePort模式需要注意被访问节点(NODE_IP)的网络安全组或防火墙,打开该端口(30767)的公网被访问限制。

NodePort网络模式部署参数参考如下

--set global.accessMode="nodePort" 
--set appmanager.home.url="http://NODE_IP:30767"

部署版本: 基础版/数智版

基础应用包含8个应用: 运维中台/应用管理/团队管理/集群管理/模板中心/帮助中心/文件管理/系统设置
数智应用包含7个应用: 数据运维平台/智能运维平台/故障自愈/健康管理/运营中心/作业调度平台/运维搜索

基础版SREWorks在单台4核16G机器上即可正常启动,基础版部署为基础应用,默认完整部署为 基础应用 + 数智应用。

基础版部署参数参考如下

--set saas.onlyBase=true

部署案例

案例1: Kubesphere All-in-one 集群部署数智版SREWorks

# 下载并安装kk工具
curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -

# 通过kk工具部署k8s集群
./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1

# 下载sreworks到本地
git clone http://github.com/alibaba/sreworks.git -b v1.3 sreworks
cd sreworks/chart/sreworks-chart

# 安装SREWorks
# 替换NODE_IP为某个节点的浏览器可访问IP
helm install sreworks ./ \
--create-namespace --namespace sreworks \
--set global.accessMode="nodePort" \
--set appmanager.home.url="http://NODE_IP:30767" \
--set global.storageClass="local" \
--set appmanagerbase.openebs.enabled=false

案例2: 标准k8s集群部署数智版SREWorks

以阿里云ack集群为例,非阿里云集群的请注意替换变量

网页访问方式使用Ingress

# 下载sreworks到本地
git clone http://github.com/alibaba/sreworks.git -b v1.3 sreworks
cd sreworks/chart/sreworks-chart

# 安装SREWorks
helm install sreworks ./ \
--kubeconfig="****" \
--create-namespace --namespace sreworks \
--set appmanager.home.url="http://*.*.alicontainer.com" \
--set global.storageClass="alicloud-disk-available" \
--set appmanagerbase.openebs.enabled=false

网页访问方式使用NodePort

# 下载sreworks到本地
git clone http://github.com/alibaba/sreworks.git -b v1.3 sreworks
cd sreworks/chart/sreworks-chart

# 安装SREWorks
# 替换NODE_IP为某个节点的浏览器可访问IP
helm install sreworks ./ \
--kubeconfig="****" \
--create-namespace --namespace sreworks \
--set global.accessMode="nodePort" \
--set appmanager.home.url="http://NODE_IP:30767" \
--set global.storageClass="alicloud-disk-available" \
--set appmanagerbase.openebs.enabled=false

案例3: 本地k8s集群部署基础版SREWorks

  • 注意: 默认的storageClass:sreworks-hostpath 是由OpenEBS的LocalPV方案实现的,仅能用于开发测试环境,如需用于生产,建议使用符合 Kubernetes 要求的持久化存储(如 GlusterFS、Ceph 等分布式存储或云服务上的块存储)。
# 下载sreworks到本地
git clone http://github.com/alibaba/sreworks.git -b v1.3 sreworks
cd sreworks/chart/sreworks-chart

# 安装SREWorks
# 替换NODE_IP为某个节点的浏览器可访问IP
helm install sreworks ./ \
--create-namespace --namespace sreworks \
--set global.accessMode="nodePort" \
--set appmanager.home.url="http://NODE_IP:30767" \
--set saas.onlyBase=true

3. 验证安装

在浏览器中输入上个步骤的域名,如果能够看到页面,说明已经安装完成(大约需等待5分钟左右)。注册并开始使用 SREWorks。默认账号为admin,默认密码为12345678

4. 卸载

请务必遵循下面顺序执行。千万不能不执行helm uninstall直接删除namespace,这会导致各种crd变成脏数据残留在集群!

helm uninstall sreworks -nsreworks
kubectl delete namespace sreworks

5. 常见问题

    1. 需要使用非默认的kubeconfig,请在helm命令中加入--kubeconfig指定目标集群的kubeconfig文件的路径
    1. 如果遇到长时间Pod处于ContainerCreating,请执行 kubectl describe pod 命令查看Pod的异常事件
    • 异常事件中出现 InvalidInstanceType.NotSupportDiskCategory,说明当前的Node不支持挂载这种云盘类型,请在helm命令中加入 --set global.storageClass="alicloud-disk-essd" 进行指定,默认为sreworks-hostpath
    • 如果无法确认可用的storageClass,可以使用 sbin/storage-class.py 脚本检测。
    1. 如果sreworks需要升级,可以使用 sbin/upgrade-cluster.sh --kubeconfig="****"来进行执行,该命令的背后原理是触发所有的init-job重新执行,拉取最新的SaaS应用包进行部署。
    1. 如果不使用默认的存储集,必须使用 --set appmanagerbase.openebs.enabled=false 来关闭openebs,否则可能出现下面类似的报错。
MountVolume.MountDevice failed for volume "d-2zec7mb0xriw4p64l3r5" : rpc error: code = Unknown desc = Root device /dev/vde is partition, and you should format /dev/vde1 by hands