案例 | 信安运维基于 TKE 平台的容器技术实践 原 荐

作者

汤英康,腾讯高级工程师、Kubernetes 开源协同 PMC,负责TEG信息安全部的容器化上云相关工作。

引言

截止到2021年5月,TEG 信安运维团队历时一年,完成了 TKE 容器从0到1的平台能力建设,集群总docker命令规模超过60万核,在资源成本、服务质量和运营效率上都取得了明显的收益。 本文将介绍信安 TKE 容器的建设思路和历程,分享各阶段遇到的问题和方案docker面试题及答案,希望能给其他上云团队提供一些参考。

背景

信安致力于提供专业的内容安全解决方案,承接了公司内外大量的业务安全需求,grafana监控随着业务量的迅速增长,信安内部的devops是什么岗位资源规模也日益增长,在机器成本、服务质量和交付效率方面也暴露了很多优化空间;自从公司倡导开源协同、自研上tkestack云以来,TKE(Tencent Kubernetes Engine)成了内部首推docker是干什么的的上云方式,以 docker 和 kubernetes 为核心的容器技术也devops是什么岗位早已成为业界架构升级的主流选择。

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

因此,在2020上半年,kubernetes集群grafana读音安联合 TKE、智研和kubernetes翻译运管团队协同建设,开启了kubernetes翻译信安容器平台的建设之路。

建设思路和总体规划

信安对于容器平台的kubernetes建设思路和历程,可以总结概括为“一个方向、三个阶段”:

【一个方向】向云原生理念看齐,围绕云原生开源生态体系进行方案选型,紧跟业界先进的基础架构升级方向;

【三个阶段】云原生有三驾马车:容器云 + Devodocker容器ps 运营体系 + 微devops工程师服务,分别对应了容器化征途必经的三个阶段,

  • 阶段1:基础平台建设,将容器grafana技术引入到服务架构并适配,完成从0到1的能力建设、业务改造和架构升级;
  • 阶段2:运营能力迭代,主要任务是围绕kubernetes部署容器平台提升研效能力、完善数据运营能力,并建立稳定性保障体系;
  • 阶段3:云原生kubernetes翻译成熟度提升,基于公司发布的云原生grafana教程成熟度模型,以成熟度评分为抓手,推动现有架构持续优化。

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

基础平台建设

平台能力建设

在 TKEStack 团队的协助下,信安顺利地在深圳、广州、上海、南京4个地区完成了CPU独立集群的搭建,结合 TKEStackdockerfile 的控制台页面,快速具备了容器发布和管理的基础能力。 通用能力之外,在个性化需求的适配上,主要有:

  • 实例固定 IP:通过 FloatingIP 插件实现,创建容器时在网络模式中选择浮动Idocker常用命令P,IP回收策略选择“缩容或删除 APP 时kubernetes集群回收”,即可实现
  • CMDB 同步:通过 CMDB 控制器插件实docker菜鸟教程现,实例启动后,devops开发运维一体化插件会自动将 pod IP 注册到 annotation 中指定的业务模块
  • L5/北极星服务注册:通过LBCF插件实现,实例 running 状态后,可以将实例IP和指定端口注册到L5/北极星,实例被删除时,可以从L5/北极星下线

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

GPU 集群也devops平台在深圳和上海完成搭建并投入使用,并设计了基于 Virtual Kubelet、将 GPU 集群的CPU资源注册到CPU 集群中进行调grafana教程度的方案,能更好地复用 GPU 机器上空闲的CPU资源。

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

业务容器化改造

具备平台能力后,下一步就是对现有的 IDCdocker安装部署/CVM 上部署的服务进行容器化改造。这里的难点主要有:

  • 服务多样性,包含无状态、有状态和 GPU 的服务,单个服务的包很大(最大可达几十个G)docker是干什么的,服务有自己的依赖环境等
  • 需要考虑多个研发运营流程节点:包括开发改造、测试流程规范、Dockerfile 镜像制作、CICD 流程、运维变更规范等

我们主要采取了如下几个措施:

  1. 首先,梳理不同场景下服务的改造流程,在内部制定了统一的开发、测试和运维使用规范
  2. docker是干什么的基础镜像的选择上,我们基于信安标准化的机kubernetes的最小工作单元器环境制作了基础镜像devops流程,减少服务因为环境问题导致异常的概率
  3. 抽象出 Dockerfdevops自动化部署ile 模板,降低了服务改造成本(开发同学几乎0参与)
  4. 统一容器内的启动kubernetes怎么读入口(Entrypoint 和 CMD),在管理脚本中启动服务
  5. 部分服务在启动之前、需要将容器IP写到配置文件中,我们通过在管理脚本中实现
  6. 对于 size 过大的软件包和镜像,考虑将文件机型拆分管kubernetes翻译理,例如数据模型文件、通过服务启动时再去文件下发系统拉取

