91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解讀 KubeCon EU 2019 應用管理領域的新看點

發布時間:2020-08-08 15:53:34 來源:ITPUB博客 閱讀:149 作者:阿里系統軟件技術 欄目:云計算

解讀 KubeCon EU 2019 應用管理領域的新看點


作者  | 阿里云智能事業群技術專家 鄧宏超

劃重點

阿里云容器平臺技術專家、原 CoreOS 公司工程師、 K8s Operator 項目的核心作者之一鄧洪超,精彩解讀 KubeCon EU 2019 "應用管理“領域精華內容:

  • The config changed

  • Server-side Apply

  • Gitops

  • Automated Canary Rollout

Kubecon EU 2019 剛剛在巴塞羅那拉下帷幕,來自阿里巴巴經濟體的講師團,在大會上分享了互聯網場景下規模化 Kubernetes 集群的各項落地經驗和教訓。所謂“獨行速而眾行遠”,從不斷發展壯大的社區中,我們看到越來越多的人擁抱開源,往標準演進,搭上了這趟開往云原生的高速列車。

眾所周知,云原生架構的中心項目是 Kubernetes,而 Kubernetes 則圍繞著“應用”來展開。讓應用部署得更好,讓開發者更高效,才能給團隊和組織帶來切實的利益,才能讓云原生技術變革發揮更大的作用。

變革的勢頭既如洪水般吞沒著老舊封閉的內部系統,又如春雨般孕育出更多的新開發者工具。在本次 KubeCon 中,就出現了許多有關應用管理與部署的新知識。這些知識中有哪些想法和思路值得借鑒,讓我們少走彎路?在它們背后,又預示著什么樣的技術演進方向?

在本文中,我們邀請到了阿里云容器平臺技術專家、原 CoreOS 公司工程師、 K8s Operator 項目的核心作者之一鄧洪超,為讀者精選了此次會議“應用管理”領域的精華內容來一一進行分析與點評。

解讀 KubeCon EU 2019 應用管理領域的新看點

The Config Changed

Kubernetes 上部署的應用一般會把配置存放到 ConfigMap 里,然后掛載到 Pod 文件系統中去。當 ConfigMap 發生更改時,只有 Pod 里掛載的文件會被自動更新。這種做法對某些會自動做熱更新的應用(比如 nginx)來說是 OK 的。但是,對于大多數應用開發者來說,他們更傾向于認為更改配置要做一次新的灰度發布、跟 ConfigMap 相關聯的容器應該做一次灰度升級。

灰度升級不僅簡化了用戶代碼,增強了安全穩定性,更是體現了不可變基礎架構的思想。應用一旦部署,就不再做變更。需要升級時,只要部署一個新版系統,驗證 OK 后再摧毀舊版就好了;驗證不通過時也容易回滾到舊版。

正是基于這樣的思路,來自 Pusher 的工程師們研發了 Wave,一款自動監聽 Deployment 相關聯的 ConfigMap/Secret 并隨之改動而觸發 Deployment 升級的工具。這款工具的獨特之處在于它會自動搜索該 Deployment PodTemplate 里面的 ConfigMap/Secret,然后把里面所有數據計算一次 hash 放到 PodTemplate annotations 里面;當有變動時,會重新計算一次 hash 并更新 PodTemplate annotations,從而觸發 Deployment 升級。

無獨有偶,開源社區里還有另一款工具 Reloader 也做了類似的功能——不同的是,Reloader 還能讓用戶自己選擇填寫監聽哪幾個 ConfigMap/Secret。


分析與點評

升級不灰度,背鍋兩行淚。不論是升級應用鏡像還是更改配置,都要記得做一次新的灰度發布和驗證。

另外我們也看到,不可變基礎架構給構建云計算應用帶來了嶄新的視角。朝著這個方向發展,不僅能讓架構更安全更可靠,更是能跟其他主要工具結合好,充分發揮云原生社區的作用,對傳統應用服務實現“彎道超車”。舉個例子,充分結合上面的 wave 項目和 Istio 中 weighted routing 功能,網站就能達到小部分流量對新版配置進行驗證的效果。

視頻鏈接:https://www.youtube.com/watch?v=8P7-C44Gjj8


