1. 熟悉使用 python 和 go 语言
2. 熟悉 linux 系统知识和命令行操作技能,了解 linux namespace、cgroup 等容器技术
3. 熟悉 docker、containerd 等容器化技术,能够熟练构建、管理和发布容器
4. 熟悉 k8s 各组件工作原理、informer 机制等,掌握 client-go、kubebuilder 等常用 k8s 开发工具
5. 熟悉 devops 理念和工具,如 gitlab ci、jenkins、argocd、ansible 等
6. 熟悉 prometheus、thanos、zabbix、grafana 等常用监控相关工具
7. 熟悉阿里云、腾讯云、华为云等各大云平台
基于 Thanos 架构下的多集群 Prometheus 监控系统:
该监控系统可以横跨多个 prometheus 集群进行监控,且支持对多个集群的数据进行查询和聚合。存储方面支持长期存储,可将 prometheus 数据存储到廉价的对象存储中,且监控数据通过多副本保证高可用。通过k8s endpoints以及consul实现监控目标自动发现。告警则接入飞书机器人实现基于命名空间的告警到人。
工作内容:
1. 整体技术架构选型及部署实施;
2. 使用 Go 开发 node controller,在节点频繁变更下,实现 kubelet endpoints 的自动更新;
3. 配置 hashmod 解决 prometheus 无法支撑单个大集群以及多副本 prometheus 重复拉取指标的问题;
4. 使用 Go 开发 alertmanager webhook ,并基于飞书机器人配置自动重载;
5. 编写 alertmannager 和 thanso ruler 告警规则以及 prometheus record 优化查询语句。
项目成果:
1. 解决多套集群部署多套监控系统的问题,节约计算资源以及人力维护成本;
2. 实现 k8s 集群内外部监控 target 自动发现,无硬编码 target;
3. 保证了大体量集群下 prometheus 的高可用,以及数据的完整性;
4. 告警直到相关责任人,推进问题响应速度。
2000+ 节点k8s 集群搭建及维护:
该集群规模大,可用性要求高。通过 ansible 自动化部署整个集群,通过调整 etcd 和 apiserver 相关参数,使用 trimaran 替换原 k8s 调度器,优化 apiserver 缓存大小,调整客户端 list 使用方式等手段提高集群的高可用性。
工作内容:
1. 使用 ansible 自动化部署集群;
2. 调整 etcd db 容量,数据盘直接使用本地 ssd ,自动压缩历史数据和定期碎片清理,优化心跳间隔和选举超时时间;
3. 将原 k8s 调度器替换为基于实时负载的调度器;
4. 使用 Go 开发基于 webhook 的统一认证服务。
项目成果:
1. 快速完成 2000+ 节点的 k8s 集群搭建;
2. 保证了 etcd 集群零宕机;
3. 替换默认 k8s 调度器,解决节点资源使用不均衡问题;
4. 将 k8s 认证接入企业统一认证,保证集群安全性。