国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

構(gòu)建 Kubernetes Operator 的原則是什么?

這篇具有很好參考價值的文章主要介紹了構(gòu)建 Kubernetes Operator 的原則是什么?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Kubernetes(簡稱K8s)上數(shù)據(jù)服務(wù)的自動化越來越受歡迎。在K8s上運行有狀態(tài)的工作負載意味著使用Operator。然而,它發(fā)展演化到今天已經(jīng)變得非常復(fù)雜,像Operator這樣的應(yīng)用模式和擴展方式對于開發(fā)者與運維者而言愈發(fā)受到歡迎。
構(gòu)建 Kubernetes Operator 的原則是什么?
但工程師們經(jīng)常對編寫K8s Operator的復(fù)雜性感到吃力,這會影響到最終用戶。據(jù)《2021年K8s數(shù)據(jù)報告》指出,K8s Operator的質(zhì)量阻礙了公司進一步擴大K8s占有率。

Anynines首席執(zhí)行官Julian Fischer已經(jīng)構(gòu)建自動化工具近十年了,他非常了解在處理在云原生平臺和K8s等分布式基礎(chǔ)設(shè)施上做狀態(tài)管理的復(fù)雜性。

Julian首先分享了在構(gòu)建 Operator時應(yīng)該遵循的方法,他稱之為運營模式,分為四個部分:

第1級:SysOp或DB要做什么

第2級:容器化,YAML + kubectl

第3級:編寫 Operator

第4級: Operator 生命周期管理

通過他的分享,可以了解數(shù)據(jù)服務(wù)自動化中的常見陷阱以及如何避免,進而從技術(shù)和方法學(xué)角度編寫更好的K8s Operator。

數(shù)據(jù)服務(wù)自動化

它在數(shù)據(jù)服務(wù)自動化的一般主題和K8s之間有點跳躍。一般來說,如果你談?wù)摂?shù)據(jù)服務(wù)自動化,你必須做的第一件事就是明確范圍,即你所說的數(shù)據(jù)服務(wù)自動化真正指什么。對于我們來說,任何時候都有一個使命,那就是將各種數(shù)據(jù)服務(wù)的整個生命周期完全自動化,以便在跨基礎(chǔ)設(shè)施的云原生平臺上大規(guī)模運行。
構(gòu)建 Kubernetes Operator 的原則是什么?
這里不是一些營銷噱頭,它是如何對數(shù)據(jù)服務(wù)自動化進行范圍分析的一個例子。例如,為了使多個數(shù)據(jù)服務(wù)自動化,你希望看到某些共享效果,比如你可以將Operatar SDK以外的數(shù)據(jù)服務(wù)納入自動化框架。因此,任務(wù)的背景會產(chǎn)生很大影響。例如,一個簡單的K8s集群,有一個小單位用來運行他們的應(yīng)用程序。假設(shè)使用Postgres數(shù)據(jù)庫,Postgres一直是我最喜歡的例子。大家都知道,一個K8s集群對應(yīng)一個Operator一個服務(wù)實例,應(yīng)用程序?qū)⑦B接到那個數(shù)據(jù)庫。這與我們今天想在這里談?wù)摰墓适虏煌<僭O(shè)他們按需配置服務(wù)實例,Postgres數(shù)據(jù)庫被表示為有狀態(tài)集。Operator允許你創(chuàng)建多個實例。事情就會變得復(fù)雜,因為你有更多的數(shù)據(jù)服務(wù)實例,你必須處理好它。如果你隨后引入更多數(shù)據(jù)服務(wù),例如,將RabbitMQ、MongoDB或任何其他數(shù)據(jù)庫添加到Operator的集合中,挑戰(zhàn)將變得更加大。

現(xiàn)在我們協(xié)作的組織中,有時有數(shù)百或數(shù)千名員工,有數(shù)千名甚至一萬名開發(fā)人員,令人難以置信的是,他們擁有數(shù)量龐大的工程師,也同時擁有許多K8s集群。我們認為,數(shù)以十計、數(shù)以百計的K8s集群對我們的經(jīng)驗是個考驗。例如,在基于虛擬機的數(shù)據(jù)服務(wù)自動化中,它們通常有上千臺虛擬機運行上千個服務(wù)實例,這取決于它們?nèi)绾谓M建集群。你可以假設(shè)有一個服務(wù)實例對應(yīng)三個pod,恰好正在運行這樣一個小集群實例。在現(xiàn)有這個規(guī)模上,自動化的需求經(jīng)常變更,對規(guī)模的影響很大。

