日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Kubernetes中PostgreSQL的推薦方法

圖片

創(chuàng)新互聯(lián)公司主營昌江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app開發(fā),昌江h(huán)5小程序開發(fā)搭建,昌江網(wǎng)站營銷推廣歡迎昌江等地區(qū)企業(yè)咨詢

你是否曾聽說過避免在Kubernetes中運(yùn)行數(shù)據(jù)庫的建議?有人認(rèn)為Kubernetes不適合有狀態(tài)的應(yīng)用程序,但這些說法是否屬實(shí)?讓我們深入探討并挑戰(zhàn)這些說法。

Kubernetes:有關(guān)有狀態(tài)工作負(fù)載的誤解平臺(tái)

在涉及有狀態(tài)應(yīng)用程序時(shí),Kubernetes經(jīng)常受到不公平的抨擊。這種誤解源自早期階段,當(dāng)時(shí)我們的選擇局限于部署(Deployments)和有狀態(tài)集(StatefulSets)。最初認(rèn)為有狀態(tài)集應(yīng)該是數(shù)據(jù)庫的選擇。然而,這忽略了Kubernetes的真實(shí)本質(zhì)——一種設(shè)計(jì)用于定制化的可擴(kuò)展平臺(tái)。

網(wǎng)絡(luò)和存儲(chǔ)是Kubernetes的典型例子。我們并不依賴內(nèi)置功能,而是通過CNI和CSI插件增強(qiáng)功能以適應(yīng)我們特定的需求。這個(gè)原則也適用于數(shù)據(jù)庫,盡管由于缺乏標(biāo)準(zhǔn)的數(shù)據(jù)庫接口,這條路并不那么直接。

有狀態(tài)集的困境

最初,早期采用者使用有狀態(tài)集在Kubernetes上運(yùn)行數(shù)據(jù)庫。它們提供了一定程度的秩序——可預(yù)測的擴(kuò)展性、穩(wěn)定的網(wǎng)絡(luò)標(biāo)識(shí)符和持久化存儲(chǔ)。然而,僅有有狀態(tài)集是不足以在生產(chǎn)環(huán)境中管理數(shù)據(jù)庫的,生產(chǎn)環(huán)境需要備份、故障轉(zhuǎn)移、可觀察性等更多功能。

自定義資源定義

對于Kubernetes中的數(shù)據(jù)庫來說,真正改變游戲規(guī)則的是自定義資源定義(CRDs)和自定義控制器,也稱為運(yùn)算符(operators)。這些Kubernetes擴(kuò)展允許創(chuàng)建具有自定義邏輯和生命周期管理的復(fù)雜有狀態(tài)應(yīng)用程序。換句話說,它們賦予了Kubernetes智能、高效地處理數(shù)據(jù)庫的能力。這種方法將Kubernetes的功能擴(kuò)展到了遠(yuǎn)遠(yuǎn)超出其核心功能的領(lǐng)域,使其能夠滿足數(shù)據(jù)庫管理的復(fù)雜需求。

使用Cloud Native PG運(yùn)行PostgreSQL

為了說明問題,讓我們探討一下使用Cloud Native PG項(xiàng)目在Kubernetes上運(yùn)行PostgreSQL。CloudNativePG的設(shè)計(jì)允許在多個(gè)區(qū)域擴(kuò)展PostgreSQL架構(gòu),提供了一個(gè)強(qiáng)大的災(zāi)難恢復(fù)框架,RPO(恢復(fù)點(diǎn)目標(biāo))極小。使用Cloud Native PG,你不僅僅是通過有狀態(tài)集來管理Pods;你正在利用一個(gè)專用控制器,它封裝了數(shù)據(jù)庫管理的一系列擴(kuò)展職責(zé)。該項(xiàng)目體現(xiàn)了Kubernetes作為基礎(chǔ)平臺(tái)到成為一個(gè)完全成熟的運(yùn)行數(shù)據(jù)庫的強(qiáng)大平臺(tái)的轉(zhuǎn)變。它支持從高可用設(shè)置到備份、擴(kuò)展和配置管理的所有內(nèi)容,都是通過CRDs進(jìn)行聲明性定義。

Cloud Native PG的架構(gòu)

高可用性和流復(fù)制

在核心層,CNPG同時(shí)支持異步和同步流復(fù)制。它允許配置一個(gè)主實(shí)例,以及多個(gè)熱備份副本以實(shí)現(xiàn)同一Kubernetes集群內(nèi)的高可用性。服務(wù)可供應(yīng)用程序連接到主實(shí)例(**-rw**)、熱備份副本(**-ro**)或任何實(shí)例進(jìn)行只讀工作負(fù)載(**-r**)。

共享無

