91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于kubernetes托管虛機(jī)后續(xù)管理設(shè)計(jì)

454398 ? 來(lái)源:oschina ? 作者:8小時(shí) ? 2020-10-15 16:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

基于kubernetes托管虛機(jī)有一些現(xiàn)成的方案,不過(guò)今天筆者要聊的是在虛機(jī)交付后,該如何實(shí)現(xiàn)后續(xù)的管理,包括如何實(shí)現(xiàn)環(huán)境和代碼的部署與更新,感興趣的可以一起看看,本篇是設(shè)計(jì)篇

1. 虛機(jī)應(yīng)用的托管

由于虛機(jī)應(yīng)用交付流程鏈路的復(fù)雜性,我們無(wú)法設(shè)計(jì)一套機(jī)制,能cover住100%的異常場(chǎng)景,所以我們專注正常流的交付,后期可以針對(duì)異常的案例來(lái)進(jìn)行復(fù)盤(pán),不斷提高交付成功率,本節(jié)主要介紹我們?cè)O(shè)計(jì)的自動(dòng)化交付流程、以及用到的k8s相關(guān)的機(jī)制

1.1 面向終態(tài)的交付

虛機(jī)應(yīng)用典型的交付流程大概是這樣的:申請(qǐng)機(jī)器-》部署環(huán)境-》部署代碼-》綁定監(jiān)控-》健康檢查-》灰度上線,如果要對(duì)標(biāo)容器則創(chuàng)建機(jī)器、部署環(huán)境、部署代碼相當(dāng)于完成了一個(gè)“虛機(jī)鏡像”的交付,也是我們主要要自動(dòng)化的流程

1.1.1 核心狀態(tài)機(jī)

在云原生中通常都是基于面向終態(tài)的交付方式, 基于目標(biāo)狀態(tài)和當(dāng)前狀態(tài)由系統(tǒng)自動(dòng)進(jìn)行決策,我們根據(jù)現(xiàn)狀定義了如下的狀態(tài)機(jī):

這里重點(diǎn)說(shuō)下就緒狀態(tài),就緒狀態(tài)表示應(yīng)用的當(dāng)前的部署環(huán)境、代碼完成,并且健康檢查都通過(guò)了即一個(gè)節(jié)點(diǎn)可以進(jìn)行灰度引流了

同時(shí)如果一個(gè)應(yīng)用的環(huán)境變更則會(huì)按照對(duì)應(yīng)的安全頻率來(lái)進(jìn)行節(jié)點(diǎn)環(huán)境的變更,只需要變更節(jié)點(diǎn)的環(huán)境列表,系統(tǒng)會(huì)自動(dòng)發(fā)現(xiàn)當(dāng)前節(jié)點(diǎn)需要進(jìn)行更新,進(jìn)行狀態(tài)機(jī)的轉(zhuǎn)換;然后自動(dòng)化系統(tǒng)會(huì)發(fā)現(xiàn)這個(gè)變更則就會(huì)進(jìn)行檢查并且自動(dòng)化的進(jìn)行環(huán)境的安裝

1.1.2 故障轉(zhuǎn)移

如果發(fā)現(xiàn)某個(gè)節(jié)點(diǎn)宕機(jī)后,則會(huì)由系統(tǒng)首先將系統(tǒng)設(shè)置為下線狀態(tài)(IAAS平臺(tái)還不支持這個(gè)事情), 然后會(huì)根據(jù)策略來(lái)進(jìn)行決策是否自動(dòng)進(jìn)行修復(fù),如果需要修復(fù)則系統(tǒng)會(huì)新創(chuàng)建一個(gè)節(jié)點(diǎn)然后執(zhí)行上述流程,否則則會(huì)修改對(duì)應(yīng)的副本數(shù)量

1.1.3 準(zhǔn)入機(jī)制

為了保障穩(wěn)定性我們?cè)谧詣?dòng)化的流程中加入準(zhǔn)入機(jī)制,即在對(duì)應(yīng)的階段允許引入人工節(jié)點(diǎn)來(lái)進(jìn)行決策,將控制權(quán)交給應(yīng)用運(yùn)維,并且提供相關(guān)的數(shù)據(jù)和策略輔助提高運(yùn)維決策效率

1.1.4 任務(wù)列表