解讀 KubeCon EU 2019 應用管理領域的新看點

Server-side Apply

解讀 KubeCon EU 2019 應用管理領域的新看點

Kubernetes 是一個聲明式的資源管理系統。用戶在本地定義期望的狀態,然后通過 kubectl apply 去跟更新當前集群狀態中被用戶指定的那一部分。然而它遠沒有聽起來那么簡單...

原來的 kubectl apply 是基于客戶端實現的。Apply 的時候不能簡單地替換掉單個資源的整體狀態,因為還有其他人也會去更改資源,比如 controllers、admissions、webhooks。那么怎樣保證在改一個資源的同時,不會覆蓋掉別人的改動呢?

于是就有了現有的 3 way merge:用戶把 last applied state 存在 Pod annotations 里,在下次 apply 的時候根據 (最新狀態,last applied,用戶指定狀態) 做 3 way diff,然后生成 patch 發送到 APIServer。但是這樣做還是有問題!Apply 的初衷是讓個體去指定哪些資源字段歸他管理。

但是原有實現既不能阻止不同個體之間互相篡改字段,也沒有在沖突發生時告知用戶和解決。舉個例子,筆者原來在 CoreOS 工作時,產品里自帶的 controller 和用戶都會去更改 Node 對象的一些特殊 labels,結果出現沖突,導致集群出故障了只能派人去修。

這種克蘇魯式的恐懼籠罩著每一個 k8s 用戶,而現在我們終于迎來了勝利的曙光——那就是服務器端 apply。APIServer 會做 diff 和 merge 操作,很多原本易碎的現象都得到了解決。更重要的是,相比于原來用 last-applied annotations,服務器端 apply 新提供了一種聲明式 API (叫 ManagedFields) 來明確指定誰管理哪些資源字段。而當發生沖突時,比如 kubectl 和 controller 都改同一個字段時,非 Admin(管理員)的請求會返回錯誤并且提示去解決。


分析與點評

媽媽再也不用擔心我 kubectl apply 了。雖然還是 Alpha 階段,但是服務器端 apply 替代客戶端只是時間問題。這樣一來,不同組件同時更改同一資源將會變得更加安全可靠。

另外我們也看到,隨著系統的發展,尤其是聲明式 API 的廣泛使用,在本地的邏輯將會變少,而在服務器端的則會變多。在服務器端有諸多好處:許多操作,比如 kubectl dry-run、diff,在服務器端實現會更簡單;提供 HTTP endpoint,這樣會更容易把 apply 這樣的功能構建到其他工具中;把復雜邏輯放到服務器端實現和發布,能夠更容易做好管控,讓用戶享受到安全、一致、高質量的服務。

視頻鏈接:https://www.youtube.com/watch?v=1DWWlcDUxtA


解讀 KubeCon EU 2019 應用管理領域的新看點

Gitops

會議中有一個座談小組討論了 Gitops 的好處,下面給大家總結一下。

第一,Gitops 讓整個團隊內部更“民主”了。所有東西都寫下來了,想看就看。任何變更在發布前都需要走 pull request,不僅讓你知道得清清楚楚,還能讓你參與評審輸入意見。所有改動、討論統統都記錄在 Github 等工具上,隨時可以翻看歷史。這些種種讓團隊協作更流暢和專業化。

第二,Gitops 讓發布更安全穩定了。代碼不再能夠隨意發布,需要相關負責人、甚至多人評審。需要回滾時,原來的版本就存在 Git 里面。誰在什么時候發布了什么代碼,有審計歷史。這些種種發布流程更專業化,讓發布結果更穩定可靠。


分析與點評

Gitops 不僅僅是解決一個技術問題,更主要的利用 Github 等工具的版本、歷史、審計、權限讓,讓團隊協作和發布流程更專業化和流程化。

Gitops 如果能夠廣泛推廣,對整個業界的影響將是巨大的。比方說,不論去任何公司,任何人都可以快速上手發布代碼。

Gitops 里面體現的 Configuration as code 和 Git as the source of truth 的思想,還是非常值得我們學習和實踐的。

視頻鏈接:https://www.youtube.com/watch?v=uvbaxC1Dexc


解讀 KubeCon EU 2019 應用管理領域的新看點

Automated Canary Rollout

