本文介紹了高可用(HA) K3s 集群的架構(gòu),以及它與單節(jié)點集群的不同之處,描述了如何在 K3s server 上注冊 agent 節(jié)點。
K3s server 是運行?k3s server
?命令的機器(裸機或虛擬機),而 K3s worker 節(jié)點是運行?k3s agent
?命令的機器。
K3s 單節(jié)點集群的架構(gòu)如下圖所示,該集群有一個內(nèi)嵌 SQLite 數(shù)據(jù)庫的單節(jié)點 K3s server。
在這種配置中,每個 agent 節(jié)點都注冊到同一個 server 節(jié)點。K3s 用戶可以通過調(diào)用 server 節(jié)點上的 K3s API 來操作 Kubernetes 資源。
單節(jié)點k3s server的架構(gòu)
雖然單節(jié)點 k3s 集群可以滿足各種用例,但對于 Kubernetes control-plane 的正常運行至關重要的環(huán)境,您可以在高可用配置中運行 K3s。一個高可用 K3s 集群由以下幾個部分組成:
server
?節(jié)點將為 Kubernetes API 提供服務并運行其他 control-plane 服務
external database
?外部數(shù)據(jù)庫作為數(shù)據(jù)存儲的媒介。K3s高可用架構(gòu)
在高可用 K3s server 配置中,每個節(jié)點還必須使用固定的注冊地址向 Kubernetes API 注冊,注冊后,agent 節(jié)點直接與其中一個 server 節(jié)點建立連接,如下圖所示:
Agent 節(jié)點用?k3s agent
?進程發(fā)起的 websocket 連接注冊,連接由作為代理進程一部分運行的客戶端負載均衡器維護。
Agent 將使用節(jié)點集群 secret 以及隨機生成的節(jié)點密碼向 k3s server 注冊,密碼存儲在 ?/etc/rancher/node/password
?路徑下。K3s server 將把各個節(jié)點的密碼存儲為 Kubernetes secrets,隨后的任何嘗試都必須使用相同的密碼。節(jié)點密碼秘密存儲在?kube-system
?命名空間中,名稱使用模板?<host>.node-password.k3s
?。
注意
- 在 K3s v1.20.2 之前,K3s server 將密碼存儲在?
/var/lib/rancher/k3s/server/cred/node-passwd
?的磁盤上。- 如果您刪除了 agent 的?
/etc/rancher/node
?目錄,則需要為該 agent 重新創(chuàng)建密碼文件,或者從 server 中刪除該條目。- 通過使用?
--with-node-id
?標志啟動 K3s server 或 agent,可以將唯一的節(jié)點 ID 附加到主機名中。
位于目錄路徑?/var/lib/rancher/k3s/server/manifests
? 的清單在構(gòu)建時被捆綁到 K3s 二進制文件中,將由rancher/helm-controller在運行時安裝。
更多建議: