K3s 嵌入式 DB 的高可用

2022-08-22 10:39 更新

嵌入式DB的高可用

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

新集群

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

要開始運(yùn)行,首先啟動一個(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

啟動第一臺 server 后,使用共享密鑰將第二臺和第三臺 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ù)庫的現(xiàn)有集群,你可以通過使用 ?--cluster-init? 標(biāo)志重新啟動你的 K3s server 來將其轉(zhuǎn)換為 etcd。完成此操作后,你將能夠如上所述添加其他實(shí)例。

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

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號