怎樣在Kubernetes上運(yùn)行PostgreSQL
創(chuàng)建統(tǒng)一管理的,具備靈活性的云原生生產(chǎn)部署來(lái)部署一個(gè)個(gè)性化的數(shù)據(jù)庫(kù)即服務(wù)(DBaaS)。
通過(guò)在 Kubernetes 上運(yùn)行 PostgreSQL 數(shù)據(jù)庫(kù),你能創(chuàng)建統(tǒng)一管理的,具備靈活性的云原生生產(chǎn)部署應(yīng)用來(lái)部署一個(gè)個(gè)性化的數(shù)據(jù)庫(kù)即服務(wù)為你的特定需求進(jìn)行量身定制。
對(duì)于 Kubernetes,使用 Operator 允許你提供額外的上下文去管理有狀態(tài)應(yīng)用。當(dāng)使用像PostgreSQL 這樣開(kāi)源的數(shù)據(jù)庫(kù)去執(zhí)行包括配置、擴(kuò)展、高可用和用戶管理時(shí),Operator 也很有幫助。
讓我們來(lái)探索如何在 Kubernetes 上啟動(dòng)并運(yùn)行 PostgreSQL。
安裝 PostgreSQL Operator
將 PostgreSQL 和 Kubernetes 結(jié)合使用的***步是安裝一個(gè) Operator。在針對(duì) Linux 系統(tǒng)的Crunchy 的快速啟動(dòng)腳本的幫助下,你可以在任意基于 Kubernetes 的環(huán)境下啟動(dòng)和運(yùn)行開(kāi)源的Crunchy PostgreSQL Operator。
快速啟動(dòng)腳本有一些必要前提:
- Wget 工具已安裝。
- kubectl 工具已安裝。
- 在你的 Kubernetes 中已經(jīng)定義了一個(gè) StorageClass。
- 擁有集群權(quán)限的可訪問(wèn) Kubernetes 的用戶賬號(hào),以安裝 Operator 的 RBAC 規(guī)則。
- 一個(gè) PostgreSQL Operator 的 命名空間。
執(zhí)行這個(gè)腳本將提供給你一個(gè)默認(rèn)的 PostgreSQL Operator 部署,其默認(rèn)假設(shè)你采用 動(dòng)態(tài)存儲(chǔ)和一個(gè)名為 standard
的 StorageClass。這個(gè)腳本允許用戶采用自定義的值去覆蓋這些默認(rèn)值。
通過(guò)下列命令,你能下載這個(gè)快速啟動(dòng)腳本并把它的權(quán)限設(shè)置為可執(zhí)行:
wget <https://raw.githubusercontent.com/CrunchyData/postgres-operator/master/examples/quickstart.sh>
chmod +x ./quickstart.sh
然后你運(yùn)行快速啟動(dòng)腳本:
./examples/quickstart.sh
在腳本提示你相關(guān)的 Kubernetes 集群基本信息后,它將執(zhí)行下列操作:
- 下載 Operator 配置文件
- 將
$HOME/.pgouser
這個(gè)文件設(shè)置為默認(rèn)設(shè)置 - 以 Kubernetes Deployment 部署 Operator
- 設(shè)置你的
.bashrc
文件包含 Operator 環(huán)境變量 - 設(shè)置你的
$HOME/.bash_completion
文件為pgo bash_completion
文件
在快速啟動(dòng)腳本的執(zhí)行期間,你將會(huì)被提示在你的 Kubernetes 集群設(shè)置 RBAC 規(guī)則。在另一個(gè)終端,執(zhí)行快速啟動(dòng)命令所提示你的命令。
一旦這個(gè)腳本執(zhí)行完成,你將會(huì)得到提示設(shè)置一個(gè)端口以轉(zhuǎn)發(fā)到 PostgreSQL Operator pod。在另一個(gè)終端,執(zhí)行這個(gè)端口轉(zhuǎn)發(fā)操作;這將允許你開(kāi)始對(duì) PostgreSQL Operator 執(zhí)行命令!嘗試輸入下列命令創(chuàng)建集群:
pgo create cluster mynewcluster
你能輸入下列命令測(cè)試你的集群運(yùn)行狀況:
pgo test mynewcluster
現(xiàn)在,你能在 Kubernetes 環(huán)境下管理你的 PostgreSQL 數(shù)據(jù)庫(kù)了!你可以在官方文檔找到非常全面的命令,包括擴(kuò)容,高可用,備份等等。
這篇文章部分參考了該作者為 Crunchy 博客而寫的在 Kubernetes 上開(kāi)始運(yùn)行 PostgreSQL。