K3s 嵌入式 DB 的高可用

2022-08-22 10:39 更新

嵌入式DB的高可用

從 v1.19.5+k3s1 版本開始,K3s 已添加了對(duì)嵌入式 etcd 的完全支持。從 v1.19.1 到 v1.19.4 版本只提供了對(duì)嵌入式 etcd 的實(shí)驗(yàn)性支持。在 K3s v1.19.1 版本中,嵌入式 etcd 取代了實(shí)驗(yàn)性的 Dqlite。這是一個(gè)突破性的變化。請(qǐng)注意,不支持從實(shí)驗(yàn)性 Dqlite 升級(jí)到嵌入式 etcd。如果你嘗試升級(jí),升級(jí)將不會(huì)成功,并且數(shù)據(jù)將會(huì)丟失。
嵌入式 etcd (HA) 在速度較慢的磁盤上可能會(huì)出現(xiàn)性能問題,例如使用 SD 卡運(yùn)行的 Raspberry Pi。

新集群

要在這種模式下運(yùn)行 K3s,你必須有奇數(shù)的 server 節(jié)點(diǎn)。我們建議從三個(gè)節(jié)點(diǎn)開始。

要開始運(yùn)行,首先啟動(dòng)一個(gè) server 節(jié)點(diǎn),使用?cluster-init?標(biāo)志來啟用集群,并使用一個(gè)標(biāo)記作為共享的密鑰來加入其他服務(wù)器到集群中。

curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server --cluster-init

啟動(dòng)第一臺(tái) server 后,使用共享密鑰將第二臺(tái)和第三臺(tái) server 加入集群。

curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server --server https://<ip or hostname of server1>:6443

現(xiàn)在你有了一個(gè)高可用的 controlplane。你可以在 ?--server? 參數(shù)中使用任何集群 server,從而加入額外的 server 和 worker 節(jié)點(diǎn)。將額外的 worker 節(jié)點(diǎn)加入到集群中,步驟與單個(gè) server 集群相同。

驗(yàn)證

kubectl get nodes

輸出:

NAME        STATUS   ROLES                       AGE   VERSION
server1     Ready    control-plane,etcd,master   28m   vX.Y.Z
server2     Ready    control-plane,etcd,master   13m   vX.Y.Z

有幾個(gè)配置標(biāo)志在所有 server 節(jié)點(diǎn)中必須是相同的:

  • 與網(wǎng)絡(luò)有關(guān)的標(biāo)志:?--cluster-dns?, ?--cluster-domain?, ?--cluster-cidr?, ?--service-cidr ?
  • 控制某些組件的部署的標(biāo)志:?--disable-helm-controller?, ?--disable-kube-proxy?, ?--disable-network-policy?和任何傳遞給?--disable?的組件
  • 與功能相關(guān)的標(biāo)志:?--secrets-encryption?

現(xiàn)有集群

如果你有一個(gè)使用默認(rèn)嵌入式 SQLite 數(shù)據(jù)庫(kù)的現(xiàn)有集群,你可以通過使用 ?--cluster-init? 標(biāo)志重新啟動(dòng)你的 K3s server 來將其轉(zhuǎn)換為 etcd。完成此操作后,你將能夠如上所述添加其他實(shí)例。

重要: K3s v1.22.2 及更新版本支持從 SQLite 遷移到 etcd。如果您將 ?--cluster-init? 添加到現(xiàn)有 server,舊版本將創(chuàng)建一個(gè)新的空數(shù)據(jù)存儲(chǔ)。

如果由于節(jié)點(diǎn)已經(jīng)初始化或加入了一個(gè)集群,導(dǎo)致在磁盤上發(fā)現(xiàn)一個(gè) etcd 數(shù)據(jù)存儲(chǔ),那么數(shù)據(jù)存儲(chǔ)參數(shù)(?--cluster-init?、?--server? 和 ?--datastore-endpoint? 等)將被忽略。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)