翻譯 | Kubernetes Operator 對資料庫的重要性

来源:https://www.cnblogs.com/radondb/archive/2022/08/23/16616503.html
-Advertisement-
Play Games

作者:Stephen Thorn 翻譯:劉玲玲 原文:https://www.percona.com/blog/2020/10/08/the-criticality-of-a-kubernetes-operator-for-databases/ 一些剛接觸 Kubernetes 的公司嘗試使用傳統環 ...


作者:Stephen Thorn

翻譯:劉玲玲

原文:https://www.percona.com/blog/2020/10/08/the-criticality-of-a-kubernetes-operator-for-databases/

一些剛接觸 Kubernetes 的公司嘗試使用傳統環境中運行資料庫的方法在 Kubernetes 中運行資料庫。但是,不建議這樣做。因為這可能會導致數據丟失,並且也不建議這樣管理生產工作負載。為什麼這樣做很危險?又如何解決這個問題?

適合 Kubernetes 的工作負載

在考慮將資料庫遷移到 Kubernetes 之前,請確保應用程式的其餘部分是雲原生的,並可以使用 Kubernetes。如果您已經開始對資料庫進行垂直彈性伸縮和水平彈性伸縮,並需要編排資料庫來控製成本,將其遷移至 Kubernetes 上就是個不錯的選擇。

將資料庫工作負載轉移到 Kubernetes 上有兩個理想的使用場景:微服務和統一抽象層。‍

龐大的單一數據集可能會阻礙發揮 Kubernetes 的一些優點:自修複和高可用性。這可能是一個問題,因為在加入資料庫集群時,需要耗費時間將數據物理傳輸到新 Pod 實例上。如果數據集太大,由於物理限制,這個過程會很慢,並影響性能和資料庫的可用性。而微服務就非常合適,因為它的數據集相對較小,使得 Kubernetes 能很好地進行自動化處理。

希望充分利用雲原生應用程式和資料庫的公司也非常適合 Kubernetes。如果想利用統一抽象層在任何地方部署和運行資料庫,Kubernetes 是一個很好的選擇。可以將資料庫移動到任何運行著 Kubernetes 的地方。

我們對大型非分片數據集以及 Kubernetes 在處理這些數據集時的局限性進行了討論,但我們還應該看看什麼樣的工作負載更適合傳統平臺。對吞吐量比較敏感的應用程式在 Kubernetes 上表現可能沒有那麼好,或者不是很划算。Kubernetes 基本是為容器編排而設計的,而不是為需要極低延遲的高性能資料庫而設計的。也許這能夠實現,但代價是什麼呢?對於高性能的分散式資料庫也同樣如此。

如何看待 Pod?

Pets 和 Cattle 是 DevOps 中的一對概念。Pets 表示在出現問題時需要關註單個伺服器的部署方式,Cattle 表示在出現問題時用副本替換伺服器的能力。在 Kubernetes 的運作方式中,當出現應用程式無法控制的因素時,可以在任何時候銷毀、創建或移動 Pod。Kubernetes 使用一個調度程式(scheduler),它可以銷毀和重建 Pod,以滿足您的 Kubernetes 集群配置需求。

這對於無狀態應用程式非常有用,因為應用程式中的任何失敗都將導致包含應用程式的 Pod 被銷毀和重新創建,而不需要人工交互,並極大地加快了問題的解決。這對於資料庫來說並不理想,因為我們不希望資料庫突然停止工作,並造成數據丟失或損壞。Kubernetes 可以使用 StatefulSet 提供持久標識符來幫助解決這個問題。這有利於管理有狀態工作負載,但是要如何發揮高可用性和利用 Kubernetes 的自動化優勢呢?

如何看待資料庫?

從設計上講,資料庫需要保持其身份、信息,最重要的是,數據在任何時候都是安全和可訪問的。資料庫是應用程式的支柱,因為它們是應用程式正常運行所依賴的真實數據來源。資料庫操作中的任何錯誤都將迅速導致應用程式無法運行。簡單來說,資料庫很重要。

我們如何在 Kubernetes 中安全地運行資料庫,並確保資料庫部署是高可用的?

