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
- Kubesphere All-in-one 集群部署参考 https://kubesphere.io/zh/docs/quick-start/all-in-one-on-linux/
- 数智版部署单机资源不小于8核/32G内存/300G硬盘
- 使用Kubesphere All-in-one集群自带的存储集: local
# 下载并安装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.2 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.2 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.2 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.2 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. 常见问题
- 需要使用非默认的kubeconfig,请在helm命令中加入
--kubeconfig
指定目标集群的kubeconfig文件的路径
- 需要使用非默认的kubeconfig,请在helm命令中加入
- 如果遇到长时间Pod处于ContainerCreating,请执行
kubectl describe pod
命令查看Pod的异常事件
- 异常事件中出现
InvalidInstanceType.NotSupportDiskCategory
,说明当前的Node不支持挂载这种云盘类型,请在helm命令中加入--set global.storageClass="alicloud-disk-essd"
进行指定,默认为sreworks-hostpath
- 如果无法确认可用的storageClass,可以使用
sbin/storage-class.py
脚本检测。
- 如果遇到长时间Pod处于ContainerCreating,请执行
- 如果sreworks需要升级,可以使用
sbin/upgrade-cluster.sh --kubeconfig="****"
来进行执行,该命令的背后原理是触发所有的init-job重新执行,拉取最新的SaaS应用包进行部署。
- 如果sreworks需要升级,可以使用
- 如果不使用默认的存储集,必须使用
--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