如果你解決了制作“香腸”和分發(fā)“香腸”等簡單任務(wù),你可以想象,如果你要服務(wù)更大規(guī)模的用戶,堆棧技術(shù)解決方案要進行調(diào)整。數(shù)據(jù)服務(wù)自動化也幾乎一樣。因此,如果我們考慮那些大型應(yīng)用場景,擁有很多這樣的服務(wù)實例,每個數(shù)據(jù)服務(wù)實例對某些用戶都很重要。因此,自動化需要符合一定的標(biāo)準(zhǔn)。如果該標(biāo)準(zhǔn)沒有達到自動化水平,那么自動化將用不起來,組織和技術(shù)的采用就不會發(fā)生。

使用K8s的數(shù)據(jù)服務(wù)

那么如何使用K8s的數(shù)據(jù)服務(wù)?首先,你如何實現(xiàn)一個Operator,如我認為社區(qū)應(yīng)該知道的那樣?最簡單的方法是使用K8s、CRD和自定義資源定義,傳輸給K8s新的數(shù)據(jù)結(jié)構(gòu)。例如,在描述你的Postgres實例時,要創(chuàng)建一個復(fù)數(shù)的Postgres實例,因為我們是按需配置,有一個控制器負責(zé)管理實例。該控制器將按你指定的對象的規(guī)范,將其轉(zhuǎn)換為可運行的程序。因此,基本上,Operator所做的是將具有Postgres 12.2版本的主對象(如Postgres實例)的規(guī)范轉(zhuǎn)換為輔助資源。據(jù)我所知,Operator SDK是構(gòu)建CRD、生成CRD并為控制器提供模板代碼的主流工具。這是討論K8s相關(guān)的數(shù)據(jù)服務(wù)自動化時,我們想到了這兩件事。同時,還有KUDO。
構(gòu)建 Kubernetes Operator 的原則是什么?
在開發(fā)階段,如果你開發(fā)了一個Operator,挑戰(zhàn)之一是你想如何系統(tǒng)地處理這項工作。有一個簡單的模型,我們稱之為操作模型,分為四個級別,這有助于你處理數(shù)據(jù)服務(wù)自動化,這是第一次提出。

給一點建設(shè)性的意見,要把你的注意力放在任務(wù)上。例如,我們建議在第一級實現(xiàn)Postgres的自動化。你需要掌握的第一件事是助理或者DBA要做什么。特別是,這對應(yīng)用程序開發(fā)人員有什么影響?他們到底想要什么?

例如,應(yīng)用程序開發(fā)人員對Postgres的平均期望是什么?他們需要自動故障轉(zhuǎn)移的集群實例嗎?在這種情況下,他們更喜歡同步復(fù)制還是異步復(fù)制?你想使用哪種故障轉(zhuǎn)移和集群管理器,還是使用首選倉庫管理器,或者更確切地說,使用Prometheus(普羅米修斯)?

而且,基本上你要搞清楚如何配置文件,對Postgres完成基本設(shè)置,這是操作模型一級。只需假設(shè)你有一臺虛擬機,你可以做任何你想做的事情,安裝軟件包,配置數(shù)據(jù)庫等等。因此,一旦你這樣做了,你知道配置文件應(yīng)該是什么樣子,所有的這些都是Operator可以做到的。你可以考慮容器化,它可以選擇現(xiàn)有的容器映像,并將其組裝到有狀態(tài)集服務(wù)的K8s規(guī)范中,并創(chuàng)建自有的模板,這是操作模型二級中的YAML部分。因此,在操作模型二級的最終操作中,無論你是選擇了現(xiàn)有的容器映像還是自己創(chuàng)建了它們,你都有K8s規(guī)范,可以與kubectl一起使用,以手動創(chuàng)建自己的服務(wù)實例。一旦你這樣做了,你基本上可以創(chuàng)建你的Postgres實例,比如說,用三個副本和同步流復(fù)制,假定你已經(jīng)知道如何手動做到這一點,然后你可以通過思考問題,如何編寫gde,創(chuàng)建特定的有狀態(tài)設(shè)置的無頭服務(wù)來處理特定的保密數(shù)據(jù),你可以更容易地實現(xiàn)這樣的一個Operator。

