中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Kubernetes中怎么運行數據庫服務

發布時間:2021-08-10 15:46:38 來源:億速云 閱讀:152 作者:Leah 欄目:數據庫

今天就跟大家聊聊有關Kubernetes中怎么運行數據庫服務,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1.為何在 Kubernetes 上部署有狀態應用比較困難?

我們能不能在 Pod  模板上附加一個卷?這難道還不夠嗎?從理論上講,你的應用現在就可以寫入磁盤,但如果容器重啟或移動到另一個節點的話,那么這個卷將會被重新附加到容器的新位置。

對于簡單的案例來說,確實如此。但是對于 Elasticsearch、etcd、Consul 等服務來說,情況就要復雜得多了。

這些服務有一些常規 Kubernetes 部署控制器無法滿足的要求。

例如,你可能需要為每個 Pod 提供可預測的 DNS 名稱,以便使初始集群形成更加容易。或者,你部署的系統,可能需要確保 Pod  將按某種預定義的順序來啟動容器。

此外,你還可能希望為每個 Pod 創建并附加單獨的卷,這些卷將在整個 Pod 的生命周期中與其綁定。對于常規  Pod,你只能附加一個卷,這個卷將在同一部署創建的所有 Pod 之間共享。

我們也沒有提到如何操作數據庫。你還需要確保制定一個計劃,確定何時以及如何執行備份,或者在發生錯誤時如何執行恢復 / 故障轉移。

2.運行有狀態應用的可用選項

以下是一些關于如何在 Kubernetes 上部署數據庫的幾個選項。

(1)StatefulSet

StatefulSet,是一個內置的控制器(譯者注:原稱 PetSet,首次出現在 Kubernetes 1.4,后在 1.5 更名為  StatefulSet),本質上類似于 Kubernetes 的部署。

最終,它將基于你將指定的 Pod 模板創建和管理一組 Pod。

主要區別在于,它為底層應用提供了以下保證:

  • 每個 Pod 都有一個穩定、唯一的網絡標識符。

  • 每個 Pod 可能有一個穩定的、持久的存儲卷。

  • 部署、擴展或終止都將是有序而優雅地執行。

下面是一些使用 StatefulSet 的開源數據庫部署實現的示例:

  • Kubernetes Elasticsearch Cluster,作者:Paulo Pires

https://github.com/pires/kubernetes-elasticsearch-cluster/tree/master/stateful

  • Consul on Kubernetes,作者:Kelsey Hightower

https://github.com/kelseyhightower/consul-on-kubernetes

StatefulSet 是通用的,因此你可以使用它們來對數據庫的約束聚簇構造(unique cluster formation)或主 /  從架構進行建模。

然而,最終的結果將在操作方面有所欠缺。你將需要添加其他資源或自動化,以確保能夠執行定期備份或添加處理諸如故障轉移等邊緣情況的腳本。

最終,使用 StatefulSet 為更復雜的有狀態服務建模可能會有點笨拙的感覺,并且還不是 Kubernetes  原生的,而且,如上所述,它還將缺乏管理自動化。這就是 Operator 發揮作用之處:

StatefulSet 是 Kubernetes 提供的管理有狀態應用的負載管理控制器 API。在 Pod 管理的基礎上,保證 Pod 的順序和一致性。與  Deployment 一樣,StatefulSet 也是使用容器的 Spec 來創建 Pod,與之不同 StatefulSet 創建的 Pod  在生命周期中會保持持久的標記(例如 Pod Name)。簡單地說,StatefulSet 是一個給 Pod  提供唯一標志的控制器,它可以保證部署和擴展的順序。

(2)Operator

如果你決定在 Kubernetes 上運行數據的原因之一,是為了統一所有應用程序組件的管理,那么 Operator 可能會提供你想要擁有的體驗!

與其將應用程序放入 StatefulSet 模型中,不如編寫(或者使用其他人的)自定義控制器。

作為用戶,這允許你使用 Kubectl CLI 來控制有狀態應用,將其作為本地 Kubernetes 資源。例如,如果你部署了 etcd  Operator,那么可以使用下面的 kubectl 命令檢查集群的備份狀態:

kubectl get EtcdBackup example-etcd-cluster

與 StatefulSet 相比,Operator 的主要優勢在于,它們添加了一個自動化層,該層對于其操作的有狀態應用是獨有的。你無需擔心如何在  Elasticsearch 集群中添加備份 cron,該集群使用 StatefulSet 實現。使用  Operator,你只需指定存儲此備份的存儲桶即可。

不幸的是,由于編寫新的 Operator 除了需要了解有狀態應用的細節之外,還需要了解 Kubernetes 及其 API,因此,目前可用的  Operator 并不多,而且現有的 Operator 仍然相對較新。

譯注:Operator 是 CoreOS 推出的旨在簡化復雜有狀態應用管理的框架,它是一個感知應用狀態的控制器,通過擴展 Kubernetes API  來自動創建、管理和配置應用實例。Operator 基于 Third Party Resources  (CRD)擴展了新的應用資源,并通過控制器來保證應用處于預期狀態。比如 etcd operator 通過下面的三個步驟模擬了管理 etcd 集群的行為:通過  Kubernetes API 觀察集群的當前狀態;分析當前狀態與期望狀態的差別;調用 etcd 集群管理 API 或 Kubernetes API  消除這些差別。

(3)其他

本節提到的定義較少,主要是為了說明對于特定的數據庫,比如我們稍后將看到的 PostgreSQL 示例,還有其他選項可以將它們作為 Docker 容器在  Kubernetes 上部署和管理。

有時,除了 StatefulSet 或專用的 Operator 實現之外,還有其他可用的選項。

例如,Stolon 是一個“PostgreSQL 高可用性的云原生 PostgreSQL 管理器”,雖然我個人還沒有機會使用它,但看到過一些帖子中提到了  Stolon。

要在 Kubernetes 上部署 Stolon,可以使用提供的 StatefulSet 定義。但是,由于 Stolon  的功能,你不需要添加自己的集群管理自動化來控制 PostgreSQL 集群。Stolon 為此提供了自己的 CLI。

看完上述內容,你們對Kubernetes中怎么運行數據庫服務有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

阿瓦提县| 丰台区| 溧阳市| 金堂县| 织金县| 山东省| 临邑县| 乌海市| 保康县| 岫岩| 喜德县| 南投市| 宝丰县| 拉萨市| 淮南市| 桐梓县| 富民县| 乌拉特前旗| 百色市| 千阳县| 天水市| 常熟市| 德兴市| 新乡市| 平顶山市| 龙海市| 孝感市| 昆山市| 温州市| 新营市| 江川县| 岑溪市| 无锡市| 喀什市| 洛宁县| 道真| 大新县| 睢宁县| 冷水江市| 阜阳市| 安顺市|