那如果如何確定一個(gè)節(jié)點(diǎn)處于某個(gè)狀態(tài)下該做哪些任務(wù)呢?這里其實(shí)取決于兩部分當(dāng)前狀態(tài)和目標(biāo)狀態(tài),首先我們這里通過(guò)系統(tǒng)內(nèi)部(k8s)里面當(dāng)前的狀態(tài)來(lái)進(jìn)行計(jì)算以確定節(jié)點(diǎn)當(dāng)前該處于哪個(gè)狀態(tài),每當(dāng)進(jìn)入到一個(gè)狀態(tài)就會(huì)同時(shí)追加一個(gè)任務(wù)列表,controller則根據(jù)外部狀態(tài)和任務(wù)列表進(jìn)行自動(dòng)化操作,并更新內(nèi)部狀態(tài),從而不斷的完成不同狀態(tài)的切換,最終達(dá)到目標(biāo)狀態(tài)

1.1.5 異常流程

異常流程的處理可能是所有自動(dòng)化系統(tǒng)里面最頭痛的了,在我們的系統(tǒng)里面主要通過(guò)兩種方式來(lái)解決:人工和自動(dòng)化(好像特么的是廢話),

首先來(lái)說(shuō)自動(dòng)化,當(dāng)節(jié)點(diǎn)某些自動(dòng)化任務(wù)無(wú)法進(jìn)行時(shí)系統(tǒng)會(huì)通知運(yùn)維,當(dāng)前系統(tǒng)遇到無(wú)法處理的異常了,這時(shí)候運(yùn)維會(huì)根據(jù)當(dāng)前問(wèn)題來(lái)修復(fù)某些不滿足的條件,比如開(kāi)通網(wǎng)絡(luò)策略、部署Agent等等,當(dāng)完成后只需要變更節(jié)點(diǎn)狀態(tài),后續(xù)就會(huì)自動(dòng)化修復(fù)

當(dāng)遇到無(wú)法通過(guò)上述自動(dòng)化短時(shí)間來(lái)解決的時(shí)候,運(yùn)行運(yùn)維進(jìn)行手工修復(fù),并強(qiáng)制更新對(duì)應(yīng)的狀態(tài),則系統(tǒng)會(huì)根據(jù)當(dāng)前的狀態(tài)進(jìn)行后續(xù)的操作,比如檢測(cè)到就緒之后就進(jìn)行負(fù)載掛載等

1.2 kubernetes相關(guān)機(jī)制

那如何利用k8s的相關(guān)機(jī)制來(lái)實(shí)現(xiàn)上述交付流程呢,這里主要通道了webhook、finalizer、annotations幾個(gè)機(jī)制

1.2.1 webhook

首先我們通過(guò)webhook再server更新的時(shí)候通過(guò)admission.Mutation機(jī)制來(lái)根據(jù)當(dāng)前內(nèi)部狀態(tài)進(jìn)行狀態(tài)的決策,以確定接下來(lái)的自動(dòng)化任務(wù),在這環(huán)節(jié)我們實(shí)現(xiàn)了從部署環(huán)境-》部署代碼-》就緒狀態(tài)的轉(zhuǎn)換

1.2.2 finalizer

在主機(jī)進(jìn)行刪除的時(shí)候,需要等待負(fù)載刪除、暫停監(jiān)控、刪除虛機(jī)等流程全部結(jié)束后才能進(jìn)行節(jié)點(diǎn)對(duì)象的刪除,從而實(shí)現(xiàn)了節(jié)點(diǎn)信息的異步清理機(jī)制

2. 核心設(shè)計(jì)

2.1 核心對(duì)象設(shè)計(jì)

考慮到應(yīng)用的環(huán)境操作和部署操作兩個(gè)操作頻率的差異性,我們這里參考k8s聲明了兩個(gè)上層控制器,即通過(guò)VMReplicaSet來(lái)實(shí)現(xiàn)程序運(yùn)行環(huán)境的交付,而將部署操作交由VMDeployment來(lái)控制,同時(shí)兩個(gè)控制在操作某個(gè)實(shí)例的時(shí)候都會(huì)先進(jìn)行狀態(tài)檢測(cè),然后在進(jìn)行資源的鎖定才能進(jìn)行相關(guān)的操作,從而保障執(zhí)行流程的穩(wěn)定性

2.2 狀態(tài)轉(zhuǎn)換機(jī)制

