误删50节点K8s集群为何3小时才能复原?Spotify揭自家事故幕后经验
线上音乐串流服务Spotify一位基础架构工程师David Xia,在今年欧洲KubeCon大会上分享了自家Kubernetes集群一次意外事件。拥有上亿用户的Spotify,旗下开发者高达1千人,经常要在上万台VM上部署程序码。Spotify主要使用了GCP云端服务,在云端容器服务GKE上拥有3套生产集群,分别负责欧洲、亚洲和美国,每小时会自动备份一次。
2018年11月时,有一次工程师为了测试GKE的新功能,新增了一个测试用的集群,完成测试后,工程师要删除这个测试集群来节省资源,却不小心删除了负责美国区用户的一个50节点的集群。David眼看着删除指令关闭了一个又一个节点,问遍同事如何紧急停止这个删除指令,「完全没办法阻止,只能重建集群。」他坦言,后来Spotify足足花了3.25小时才重建了这个集群。
为何这么久?重建过程中,他才发现,集群建立Scrips有臭虫,参考文件的内容不完整也不尽正确,导致他们设计的集群建立程序,无法反覆使用。一个月,Spotify试图将防止误删集群的做法,列入自家的开发管理规范中,并采用了基础架构管理工具Terraform来避免集群部署的意外,但是,这又引发了另一起事故。这次是要将两个现成集群合并成一个新的集群时,建立新集群时因为权限不够而失败,工程师后来扩充了权限后才能执行。儘管合并工作顺利完成后,却导致Terraform误判集群需要异动,而删除了整个亚洲区集群,甚至连美国区集群也一起删除。
David表示,出错难免,但失败也要有因应计画。后来,Spotify采取了3个因应对策,第一是执行K8s服务合并时,分批进行。第二是改变在K8s上登录服务的作法,第三是建立K8s实例出错时,可以快速由非K8s实例接手的备援机制。
SRE注意,要小心Kubernetes常见十大类问题
监控工具服务商Datadog两位工程师Laurent Bernaille和Robert Boll在今年欧洲KubeCon分享了自家经验中,管理Kubernetes常遇到的十种问题。Datadog投入Kubernetes项目超过2年多,自家服务也大力拥抱,最大规模的一个K8s集群高达2千个节点,平均K8s集群节点数也多有1,000~1,500之多。第一类问题是DNS管理问题,而且最常造成K8s事故的问题也多半是DNS问题。第二类常见问题则是任务启动失败而导致映像档抓取失效。第三是kubectl命令列工具操作出错。再者,应用程序Pod排程没有考虑到新节点,Log档10倍速度暴增塞满储存空间、大量副本和重製导致Pod失踪、Cassandra集群内有鬼(未预期的操作)、部署程序越来越慢、容器化过程出包、关超慢的Pod关闭过程(Termination)。他们提醒,要避免出错得特别留意4件事,使用管理Pod的DaemonSet要小心,认清DNS管理向来很难,云端基础架构不见得很透明,最后则是容器不一定真的顺利容器化了。
Google正式推出云端排程工作服务,GKE也能自动派工
Google正式推出其云端託管的排程工作(Cron Job)服务Cloud Scheduler,使用者可以用Cloud Scheduler来触发任何批次、大资料或是云端基础设施操作,而且这个功能不只可以在GCP上使用,还能从用户本地端或是第三方资料中心来触发目标工作。包括GCP容器服务GKE、Compute Engine、Cloud Run以及Cloud Functions等多项GCP服务,甚至可以是在本机端应用程序,都可以透过Cloud Scheduler来自动派工。
Pulumi开源基础架构即程序码框架Crosswalk,能简化AWS各类部署工作
基础架构即程序码供应商Pulumi开源了一个可用于部署AWS工作负载的框架Pulumi Crosswalk for AWS,提供基础架构即程序码元件,并内建AWS最佳实践,帮助用户根据需求,将应用程序部署到AWS上。可支援多种AWS服务,包括无伺服器服务Lambda和API Gateway,还有容器服务ECS以及Fargate,以及像是热门的Kubernetes服务EKS、跨网路的VPC和SecurityGroups,而监控服务Cloudwatch Dashboards与Alarms等都有支援。由于Crosswalk的模块建构在AWS的塬生功能模组之上,用户可以自由地使用高阶元件,或是使用低阶平台塬语,也能根据需求混合使用。
强化Azure DevOps程序码提交机制,微软释出Multi-Cherry-Pick扩充套件
为了让Azure DevOps开发者,可以更简单地同时对多分支的应用提交,微软释出了PR Multi-Cherry-Pick扩充套件,该套件是使用git Cherry-Pick指令,能够自动应用程序码变更到多个分支上。扩充套件Multi-Cherry-Pick的名称来自git指令Cherry-Pick,这是用来接受一个或多个现有的提交(Commit),并将每个提交的更改当作新的提交,应用到不同的分支上的操作。
IBM花2年改用K8s重新打造自家云端平台,部署上万内部应用的现代化IT新架构首度公开
2年前,IBM展开了旗下云端平台产品的大整顿,不光只是重整品牌,还找来了20年前开发出IBM第一代SOA和Web产品的IBM Watson和云端平台首席架构师Andrew Hately,大力采用Docker、Kubernetes、Linux和Cloud Foundry,设计出全新的现代化IT架构。3年前,IBM开始研究跨云管理架构,决定大力投入Kubernetes开源项目,2年前,IBM悄悄地展开了自家内部平台的架构改造任务,甚至不惜重构自家云端平台,要将大部分的IBM软体和云端平台,都搬上Kubernetes。IBM先从资料库平台开始着手改造,例如将天气预测应用改部署到IBM云上的Kubernetes环境中,后来更进一步扩大到所有的分析和AI产品,都转而部署到Kubernetes环境上。Andrew Hately表示,去年终于完成了这个庞大的平台重构计画,除了用来管理基础架构上运算、储存和网路的控制台程序,以及基础架构的虚拟机器(VM)不是采用Kubernetes,IBM其余的云端服务,甚至内部所用的上万支应用程序,几乎全都搬上了Kubernetes。
—完—