开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天
在云技术快速发展的时期,很多传统应用已经基本云化,从开发到部署的效率比较以前也有了大的提升,今天就来研究一番。
- 基础服务
目前基础设施服务一般包括三大块有计算、存储以及网络、目前硬件发展迅速,可以通过升级或者叠加来提升算力以及存储网络。随之附带发展有云服务器、监控、日志、负载均衡、数据库、对象存储,大数据、消息队列等等,其中还包括重头戏容器服务。 - 容器服务
容器服务里面有无状态类应用以及有状态应用。相关技术就会涉及持续集成部署cicd、镜像管理、容器日志、监控、多集群管理、主机资源管理、数据库、负载均衡、配置中心以及应用管理等。为什么要容器化,众所周知,一个是研发流程更加标准化、能够不受运行环境的绑定限制、能够节约资源和成本,这样就会大大提升研发的效率,创造更大价值,节省更多不必要的成本。 - 容器服务技术栈
可以分为自研以及开源部分,自研的一般是更加适合本地业务逻辑,不具有普适性,但是对于自己来说更加可靠好用,比如各大公司私有云平台,有对应的日志收集、负载、配置中心等,开源的就有很多,主流的有如下:
- Prometheus 监控
- gitlab 代码库
- k8s 容器编排
- Jenkins CICD
- harbor 镜像仓库
- docker 容器运行
- calico 网络
- elk 日志收集分析
- …等
4、容器应用管理
一个良好的应用管理模块需要包含镜像管理、负载均衡、日志管理、监控管理、权限管理、主机资源管理等等
(1)镜像管理层面需要保证构建简单、能够持续构建、还有高可用等方面的考虑,镜像的构建可以通过dockerfile的方式、web页面管理模板、以及ci文件实现,这样可以从代码发布到镜像构建推送到仓库管理一条龙。应用管理主要解决应用的创建、更新,删除回滚等基础操作,怎么保证多集群多机房的平滑更新发布。这里面就需要注意发布方式一般会有多种,灰度、金丝雀、ab模式等,总之就是确保业务的连续性。还有要能实现快速的扩缩容应对业务的流量,确保平稳运行。
(2)负载均衡
替代k8s自带的service,换成自研或者其他方式的负载均衡,直接实现LVS四层负载。能够动态发现pod实例增减、调用lvs接口完成pod上下线,保证实时性。这里需要注意的是健康检查(存活探针、健康监测探针等)还有pod宕机自动创建新pod挂载到VIP等。
(3)日志管理
可以使用ELK方案,logstash采集日志、经过过滤清洗,并存储ES,Kibana查看的方式,这里需注意日志源区分。
(4)监控
监控需要实现基础资源以及应用的监控,可以对服务级别或者pod级别的实例数据进行监控展示。
(5)权限
这边可以对数据库的访问权限做控制,也可以对集群角色权限做控制,数据库方面可以设置ip段以及白名单的方式,而对集群角色可以通过RBAC进行控制。
(6)主机资源
需要对主机业务、主机组进行划分,管理多类型主机资源,可以设置集群节点亲和性,或者打标签去进行资源的调度。
5、 现有架构思考
通过上述介绍对于基于K8s的容器服务框架有一个大致的了解,但是这过程需要关注网络以及安全的问题,将开发、测试以及生产环境的隔离、如何部署发布都需要一个比较妥善的处理,这样带来的好处自不必说,首先对于运维人员来说就可以减少大量的重复劳动。持续使用更好的模式,相信一定可以更好的服务于自己的工作。