下面我們會(huì)按照幾個(gè)不同的場(chǎng)景來(lái)分別介紹下虛機(jī)狀態(tài)的轉(zhuǎn)換以及對(duì)應(yīng)控制器的控制,我們有兩個(gè)核心的設(shè)計(jì)理念:

1.人只負(fù)責(zé)環(huán)境配置的描述,由系統(tǒng)完成相關(guān)狀態(tài)和自動(dòng)化操作

2.狀態(tài)的確定依賴于當(dāng)前現(xiàn)狀,同時(shí)人的決策高于一切

2.2.1 初始化

當(dāng)檢測(cè)副本數(shù)量發(fā)生變化VMReplicaSet首先會(huì)發(fā)送申請(qǐng),確認(rèn)當(dāng)前是否要進(jìn)行機(jī)器的創(chuàng)建,同時(shí)會(huì)創(chuàng)建對(duì)應(yīng)的Server的Package配置,通過(guò)計(jì)算Package狀態(tài)設(shè)置當(dāng)前狀態(tài)為Initializing,并同時(shí)創(chuàng)建部署環(huán)境的任務(wù),然后等待環(huán)境部署的結(jié)果,同時(shí)會(huì)掛載Server的負(fù)載信息

等待環(huán)境部署完成后,控制器會(huì)自動(dòng)檢測(cè)狀態(tài)并設(shè)置為Deploying,同時(shí)通過(guò)部署系統(tǒng)進(jìn)行代碼的部署,并將對(duì)象重新入隊(duì),直到狀態(tài)部署完成

代碼部署完成后,會(huì)進(jìn)行狀態(tài)檢測(cè),如果系統(tǒng)節(jié)點(diǎn)健康檢查通過(guò)并且監(jiān)控狀態(tài)未發(fā)現(xiàn)異常,則會(huì)將節(jié)點(diǎn)設(shè)置為Ready狀態(tài),同時(shí)負(fù)載控制器和監(jiān)控控制器都會(huì)對(duì)應(yīng)的配置,至此完成虛機(jī)的初始化完成,后續(xù)如果環(huán)境不變,則代碼部署只需要重復(fù)當(dāng)前操作

2.2.2 有狀態(tài)的下線

虛機(jī)通常是有狀態(tài)的應(yīng)用,如果要下線通常都是選擇指定的節(jié)點(diǎn),并標(biāo)記為下線狀態(tài),同時(shí)結(jié)合finalizer和控制器完成對(duì)應(yīng)負(fù)載和監(jiān)控的同步操作,當(dāng)所有的finalizer都釋放后,最后進(jìn)行對(duì)應(yīng)節(jié)點(diǎn)的刪除

2.2.3 故障轉(zhuǎn)移機(jī)制

如果對(duì)應(yīng)的節(jié)點(diǎn)宕機(jī),則只需要加一個(gè)處理轉(zhuǎn)換邏輯即可,如果是短時(shí)間可以恢復(fù)就只需要將對(duì)應(yīng)的節(jié)點(diǎn)標(biāo)記為UnKnown,同時(shí)監(jiān)控和負(fù)載控制器進(jìn)行對(duì)應(yīng)的操作,然后等待重啟后接收到對(duì)應(yīng)的事件后將節(jié)點(diǎn)設(shè)置為Initializing, 然后系統(tǒng)會(huì)自動(dòng)進(jìn)行對(duì)應(yīng)的檢測(cè)邏輯,自動(dòng)轉(zhuǎn)換為Ready,監(jiān)控和負(fù)載控制器監(jiān)控自動(dòng)執(zhí)行相關(guān)邏輯,即可完成上線

如果節(jié)點(diǎn)不可修復(fù)只需要將狀態(tài)設(shè)置為下線狀態(tài),然后對(duì)應(yīng)的副本控制器檢測(cè)到節(jié)點(diǎn)不足,就會(huì)自動(dòng)調(diào)用IAAS系統(tǒng)進(jìn)行自動(dòng)創(chuàng)建,然后執(zhí)行初始化流程即可

3. 未完待續(xù)

基于流程驅(qū)動(dòng)的跟基于k8s的控制器在實(shí)現(xiàn)流程上其實(shí)并沒(méi)有本質(zhì)的差別,在云原生里面有很多種玩法,虛機(jī)應(yīng)用的管理本質(zhì)上就是復(fù)雜環(huán)境的管理。

