误删50节点K8s集群为何3小时才能复原?Spotify揭自家事故幕后经验
誤刪50節(jié)點(diǎn)K8s集群為何3小時(shí)才能復(fù)原?Spotify揭自家事故幕后經(jīng)驗(yàn)
線上音樂串流服務(wù)Spotify一位基礎(chǔ)架構(gòu)工程師David Xia,在今年歐洲KubeCon大會(huì)上分享了自家Kubernetes集群一次意外事件。擁有上億用戶的Spotify,旗下開發(fā)者高達(dá)1千人,經(jīng)常要在上萬臺(tái)VM上部署程序碼。Spotify主要使用了GCP云端服務(wù),在云端容器服務(wù)GKE上擁有3套生產(chǎn)集群,分別負(fù)責(zé)歐洲、亞洲和美國(guó),每小時(shí)會(huì)自動(dòng)備份一次。
2018年11月時(shí),有一次工程師為了測(cè)試GKE的新功能,新增了一個(gè)測(cè)試用的集群,完成測(cè)試后,工程師要?jiǎng)h除這個(gè)測(cè)試集群來節(jié)省資源,卻不小心刪除了負(fù)責(zé)美國(guó)區(qū)用戶的一個(gè)50節(jié)點(diǎn)的集群。David眼看著刪除指令關(guān)閉了一個(gè)又一個(gè)節(jié)點(diǎn),問遍同事如何緊急停止這個(gè)刪除指令,「完全沒辦法阻止,只能重建集群。」他坦言,后來Spotify足足花了3.25小時(shí)才重建了這個(gè)集群。
為何這么久?重建過程中,他才發(fā)現(xiàn),集群建立Scrips有臭蟲,參考文件的內(nèi)容不完整也不盡正確,導(dǎo)致他們?cè)O(shè)計(jì)的集群建立程序,無法反覆使用。一個(gè)月,Spotify試圖將防止誤刪集群的做法,列入自家的開發(fā)管理規(guī)范中,并采用了基礎(chǔ)架構(gòu)管理工具Terraform來避免集群部署的意外,但是,這又引發(fā)了另一起事故。這次是要將兩個(gè)現(xiàn)成集群合并成一個(gè)新的集群時(shí),建立新集群時(shí)因?yàn)闄?quán)限不夠而失敗,工程師后來擴(kuò)充了權(quán)限后才能執(zhí)行。儘管合并工作順利完成后,卻導(dǎo)致Terraform誤判集群需要異動(dòng),而刪除了整個(gè)亞洲區(qū)集群,甚至連美國(guó)區(qū)集群也一起刪除。
David表示,出錯(cuò)難免,但失敗也要有因應(yīng)計(jì)畫。后來,Spotify采取了3個(gè)因應(yīng)對(duì)策,第一是執(zhí)行K8s服務(wù)合并時(shí),分批進(jìn)行。第二是改變?cè)贙8s上登錄服務(wù)的作法,第三是建立K8s實(shí)例出錯(cuò)時(shí),可以快速由非K8s實(shí)例接手的備援機(jī)制。
SRE注意,要小心Kubernetes常見十大類問題
監(jiān)控工具服務(wù)商Datadog兩位工程師Laurent Bernaille和Robert Boll在今年歐洲KubeCon分享了自家經(jīng)驗(yàn)中,管理Kubernetes常遇到的十種問題。Datadog投入Kubernetes項(xiàng)目超過2年多,自家服務(wù)也大力擁抱,最大規(guī)模的一個(gè)K8s集群高達(dá)2千個(gè)節(jié)點(diǎn),平均K8s集群節(jié)點(diǎn)數(shù)也多有1,000~1,500之多。第一類問題是DNS管理問題,而且最常造成K8s事故的問題也多半是DNS問題。第二類常見問題則是任務(wù)啟動(dòng)失敗而導(dǎo)致映像檔抓取失效。第三是kubectl命令列工具操作出錯(cuò)。再者,應(yīng)用程序Pod排程沒有考慮到新節(jié)點(diǎn),Log檔10倍速度暴增塞滿儲(chǔ)存空間、大量副本和重製導(dǎo)致Pod失蹤、Cassandra集群內(nèi)有鬼(未預(yù)期的操作)、部署程序越來越慢、容器化過程出包、關(guān)超慢的Pod關(guān)閉過程(Termination)。他們提醒,要避免出錯(cuò)得特別留意4件事,使用管理Pod的DaemonSet要小心,認(rèn)清DNS管理向來很難,云端基礎(chǔ)架構(gòu)不見得很透明,最后則是容器不一定真的順利容器化了。
Google正式推出云端排程工作服務(wù),GKE也能自動(dòng)派工
Google正式推出其云端託管的排程工作(Cron Job)服務(wù)Cloud Scheduler,使用者可以用Cloud Scheduler來觸發(fā)任何批次、大資料或是云端基礎(chǔ)設(shè)施操作,而且這個(gè)功能不只可以在GCP上使用,還能從用戶本地端或是第三方資料中心來觸發(fā)目標(biāo)工作。包括GCP容器服務(wù)GKE、Compute Engine、Cloud Run以及Cloud Functions等多項(xiàng)GCP服務(wù),甚至可以是在本機(jī)端應(yīng)用程序,都可以透過Cloud Scheduler來自動(dòng)派工。
Pulumi開源基礎(chǔ)架構(gòu)即程序碼框架Crosswalk,能簡(jiǎn)化AWS各類部署工作
基礎(chǔ)架構(gòu)即程序碼供應(yīng)商Pulumi開源了一個(gè)可用于部署AWS工作負(fù)載的框架Pulumi Crosswalk for AWS,提供基礎(chǔ)架構(gòu)即程序碼元件,并內(nèi)建AWS最佳實(shí)踐,幫助用戶根據(jù)需求,將應(yīng)用程序部署到AWS上。可支援多種AWS服務(wù),包括無伺服器服務(wù)Lambda和API Gateway,還有容器服務(wù)ECS以及Fargate,以及像是熱門的Kubernetes服務(wù)EKS、跨網(wǎng)路的VPC和SecurityGroups,而監(jiān)控服務(wù)Cloudwatch Dashboards與Alarms等都有支援。由于Crosswalk的模塊建構(gòu)在AWS的塬生功能模組之上,用戶可以自由地使用高階元件,或是使用低階平臺(tái)塬語,也能根據(jù)需求混合使用。
強(qiáng)化Azure DevOps程序碼提交機(jī)制,微軟釋出Multi-Cherry-Pick擴(kuò)充套件
為了讓Azure DevOps開發(fā)者,可以更簡(jiǎn)單地同時(shí)對(duì)多分支的應(yīng)用提交,微軟釋出了PR Multi-Cherry-Pick擴(kuò)充套件,該套件是使用git Cherry-Pick指令,能夠自動(dòng)應(yīng)用程序碼變更到多個(gè)分支上。擴(kuò)充套件Multi-Cherry-Pick的名稱來自git指令Cherry-Pick,這是用來接受一個(gè)或多個(gè)現(xiàn)有的提交(Commit),并將每個(gè)提交的更改當(dāng)作新的提交,應(yīng)用到不同的分支上的操作。
IBM花2年改用K8s重新打造自家云端平臺(tái),部署上萬內(nèi)部應(yīng)用的現(xiàn)代化IT新架構(gòu)首度公開
2年前,IBM展開了旗下云端平臺(tái)產(chǎn)品的大整頓,不光只是重整品牌,還找來了20年前開發(fā)出IBM第一代SOA和Web產(chǎn)品的IBM Watson和云端平臺(tái)首席架構(gòu)師Andrew Hately,大力采用Docker、Kubernetes、Linux和Cloud Foundry,設(shè)計(jì)出全新的現(xiàn)代化IT架構(gòu)。3年前,IBM開始研究跨云管理架構(gòu),決定大力投入Kubernetes開源項(xiàng)目,2年前,IBM悄悄地展開了自家內(nèi)部平臺(tái)的架構(gòu)改造任務(wù),甚至不惜重構(gòu)自家云端平臺(tái),要將大部分的IBM軟體和云端平臺(tái),都搬上Kubernetes。IBM先從資料庫(kù)平臺(tái)開始著手改造,例如將天氣預(yù)測(cè)應(yīng)用改部署到IBM云上的Kubernetes環(huán)境中,后來更進(jìn)一步擴(kuò)大到所有的分析和AI產(chǎn)品,都轉(zhuǎn)而部署到Kubernetes環(huán)境上。Andrew Hately表示,去年終于完成了這個(gè)龐大的平臺(tái)重構(gòu)計(jì)畫,除了用來管理基礎(chǔ)架構(gòu)上運(yùn)算、儲(chǔ)存和網(wǎng)路的控制臺(tái)程序,以及基礎(chǔ)架構(gòu)的虛擬機(jī)器(VM)不是采用Kubernetes,IBM其余的云端服務(wù),甚至內(nèi)部所用的上萬支應(yīng)用程序,幾乎全都搬上了Kubernetes。
—完—
總結(jié)
以上是生活随笔為你收集整理的误删50节点K8s集群为何3小时才能复原?Spotify揭自家事故幕后经验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 发布基于 VS Code
- 下一篇: 《刷新》:拥抱同理心,建立成长型思维