現(xiàn)在,假設(shè)我們提醒自己,我們正在談?wù)摰沫h(huán)境可能包含1000多個數(shù)據(jù)服務(wù)實例,跨越許多K8s集群的多個數(shù)據(jù)服務(wù)。在這種情況下,我們還需要接受Operator生命周期管理本身是我們工具鏈的重要組成部分。因此,我們還需要自動化來管理Operator本身的生命周期。

無論是Operator生命周期管理器,還是其他技術(shù)在這一點上都無關(guān)緊要,最重要的是你需要知道,這是你整體數(shù)據(jù)服務(wù)自動化挑戰(zhàn)的一部分?,F(xiàn)在,如果你想到K8s Operator,并且提到自定義資源定義,像這樣的YAML結(jié)構(gòu)描述了一種可以傳遞給K8s API的新數(shù)據(jù)類型,然后K8s API將向你提供節(jié)點,并持久地將規(guī)范存儲在etcd中。這里格式不是很好。但你可以在這里看到特定資源定義的自定義資源會是什么樣子,我們教K8s如何創(chuàng)建這樣的對象。

然而,僅憑你的CRD不會有任何效果,因為你需要控制器,控制器通過代碼實現(xiàn)事件觀測,例如創(chuàng)建了一個對象。然后,控制器可以確認這個特定的服務(wù)實例是否已經(jīng)存在,確認輔助資源,需要一個服務(wù)密鑰訪問,以及需要創(chuàng)建的有狀態(tài)集。因此,正如我之前所說,K8s控制器基本上將主要資源轉(zhuǎn)換為次要資源的組合。在我們的示例中,到目前為止,這些資源一直是K8s的內(nèi)部資源,但實際情況不一定如此。我們稍后再討論。

如果你還想在那里開始編寫Operator,Operator SDK會就Operator的成熟度級別提出建議,Operator分為五個不同的等級。我真的不確定你們是否都了解這些等級的區(qū)別。但如果從現(xiàn)在開始,這絕對是一個好的開端。學(xué)會正確提問,這些問題也在文檔中。如果你真的構(gòu)建Operator,你需要用到一些核心功能,例如在沒有備份的情況下更新補丁,以及備份和恢復(fù)功能。通常這些是必備的,但用戶可能會拒絕解決方案,或者他們沒有解決方案。但你知道,你早晚要這么做,因此這會對你有所幫助。所以請記住,常見的陷阱,由分布式系統(tǒng)的編程問題引起的Bug,會有很多個,就看我們排除多少。
構(gòu)建 Kubernetes Operator 的原則是什么?
例如企業(yè)使用Git引發(fā)的問題。根據(jù)我的經(jīng)驗,總的來說,數(shù)據(jù)服務(wù)自動化最有可能的最大問題是,人們低估了實現(xiàn)數(shù)據(jù)服務(wù)自動化的復(fù)雜性和所需努力,表現(xiàn)形式包括基本生命周期操作的覆蓋范圍不足,以及魯棒性和可觀察性等質(zhì)量特性較低。基于這點來說,了解使用的門檻是有必要的,你需要知道,自動化要做什么才能被目標(biāo)受眾接受。雖然這在很大程度上取決于目標(biāo)受眾本身,但現(xiàn)在我可以分享一些我學(xué)到的對我們大客戶很重要的事情,但說不完,因為現(xiàn)在時間不夠多了,這有點耗時。

接受配置更新很重要,因為應(yīng)用程序開發(fā)人員能夠通過自動化配置來使用數(shù)據(jù)庫和應(yīng)用程序。如果應(yīng)用程序有特殊要求,你需要稍微調(diào)整一下數(shù)據(jù)庫配置。這是真實的需求,要盡可能地利用資源。因此,你需要采訪目標(biāo)受眾,并了解這些配置選項是否已經(jīng)在自動化文檔中。你需要善于根據(jù)特定需求調(diào)整自動化。如果你知道組織內(nèi)有更多的開發(fā)人員,所有的云原生需求都在那里,比如,友好的可觀測性,透明使用基礎(chǔ)設(shè)施。有了K8s,在某種程度上你已經(jīng)獲得了。但在備份的上下文中,當(dāng)你需要將備份存儲在某個地方時,你通常必須將備份寫入對象存儲。這就是人們對S3 API的存在做出假設(shè)的地方,例如,你應(yīng)該選擇一些隱藏底層對象存儲的抽象庫。