如何管理復(fù)雜的環(huán)境,其實(shí)就是讓環(huán)境可描述,系統(tǒng)自治,盡可能減少人的參與,人只參與影響穩(wěn)定性的決策,而不參與任何關(guān)于流程驅(qū)動(dòng)。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17817

    瀏覽量

    194170
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    499

    瀏覽量

    29206
  • 負(fù)載控制器
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6538
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    267

    瀏覽量

    9505
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Kubernetes存儲(chǔ)管理功能的落地實(shí)踐

    容器本身是無(wú)狀態(tài)的,Pod重啟后容器內(nèi)的數(shù)據(jù)全部丟失。數(shù)據(jù)庫(kù)、消息隊(duì)列、文件存儲(chǔ)這類有狀態(tài)服務(wù)跑在K8s上,必須解決持久化存儲(chǔ)問(wèn)題。Kubernetes通過(guò)PersistentVolume(PV)、PersistentVolumeClaim(PVC)和StorageClass三層抽象來(lái)
    的頭像 發(fā)表于 02-26 14:45 ?240次閱讀

    KubePi:開(kāi)源Kubernetes可視化管理面板,讓集群管理如此簡(jiǎn)單

    KubePi:開(kāi)源Kubernetes可視化管理面板,讓集群管理如此簡(jiǎn)單 在云原生時(shí)代,Kubernetes已成為容器編排的事實(shí)標(biāo)準(zhǔn),但其復(fù)雜性卻讓許多開(kāi)發(fā)者望而卻步。KubePi作
    發(fā)表于 02-11 12:53

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過(guò)調(diào)用Kubernetes API Server實(shí)現(xiàn)對(duì)集群資源的全面管理。在
    的頭像 發(fā)表于 02-02 16:40 ?491次閱讀

    香港服務(wù)器支持Docker和Kubernetes嗎?

    在云原生技術(shù)成為主流的今天,Docker和Kubernetes(K8s)已成為現(xiàn)代化應(yīng)用開(kāi)發(fā)和部署的事實(shí)標(biāo)準(zhǔn)。對(duì)于選擇香港服務(wù)器的開(kāi)發(fā)者與企業(yè)而言,一個(gè)核心問(wèn)題是:香港服務(wù)器能否完美支持Docker
    的頭像 發(fā)表于 10-21 15:47 ?734次閱讀

    跨阻放大器的斷如何分析以及電流的流向?

    理想電流源直接接在運(yùn)放兩端,信號(hào)源兩端是有電壓的,并引入負(fù)反饋,續(xù)短斷仍然成立,那電流豈不是從gnd到gnd,如果能明白這一點(diǎn),我想應(yīng)該明白了反饋和實(shí)際運(yùn)放和理想運(yùn)放的差異。 有兩個(gè)問(wèn)題請(qǐng)教: 1
    發(fā)表于 09-02 22:40

    Kubernetes安全加固的核心技術(shù)

    在生產(chǎn)環(huán)境中,Kubernetes集群的安全性直接關(guān)系到企業(yè)數(shù)據(jù)安全和業(yè)務(wù)穩(wěn)定性。本文將從實(shí)戰(zhàn)角度,帶你掌握K8s安全加固的核心技術(shù)。
    的頭像 發(fā)表于 08-18 11:18 ?867次閱讀

    高效管理Kubernetes集群的實(shí)用技巧

    作為一名經(jīng)驗(yàn)豐富的運(yùn)維工程師,我深知在日常的Kubernetes集群管理中,熟練掌握kubectl命令是提升工作效率的關(guān)鍵。今天,我將分享15個(gè)經(jīng)過(guò)實(shí)戰(zhàn)檢驗(yàn)的kubectl實(shí)用技巧,幫助你像藝術(shù)家一樣優(yōu)雅地管理K8s集群。
    的頭像 發(fā)表于 08-13 15:57 ?1004次閱讀

    生產(chǎn)環(huán)境中Kubernetes容器安全的最佳實(shí)踐

    隨著容器化技術(shù)的快速發(fā)展,Kubernetes已成為企業(yè)級(jí)容器編排的首選平臺(tái)。然而,在享受Kubernetes帶來(lái)的便利性和可擴(kuò)展性的同時(shí),安全問(wèn)題也日益凸顯。本文將從運(yùn)維工程師的角度,深入探討生產(chǎn)環(huán)境中Kubernetes容器
    的頭像 發(fā)表于 07-14 11:09 ?793次閱讀

    樹(shù)莓派部署 Kubernetes:通過(guò) UDM Pro 實(shí)現(xiàn) BGP 負(fù)載均衡!

    。使用Cloudfleet等允許遠(yuǎn)程本地節(jié)點(diǎn)的托管Kubernetes服務(wù),可以卸載這一責(zé)任。這種方法讓樹(shù)莓派能夠?qū)⑵滟Y源專門(mén)用于運(yùn)行工作負(fù)載,而不是消耗CPU和內(nèi)存來(lái)處理控制平面任務(wù)
    的頭像 發(fā)表于 06-25 18:00 ?992次閱讀
    樹(shù)莓派部署 <b class='flag-5'>Kubernetes</b>:通過(guò) UDM Pro 實(shí)現(xiàn) BGP 負(fù)載均衡!

    詳解Kubernetes中的Pod調(diào)度親和性

    Kubernetes(K8s)中,Pod 調(diào)度親和性(Affinity) 是一種高級(jí)調(diào)度策略,用于控制 Pod 與節(jié)點(diǎn)(Node)或其他 Pod 之間的關(guān)聯(lián)(親和)或反關(guān)聯(lián)(反親和)關(guān)系。通過(guò)親和性規(guī)則,管理員可以更精細(xì)地控制 Pod 的調(diào)度行為,滿足業(yè)務(wù)的拓?fù)浼s束、
    的頭像 發(fā)表于 06-07 13:56 ?997次閱讀

    什么是運(yùn)放的短和

    在設(shè)計(jì)運(yùn)放電路的時(shí)候我們經(jīng)常會(huì)接觸到兩個(gè)詞,短和斷,今天就來(lái)和大家分享下什么是運(yùn)放的虛短和斷。我們?cè)O(shè)運(yùn)放的同相端電壓為up,電流為ip,反相端電壓是un,電流為in。在說(shuō)短和
    的頭像 發(fā)表于 05-16 19:33 ?2090次閱讀
    什么是運(yùn)放的<b class='flag-5'>虛</b>短和<b class='flag-5'>虛</b>斷

    Kubernetes Helm入門(mén)指南

    Helm 是 Kubernetes 的包管理工具,它允許開(kāi)發(fā)者和系統(tǒng)管理員通過(guò)定義、打包和部署應(yīng)用程序來(lái)簡(jiǎn)化 Kubernetes 應(yīng)用的管理
    的頭像 發(fā)表于 04-30 13:42 ?3130次閱讀
    <b class='flag-5'>Kubernetes</b> Helm入門(mén)指南

    PCBA焊不再愁,診斷返修技巧全掌握

    在電子制造領(lǐng)域,PCBA(Printed Circuit Board Assembly)的質(zhì)量至關(guān)重要,而焊問(wèn)題卻常常困擾著工程師們。焊會(huì)導(dǎo)致電子產(chǎn)品性能不穩(wěn)定,甚至出現(xiàn)故障。今天,我們就來(lái)
    的頭像 發(fā)表于 04-12 17:53 ?1390次閱讀

    連接器焊接后引腳焊要怎么處理?

    焊接是連接電子元器件與PCB(印刷電路板)的關(guān)鍵步驟,焊接過(guò)程中可能會(huì)出現(xiàn)焊問(wèn)題,即焊點(diǎn)未能形成良好的電氣和機(jī)械連接。焊會(huì)導(dǎo)致電路接觸不良、信號(hào)傳輸不穩(wěn)定,甚至設(shè)備無(wú)法正常工作。本期蓬生電子唐工將帶大家探討連接器焊接后引腳
    的頭像 發(fā)表于 04-08 11:51 ?3940次閱讀
    連接器焊接后引腳<b class='flag-5'>虛</b>焊要怎么處理?

    TECS OpenStack資源池機(jī)寫(xiě)磁盤(pán)時(shí)延高告警的問(wèn)題處理

    某運(yùn)營(yíng)商TECS資源池,在當(dāng)前告警中顯示“機(jī)寫(xiě)磁盤(pán)時(shí)延高告警”,如下圖所示。告警統(tǒng)計(jì)總體平均10分鐘左右自動(dòng)恢復(fù)。
    的頭像 發(fā)表于 03-21 09:36 ?1059次閱讀
    TECS OpenStack資源池<b class='flag-5'>虛</b><b class='flag-5'>機(jī)</b>寫(xiě)磁盤(pán)時(shí)延高告警的問(wèn)題處理