Kubesphere提供两个部署工具,KubeKey和ks-installer。其中,ks-installer部署Kubesphere,KubeKey安装Kubernetes和ks-installer。
代码框架

controller:shell-operator的两个脚本
deploy:部署ks-installer的yaml文件
docs:文档
env:变量
playbooks:各个playbook
- alerting.yaml:部署报警模块
- auditing:部署审计模块
- common:部署通用模块,包括es、fluent-bit、minio、openldap、mysql等等
- devops:部署devops模块
- events:部署事件模块
- harbor:部署镜像仓库模块
- ks-config:
- ks-core:部署ks核心组件,包括ks-apiserver、ks-controller-manager、ks-console等
- logging:部署日志模块
- metrics-server:部署metrics-server
- monitor:部署监控模块
- multicluster:部署多集群模块
- openpitrix:部署openpitrix
- preinstall:预安装,包括检查k8s版本、storageclass、helm版本转换等
- result-info:统计部署结果,显示welcome信息
- servicemesh:部署微服务模块
- telemetry:获取一些集群信息,如k8s版本、ks版本、machineID等等,再向ClusterConfiguration写入- - clusterID(当前镜像有问题,生成clusterID失败,因为没有uuidgen命令)
roles:各个role目录
scripts:ks-installer相关脚本
shell-operator
ks-installer本质是一个shell-operator,监控着ClusterConfiguration资源,当ClusterConfiguration资源变化时,则会触发ks-installer的部署流程。
不像fluentbit-operator这些,shell-operator并不是一种具体的operator实现,而是提供了一种框架。按照这种框架,可以编写出具体的operator。
shell-operator 与其他 Kubernetes 工作负载类似,部署在 Pod中。在 Pod 中有一个/hooks 的一个子目录,其中存储了可执行文件,它们可以用 Bash、Python、Ruby等编写的,我们称这些可执行文件为hooks。在这些可执行文件中,声明感兴趣的Kubernetes事件,订阅这些事件,并执行这些钩子。
shell-operator 如何知道何时执行钩子呢?事实上每个钩子都有两个阶段。在启动过程中,shell-operator 使用-config参数运行每个钩子。一旦配置阶段结束,钩子将以“正常”方式执行:响应附加给它们的事件。

shell-operator支持三种钩子响应类型:
1、OnStartup:启动后即运行;
2、schedule:crontab格式的定时任务;
3、kubernetes:监控Kubernetes资源,根据定义的事件类型来响应;
shell-operator也提供了prometheus metrics,支持自定义指标,默认端口是9115。
bash-5.1$ pwd
/hooks/kubesphere
bash-5.1$ ls
installRunner.py schedule.sh
ks-installer的pod中,/hooks/kubesphere中包含两个文件。installRunner.py用于部署ks-installer,schedule.sh定期执行telemetry的playbook,检查状态、注册clusterid等。
installRunner.py:
ks_hook

本文详细介绍了Kubesphere的部署工具ks-installer和shell-operator的工作原理,包括安装脚本、监控事件、组件部署策略及自定义配置。重点展示了ks-installer的部署流程、schedule.sh定时任务和installRunner.py的部署操作。
最低0.47元/天 解锁文章
3129

被折叠的 条评论
为什么被折叠?