金絲雀發布 (Canary rollout),是指在發布過程中,先將一小部分流量導入到新版本,并分析和驗證上線行為是否正常。一切正常的話繼續將流量逐漸切換到新版本中,直到舊版沒有流量并被摧毀。我們知道,在 Spinnaker 等工具中,會有一個手工驗證和通過的步驟。這個步驟其實可以用自動化工具替代掉,畢竟每次檢查的東西都挺機械式的,例如檢查下成功率和 p99 延時。

基于上述思想,來自 Amadeus 和 Datadog 的工程師分享了如何利用 Kubernetes、Operator、Istio、Prometheus 等工具來做金絲雀發布。思路是整個金絲雀發布被抽象成一個 CRD,然后做一次金絲雀發布的過程就變成了編寫一個聲明式的 YAML 文件就夠了,Operator 收到用戶創建的 YAML 文件后會自動完成復雜的運維操作。這里主要步驟分為:


  1. 部署新版本服務 (Deployment + Service)

  2. 更改 Istio VirtualService 配置切換一部分流量到新版本;

  3. 檢驗 Istio metrics 中新版本服務的成功率和 p99 響應時間是否均滿足條件;

  4. 如果滿足則整個應用升級到新版本;否則就回滾。

無獨有偶,Weave 也開源了自動化金絲雀發布工具 Flagger。不同的是,Flagger 會循序漸進地切流到新版本,比如每次新切 5% 流量過去,等到流量都切過去直接摧毀舊版。


分析與點評

使用金絲雀發布一時爽,一直使用一直爽。金絲雀發布有助于提高發布成功率和系統穩定性,是應用管理的重要流程。

另外我們也看到,云原生時代這些復雜的運維流程將被簡化和標準化。通過 CRD 抽象,里面復雜的過程步驟將變成幾個短短的 API 對象提供給用戶。使用 Operator 做自動化運維,只要在 Kubernetes 標準平臺上用戶就可以用上這些功能。而 Istio 和 Kubernetes 作為頂級的標準化平臺,提供了強大的基礎能力讓用戶更容易上手。

視頻鏈接:https://www.youtube.com/watch?v=mmvSzDEw-JI

解讀 KubeCon EU 2019 應用管理領域的新看點

寫在最后

在這篇文章里,我們盤點了本次 KubeCon 中有關應用管理與部署的一些新知識:

  1. 當配置文件改動時,做一個新的應用發布的原因和方法。

  2. 客戶端 kubectl apply 有諸多問題,其中重要一點就是互相篡改資源字段。這些在服務器端 apply 的實現中解決了。

  3. Gitops 不僅僅是解決一個技術問題,更主要的讓團隊協作和發布流程更專業化和流程化。

  4. 利用 Kubernetes、Operator、Istio、Prometheus 這些頂級標準化平臺,我們能簡化金絲雀發布的運維操作,降低了開發者的使用門檻。

這些新的思想,也讓我們感慨萬千:從前,我們總在羨慕“別人家的基礎架構”,它們總是這么優秀而遙不可及。而現在,開源項目和技術標準,正在將這些技術降低門檻,讓每一個開發者都使用上。

而另一方面,一個微妙的變化也正在發生著——“自研”的基礎軟件不得不面臨著邊際效應遞減規律,導致越來越多的像 Twitter 這樣的公司開始加入到云原生陣營。擁抱開源生態和技術標準,儼然成為當前互聯網企業的一個重要機遇和挑戰。構建面向云原生的應用與架構,借助云以及開源的力量,才能做好充分準備在這場上云的變革中揚帆遠航。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安吉县| 新田县| 南丹县| 印江| 大邑县| 武汉市| 承德市| 张家川| 尖扎县| 孟连| 木兰县| 周至县| 禹州市| 永清县| 琼结县| 呼伦贝尔市| 汉沽区| 宿迁市| 上林县| 剑河县| 辛集市| 池州市| 神农架林区| 定日县| 涟源市| 增城市| 郁南县| 鲁山县| 陈巴尔虎旗| 南通市| 务川| 宣恩县| 从化市| 乌拉特前旗| 临江市| 开远市| 襄汾县| 南岸区| 嘉义市| 余姚市| 雅江县|