资源利用优化

一方面,将每个服务划分到单独的 namgrafana插件espace 空间,结合 ns 的 ResoureQuota 来配置和限制服务所能使用的资源;

另一方面,为了提升集群整体的资源利用率,对每个服务在实际部署时进行合理的 cpu 资源超卖,即 cpu 的 limgrafana汉化its 值会大于 requests 值;一般会结合服务的当前利用率、目标利用率以及服务的重要性来考虑,具体的超卖比例计算公kubernetes教程式为:

通过这种方式,对于长期利用率低下的服务,在不调整实例的情况下,就可以极kubernetes教程大地提升宿主机整机的 CPU 利用率grafana模板

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

调度管理

通过开启 K8s 本身的 HPA 和 CA 能力,可以实现整体架构从应用层、到集群层的两级弹性调度。

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

由于我们是跨地区多kubernetes集群集群部署,所以需要对多个dockerfile服务、在多个集群去配置管理HPA,并且定期根据实际的资源使用情况,来devops流程判断当前服务的 HPA 策略是否合理; 为此,我们设计开发了 HPA 管理系统,实现了:

  • 将 HPA 策略分类管理,对于业务请求波动情况、docker命令伸缩指标、阈值grafana漏洞和优先级相近的服务,可以用一个调度类来批量创建HPA策略
  • 在跨集群中,通过一个统一的入口来下发和配置 HPA,无需在每个集群docker容器单独配置和管理,提升管理效率
  • 通过定时拉取服务的监控指标,可以输出服务当前的资源实际使用情况,判断kubernetes部署 HPA 策略合理性并修改

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

运营能力迭代

Dgrafana教程evops 研效能力方案kubernetes怎么读

【CICD】:基于现有的智研 CI 流水线,增加【智研-镜像构建】和【智研-制品入库】插件docker菜鸟教程,将编译生成的软件包转化成镜像后推送到统一软件源,实现 CI 和 TKEdocker容器 的对接

【监控】:将 agrafana漏洞gent 注入到基础镜像中,kubernetes教程随管理脚本启动

【日志】:业务日志直接上报到智研,k8s 集群层面的 event 事件,通过事件持久化组件存储到 Elasticsearch、供后续查询

【配置管理】:将七彩石 agent 注入到基础镜像中,随管理脚本启动,服务统一用七彩石下发配置

数据运营系统建设

为了更贴合业务运营场景,我们设计并开发了 kbrain 系统,在后台对接docker容器 k8s 集群、拉取基础数据并进行二次处理后存入 cdb 中,通过 grafana 配置展示业务维度的视图数据和报表,并引入了健康度评分、成本收益、超卖比例、资源碎片实例等有价值的kubernetes中文文档数据作为运devOps营参考。

案例 | 信安运维基于 TKE 平台的容器技术实践
                                                原
                                                    荐

对于已经配置了 HPA 弹性伸缩策略的服务,也可以在 Hgrafana模板PA 调度看板查看效果,如下图所示:

这里有4条曲线:当前利用率、目标利用率、当前副本数、目标副本数

趋势图证明:当前利用率提kubernetes怎么读高时,目标副本数随之提高,扩容完kubernetes中文文档成后、利用率恢复到正常水平

稳定性保障体系

对于 TKE 这样的大规模基础平台,完善的稳定性保障体系和平台支撑是必不可少的。主要从以下几个方面考虑:

  • SLA规范:作为业务方,和TKE平台支撑方明确对齐SLA规范,包括不可用的定义、故障的响应机制和处理流devops什么意思程、平台运维变更规范、节假日规范以及问题上升渠道等,这是稳定性的基础
  • 稳定性指标:整理所有能够docker面试题及答案反馈平台和业务稳定性的指标,并通过后台拉取后在grafana平台汇kubernetes面试题聚展示
  • 容量管理:实时监测集群的剩余资源水位,避免因容量不足导致的故障
  • 预案机制:梳理所有可能产生的故障,并提前设计好快速恢复的应急预案
  • 监控告警:检查集群和服务grafana是否都接入和上报了有效的监控指标,出现问题时必须能第一时间收到告警
  • 混沌工程:协同引入混沌工程oteam,围devops流程绕TKE建立故障演练能力,检验SLgrafana教程A、稳定性指标、容量系统和预案机制的可靠性