通過使用 StatefulSet 和持久捲(Persistent Volume),可以保持數據的完整性,但是我們還需要另外的工具來承擔資料庫管理任務,例如確保故障轉移、恢複數據庫成員、重新加入高可用架構以及其他特定技術功能。幸運的是,Kubernetes 是可擴展的,並且擁有 Operator,用於自動執行管理服務的關鍵任務。

自動化,自動化,自動化

我們瞭解了在 Kubernetes 中安全運行資料庫的複雜性,以及一些用來幫助彌合自動化和傳統人工在功能之間差距的概念。在一些資料庫 Operator 的幫助下,我們可以按照預期的方式安全地運行資料庫。這些 Operator 能夠將一些通常由資料庫管理員完成的任務自動化執行,例如:

  • 自動部署,嚴格的一致性,無單點故障
  • 自動伸縮,通過更改 size 參數添加或刪除集群或 ReplicaSet 成員
  • 自動備份和恢復
  • 自動修複,從單個集群或 ReplicaSet 成員的故障中自動恢復
  • 自動管理密碼輪換系統用戶
  • 簡化更新

總結

由於運行資料庫環境的複雜性和對高可用的要求,以及動態 Kubernetes 環境帶來的風險,強烈建議在 Kubernetes 中部署資料庫時,使用 Operator 來實現。

歡迎使用 RadonDB MySQL Kubernetes 一款高可用 MySQL 集群 Operator!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前言 在上一篇隨筆中,我向大家介紹瞭如何製作自己的 nuget 包,並沒有向大家介紹如何發佈製作好的包,今天就繼續向大家介紹如何搭建一個簡易的 nuget 私有倉庫,並上傳自己的包以供內部使用。 老規矩,今天介紹的還是在Windows系統下進行的操作,Linux系統下也可以使用 nexus 來搭 ...
  • 來瞧瞧,WPF 炫酷走馬燈! 控制項名:SpotLight 作者:WPFDevelopersOrg 原文鏈接: https://github.com/WPFDevelopersOrg/WPFDevelopers 框架使用大於等於.NET40; Visual Studio 2022; 項目使用 MIT ...
  • 一:背景 這篇我們來聊一下 PerfView 在協助 WinDbg 分析 Dump 過程中的兩個超實用技巧,可能會幫助我們快速定位最後的問題,主要有如下兩塊: 洞察記憶體泄漏中的靜態大集合變數名。 驗證當前程式的 GC 模式。 這裡就把經驗分享一下,希望讓大家少走彎路。 二:如何洞察 1. 查看靜態變 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是IAR下調試信息輸出機制之半主機(Semihosting)。 在嵌入式世界里,輸出列印信息是一種非常常用的輔助調試手段,藉助列印信息,我們可以比較容易地定位和分析程式問題。在嵌入式應用設計里實現列印信息輸出的方式有很多,本系列將以 IA ...
  • 原文鏈接:https://www.zhoubotong.site/post/76.html 最近發現一個文檔類網站,編寫教程很合適,特地查了一下叫Read the Docs ,可以使用 Sphinx 生成文檔,GitHub 托管文檔,然後導入到 ReadtheDocs進行展示,這裡順便記錄一下搭建過 ...
  • 目錄 gun組織 項目 Linux版本 指令下達和執行 如何關機 linux Base gun組織 項目 copyleft:代表無版權。 copyright:代表有版權 opensource:開放源代碼、軟體誰都可以使用、誰都可以傳播、都可二次開發 free:免費 GPL:通用許可證協議,如果軟體打 ...
  • shell前言 什麼是shell shell-‘殼’ 命令解釋器,一種應用程式 shell語言特點 SHELL語言是指UNIX操作系統的命令語言,同時又是該命令語言的解釋程式的簡稱。 Shell本身是一個用C語言編寫的程式,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完 ...
  • 操作系統的”進程”很早就出現了,許多教科書上定義這個概念總是晦澀難懂。電腦技術發展太快了,簡單的概念經過無數次演化,也會變得複雜。我們追溯一下操作系統的發展歷史,就能理解進程解決了什麼問題、為什麼這樣設計。進程是獨立功能的程式的一次動態執行過程,也是系統資源分配的獨立實體。每個進程都擁有獨立的地址... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...