CNPG推薦采用共享無體系結(jié)構(gòu)以增強(qiáng)韌性。這意味著PostgreSQL實(shí)例位于不同的Kubernetes工作節(jié)點(diǎn)上,跨越不同的可用區(qū),不共享存儲(chǔ)。每個(gè)節(jié)點(diǎn)理想情況下使用本地卷(local volumes)存儲(chǔ)PostgreSQL數(shù)據(jù),從而提高集群的容錯(cuò)性。CNPG自動(dòng)化地更新服務(wù)以適應(yīng)集群拓?fù)涞淖兓?。例如,在故障轉(zhuǎn)移期間,它會(huì)更新**-rw**服務(wù),將應(yīng)用程序流量重定向到新晉升的主實(shí)例,確保無縫的連續(xù)性。

讀寫和只讀工作負(fù)載

應(yīng)用程序可以連接到**-rw**服務(wù)以在主實(shí)例上執(zhí)行寫操作。對于只讀工作負(fù)載,應(yīng)用程序使用**-ro**服務(wù)連接到熱備份副本,從而分擔(dān)主節(jié)點(diǎn)的查詢負(fù)載。這種設(shè)置旨在優(yōu)化集群中的工作負(fù)載分布。

多集群部署和災(zāi)難恢復(fù)

CNPG通過一個(gè)名為副本集群(Replica Cluster)的功能,支持跨多個(gè)Kubernetes集群的部署。這種設(shè)置涉及在一個(gè)集群中擁有一個(gè)可寫主實(shí)例,以及在其他集群中擁有只讀副本集群,促進(jìn)全球性的災(zāi)難恢復(fù),并減少RPO(恢復(fù)點(diǎn)目標(biāo))和RTO(恢復(fù)時(shí)間目標(biāo))。

部署運(yùn)算符

要開始使用CloudNativePG(CNPG),你需要在你的Kubernetes環(huán)境中部署運(yùn)算符??梢酝ㄟ^使用**kubectl**應(yīng)用一個(gè)YAML清單文件來完成。按照以下步驟安裝CNPG運(yùn)算符:

  • 安裝所需版本的運(yùn)算符清單文件??梢允褂靡韵旅?/li>
kubectl apply -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.20/releases/cnpg-1.20.4.yaml
  • 通過檢查部署狀態(tài)來驗(yàn)證安裝:
kubectl get deploy -n cnpg-system cnpg-controller-manager

默認(rèn)情況下,運(yùn)算符作為Kubernetes的**Deployment**安裝在**cnpg-system**命名空間中。此部署的名稱取決于安裝方法。

  • 使用**kubectl**中的**describe**命令獲取有關(guān)運(yùn)算符部署的更多詳細(xì)信息:
kubectl describe deploy -n cnpg-system

部署PostgreSQL集群

一旦CNPG運(yùn)算符安裝完成,你可以通過應(yīng)用定義所需的**Cluster**配置文件來部署PostgreSQL集群。下面是一個(gè)示例配置文件(**cluster-example.yaml**),它定義了一個(gè)使用默認(rèn)存儲(chǔ)類的簡單的3節(jié)點(diǎn)PostgreSQL集群:

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-example
spec:
  instances: 3
  primaryUpdateStrategy: unsupervised
  storage:
    size: 1Gi

使用以下命令應(yīng)用配置文件來創(chuàng)建一個(gè)3節(jié)點(diǎn)的PostgreSQL集群:

kubectl apply -f cluster-example.yaml

你可以使用**get pods**命令檢查集群Pods的狀態(tài):

kubectl get pods

通過按照這些步驟,你可以在Kubernetes環(huán)境中快速設(shè)置CNPG運(yùn)算符并部署PostgreSQL集群。為了將你的集群與其他工作負(fù)載隔離開來,考慮創(chuàng)建一個(gè)單獨(dú)的命名空間或使用標(biāo)簽來識(shí)別與特定集群相關(guān)的對象。運(yùn)算符將為了便于管理將**cnpg.io/cluster**標(biāo)簽應(yīng)用于相關(guān)對象。

Kubernetes和數(shù)據(jù)庫的未來

Cloud Native PG證明了Kubernetes適合數(shù)據(jù)庫,特別是在增強(qiáng)了CRDs和自定義控制器的情況下。它已經(jīng)提交給CNCF進(jìn)行孵化,有望成為生態(tài)系統(tǒng)中的PostgreSQL旗艦項(xiàng)目。

選擇正確的數(shù)據(jù)庫管理路徑

關(guān)鍵的決策在于選擇托管數(shù)據(jù)庫服務(wù)還是自管理方法。在后一種情況下,Kubernetes在如Cloud Native PG這樣的解決方案中表現(xiàn)出色,為其采用提供了一個(gè)有力的論據(jù)。

結(jié)論:擁抱Kubernetes的方式

Kubernetes已經(jīng)成長為運(yùn)行數(shù)據(jù)庫的最佳平臺(tái),前提是我們要接受其可擴(kuò)展的本質(zhì)。Cloud Native PG不僅是一個(gè)選擇;它是PostgreSQL的選擇,提供了豐富的功能集和開源社區(qū)支持的保證。如果你傾向于自管理數(shù)據(jù)庫,考慮Cloud Native PG——它不是替代方案,而是未來發(fā)展的最佳方式。


新聞標(biāo)題:Kubernetes中PostgreSQL的推薦方法
地址分享:http://m.5511xx.com/article/ccogego.html