服務(wù)實例的水平可擴展性

例如,你需要一個服務(wù)實例,你可以考慮單個Postgres用一個pod,也可以考慮集群Postgres使用異步流復(fù)制。一旦你想進行水平擴展,將副本從一個擴展到三個,就會在自動化中引入許多復(fù)雜性。因為Postgres不是那么簡單做自動化服務(wù),這讓人喜歡用它舉例。因此,你需要添加一個集群管理器來進行故障檢測,你需要有一個主節(jié)點選舉和主節(jié)點晉升邏輯來幫助你實現(xiàn)。

此外,如果你恰好有多個可用區(qū)域的數(shù)據(jù)中心,可以分發(fā)你的pod來使用它們,這樣不會出現(xiàn)單個K8s節(jié)點。只要是可用區(qū)域,并建立了K8s集群,那么幾乎會100%這樣使用。一般來說,在整個生命周期中會重建狀態(tài)集很多次,比如計劃、切換、升級,或者垂直擴展使pod變大,數(shù)據(jù)被合并。我們將再次討論備份和恢復(fù)的問題,這顯然非常重要,因為應(yīng)用程序開發(fā)人員無需等待平臺運營商的手動干預(yù)即可恢復(fù)應(yīng)用程序,這通常是最后的措施。

因此,這一切都與按需自助服務(wù)有關(guān),到目前為止,應(yīng)用程序開發(fā)人員可以自助服務(wù),創(chuàng)建服務(wù)實例,然后修改它們,重新配置它們,如果服務(wù)實例碰巧出現(xiàn)異常,或者數(shù)據(jù)被意外刪除,他們需要按應(yīng)用程序的要求恢復(fù)數(shù)據(jù),防止?jié)撛跀?shù)據(jù)丟失。

有一個需求不太明顯,有時要提供最新的數(shù)據(jù)服務(wù)版本。假設(shè)Postgres的最新版本是不錯的,活躍用戶自然會喜歡。但對于某個組織來說,有些應(yīng)用程序可能處于長期維護狀態(tài),它們不會立即使用新版本,因此,應(yīng)用程序開發(fā)人員需要能夠選擇數(shù)據(jù)服務(wù)版本,可以使用版本號管理Operator,以支持所有自動化版本的啟用和退出。這是你必須為自動化制定的政策。如果你提供太多的版本,這也會給團隊提供很多的支持。但是,文檔也可能會減少對你的支持。

安全性也很重要,通常要求具備加密存儲、傳輸加密。例如,你希望被加密的磁盤上的數(shù)據(jù)沒有被讀取使用,從客戶端發(fā)送到數(shù)據(jù)服務(wù)實例的數(shù)據(jù)也是如此,有狀態(tài)集中的端口都應(yīng)該加密。文章來源地址http://www.zghlxwxcb.cn/news/detail-435015.html