云原生成熟度提升

经过前两个阶段的基础平台建设和运营能devops工程师力迭代,我们基本完成了容器能力从0到1、从无到有的建设;下一步,是从“有”到“优”,把现grafana插件有的容器架构和业务改造模式、往更加云原生的方向靠拢。

富容器瘦身

在前期,由于人力投入有限,我们采用了富容器的方式改造业务,也就是grafana教程把容器当成虚拟kubernetes面试题机用,在容器的基础镜像里面注入了过多的基础 agent。

基于云grafana使用教程原生理念和容器的正确打开姿势,我们把容器进行瘦dockerfile身,将原有的kubernetes部署容器拆分成:1个业务容器+多个基础 agent 容器,将大文件从镜像里面完全剥离、利用云盘/云存储/文件devops怎么读分发系统实现。

拆分后,1个 pod 里面会有多个容器,容器之间如果需要共享文件(例如 业务进程读dockers写智研监控 agent 的 socket 文件),可以采用 emptydir 卷挂载方式实现。

小核心改造+Overlay网络优化

对于grafana漏洞 TKE 容器集群来说,如果大多数服务都是大核心配置(例如 36c、76c甚至更大),会产生较多的资源碎片,一部分节grafana漏洞点的剩余可分配资源(2c、4c、8c等)无法docker是干什么的真正分配出去,造成资源浪费。所以,从宏观角度看,需要把大部分服务的容器资源配置尽可能切小。

信安的服务在容器化改造之前,习惯了多grafana es进程的架构并为之做了优devops简介化,单机经常运行48/76个进程(甚至更docker菜鸟教程多);容器化改造运行后,由于超卖、基于获取到的 cpu limits 值运行的进程数grafana es会远高于tkestack cpudocker常用命令 requests 值,导致部分进程异常(无法真正绑核运行)。

因此,需要修改服务运行配置、切换到小核心配置且 requegrafana读音sts=limits 值的容器中运行。

然而,在容器切小核心的同时docker常用命令,服务的实例数也会增长。例如,从76核配置切换到38核,实例数会翻一倍;从76核到8核,实例数几乎扩大到10倍。如果这时kubernetes面试题服务依然采用 FloatingIP 的网络架构,对于集群底层的IP资源又是一个巨大的开销。

一般来说,切换到 Overlaygrafana 网络即可,但Overgrafana插件lay网络的延迟会高出20%,而且因为是集群内唯一的虚拟IP、所以无法注册到L5/北极星、也不支持 monitor 监控。 经过和TKE团队devOps的调研论证,最终设计采grafana监控用了基于Overlay改进的 HostPort 网络方案:实例 Pod 依然拿到的是集群内虚拟IP,但是可以把 Pod 内部的服务端口映射到宿主机的随机端口,kubernetes怎么读再把宿主机IP+随机kubernetes的最小工作单元端口 注册到L5/北极星,从而既实现了服务注册、又能够最大限grafana模板度降低时延。

我们针对试点服务(低俗识别)首先完成了小核心改造+Overlay 网络的部署和测试kubernetes怎么读,验证得到:

overlay+HostPort 网络下的吞吐量与时延、和 Floagrafana使用教程tingIP 接近

成果小结

目前,信安已基本完成了 基础平台建设+运营能力迭代 这两个阶段的建设任务,正在努力提升云原生成熟度。截止到2021年5月:

1)信安grafanaTKE集群累计规模达62w+grafana漏洞核,GPU卡容器化超2000卡

2)业务累计接docker和虚拟机的区别入40+个信安服务,约占grafana插件33%的转维服务

3)累计节省成本约20w核,质量和效率也有明显的提升。

结语

技术圈kubernetes怎么读有一句名言:“人们对于新技术往往都会kubernetes翻译短期高估它的影响,但是大大低估它长期的影响”。

新的技术,grafana模板从创造到落地必然需要经历一个过程,它需要在短期付出比较多的投入,架构的升级也会给团队其他项目和人员带来阵痛;但只要论证kubernetes面试题清楚方向、并坚定地朝着它努力,我们必将迎来质变、收获grafana使用教程我们所希冀的馈赠。

路漫漫其修远兮,希望大家都能在云原生建设的道路上行得更远、走得更好!