到了這里,關(guān)于構(gòu)建 Kubernetes Operator 的原則是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【flink進階】-- Flink kubernetes operator 版本升級

    目錄 1、檢查當(dāng)前 flink kubernetes operator 版本 ?2、停止生產(chǎn)上正在運行的 flink job 3、升級 CRD

    2024年02月07日
    瀏覽(22)
  • 【Flink進階】-- 本地部署 Flink kubernetes operator

    目錄 1.說明 1.1 版本 1.2 kubernetes 環(huán)境 1.3 參考 2.安裝步驟 2.1 安裝本地 kubernetes 環(huán)境

    2024年02月10日
    瀏覽(10)
  • kubernetes基于helm部署gitlab-operator

    kubernetes基于helm部署gitlab-operator

    這篇博文介紹如何在 Kubernetes 中使用helm部署 GitLab-operator。 先決條件 已運行的 Kubernetes 集群 負載均衡器,為ingress-nginx控制器提供EXTERNAL-IP,本示例使用metallb 默認存儲類,為gitlab pods提供持久化存儲,本示例使用openebs cert-manager,為gitlab提供自簽名證書 項目地址:https://gitl

    2024年02月14日
    瀏覽(54)
  • Kubernetes operator(一)client-go篇【更新中】

    Kubernetes operator(一)client-go篇【更新中】

    云原生學(xué)習(xí)路線導(dǎo)航頁(持續(xù)更新中) 本文是 Kubernetes operator學(xué)習(xí) 系列第一篇,主要對client-go進行學(xué)習(xí),從源碼閱讀角度,學(xué)習(xí)client-go各個組件的實現(xiàn)原理、如何協(xié)同工作等 參考視頻:Bilibili 2022年最新k8s編程operator篇,UP主:白丁云原生 本文參考資料 https://pan.baidu.com/s/1Bi

    2024年01月24日
    瀏覽(18)
  • 云原生|詳解Kubernetes Operator在項目中的開發(fā)應(yīng)用

    云原生|詳解Kubernetes Operator在項目中的開發(fā)應(yīng)用

    目錄 一、使用場景 (一)client-go中處理邏輯 (二)controller-runtime中處理邏輯 二、使用controller-runtime開發(fā)operator項目 (一)生成框架代碼 (二)定義crd字段 (三)生成crd文件 (四)初始化manager (五)配置controller (六)配置webhook controller-runtime是基于kubernetes控制器模式衍

    2024年02月04日
    瀏覽(18)
  • Flink on Kubernetes (flink-operator) 部署Flink

    Flink on Kubernetes (flink-operator) 部署Flink

    https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.1/docs/try-flink-kubernetes-operator/quick-start/ 我的部署腳本和官網(wǎng)不一樣,有些地方官網(wǎng)不夠詳細 注意,按照默認配置至少有兩臺worker https://helm.sh/zh/docs/intro/install/ 安裝完成后,資源如下 此時k8s集群就可以支持我們按照fli

    2024年04月14日
    瀏覽(17)
  • Kubernetes 架構(gòu)原則和對象設(shè)計

    云計算平臺的分類? 以O(shè)penstack為典型的虛擬化平臺 虛擬機構(gòu)建和業(yè)務(wù)代碼部署分離。 可變的基礎(chǔ)架構(gòu)使后續(xù)維護風(fēng)險變大。 以谷歌borg為典型的基于進程的作業(yè)調(diào)度平臺 技術(shù)的迭代引發(fā)borg的換代需求。 早期的隔離依靠chrootjail實現(xiàn),一些不合理的設(shè)計需要在新產(chǎn)品中改進。

    2024年02月06日
    瀏覽(17)
  • k3s x GitLab Runner Operator,GitLab CI 云原生構(gòu)建新體驗

    k3s x GitLab Runner Operator,GitLab CI 云原生構(gòu)建新體驗

    GitLab CI 是非常常用的一款 CI/CD 工具,只需要在 .gitlab-ci.yml?文件中用 YAML 語法編寫 CI/CD 流水線即可。而 GitLab CI 能夠運行的關(guān)鍵組件是 GitLab Runner。GitLab Runner 是一個輕量級、高擴展的代理,主要用來執(zhí)行 GitLab CI/CD 流水線中的 Job,然后將 Job 的執(zhí)行結(jié)果返回 GitLab 實例。 Gi

    2024年01月21日
    瀏覽(18)
  • 為Android構(gòu)建現(xiàn)代應(yīng)用——設(shè)計原則

    為Android構(gòu)建現(xiàn)代應(yīng)用——設(shè)計原則

    為Android構(gòu)建現(xiàn)代應(yīng)用——設(shè)計原則 - 掘金? ? ? state”是聲明性觀點的核心 在通過Compose或SwiftUI等框架設(shè)計聲明性視圖時,我們必須明確的第一個范式是State(狀態(tài))。UI組件結(jié)合了它的圖形表示(View)和它的State(狀態(tài))。UI組件中發(fā)生變化的任何屬性或數(shù)據(jù)都可以表示為狀態(tài)。例如

    2024年02月16日
    瀏覽(22)
  • 企業(yè)中臺建設(shè)的關(guān)鍵思維與構(gòu)建原則

    ???? 中臺建設(shè)是一個復(fù)雜且持續(xù)迭代的過程。結(jié)合用戶數(shù)字中臺項目的實踐,我們總結(jié)出中臺建設(shè)過程中企業(yè)管理者應(yīng)該明確的3個關(guān)鍵思維。 ?? 思維1:中臺一定需要技術(shù)平臺的支撐 ??????????? 沒有一個相對完整的技術(shù)平臺是很難把中臺架構(gòu)搭建起來的,企業(yè)在構(gòu)

    2024年02月13日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包