注意: 我們?cè)?nbsp;v1.0.0 版本中引入了在 Kubernetes 集群上安裝 Rancher 的官方支持。
本節(jié)介紹了如何使用外部數(shù)據(jù)庫(kù)安裝一個(gè)高可用的 K3s 集群。
單節(jié)點(diǎn) k3s server 集群可以滿足各種用例,但是對(duì)于需要 Kubernetes control-plane 穩(wěn)定運(yùn)行的重要環(huán)境,您可以在 HA 配置中運(yùn)行 K3s。一個(gè) K3s HA 集群由以下幾個(gè)部分組成:
關(guān)于這些組件如何協(xié)同工作的更多細(xì)節(jié),請(qǐng)參考架構(gòu)部分。
Agent 通過(guò)固定的注冊(cè)地址進(jìn)行注冊(cè),但注冊(cè)后直接與其中一個(gè) server 節(jié)點(diǎn)建立連接。這是一個(gè)由?k3s agent
?進(jìn)程發(fā)起的 websocket 連接,并由作為 agent 進(jìn)程一部分運(yùn)行的客戶端負(fù)載均衡器維護(hù)。
你首先需要為集群創(chuàng)建一個(gè)外部數(shù)據(jù)存儲(chǔ)。請(qǐng)參閱集群數(shù)據(jù)存儲(chǔ)選項(xiàng)文檔了解更多細(xì)節(jié)。
K3s 需要兩個(gè)或更多的 server 節(jié)點(diǎn)來(lái)實(shí)現(xiàn)這種 HA 配置。請(qǐng)參閱安裝要求指南了解最低主機(jī)要求。
當(dāng)在這些節(jié)點(diǎn)上運(yùn)行?k3s server
?命令時(shí),必須設(shè)置?datastore-endpoint
?參數(shù),以便 K3s 知道如何連接到外部數(shù)據(jù)存儲(chǔ)。?token
?參數(shù)也可以用來(lái)在添加節(jié)點(diǎn)時(shí)設(shè)置一個(gè)固定的 token。當(dāng)為空時(shí),將自動(dòng)生成 token。
例如,可以使用如下命令安裝 K3s server,并使用 MySQL 數(shù)據(jù)庫(kù)作為外部數(shù)據(jù)存儲(chǔ)和設(shè)置 token:
curl -sfL https://get.k3s.io | sh -s - server \
--token=SECRET \
--datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"
國(guó)內(nèi)用戶,可以使用以下方法加速安裝:
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \ --token=SECRET \ --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"
根據(jù)數(shù)據(jù)庫(kù)類(lèi)型的不同,數(shù)據(jù)存儲(chǔ)端點(diǎn)的格式也不同。詳情請(qǐng)參考數(shù)據(jù)存儲(chǔ)端點(diǎn)格式章節(jié)。
啟動(dòng) server 節(jié)點(diǎn)時(shí),若要設(shè)置 TLS 證書(shū),請(qǐng)參考數(shù)據(jù)存儲(chǔ)配置指南。
注意: 單臺(tái) server 安裝時(shí)可用的安裝選項(xiàng)也適用于高可用安裝。更多詳情,請(qǐng)參見(jiàn)安裝和配置選項(xiàng)文檔。
默認(rèn)情況下,server 節(jié)點(diǎn)將是可調(diào)度的,因此你的工作負(fù)載可以在它們上啟動(dòng)。如果你希望有一個(gè)專(zhuān)用的 control-plane,在這個(gè)平面上不會(huì)運(yùn)行用戶工作負(fù)載,你可以使用 taints。?node-taint
? 參數(shù)將允許你用污點(diǎn)配置節(jié)點(diǎn),例如?--node-taint CriticalAddonsOnly=true:NoExecute
?。
在所有 server 節(jié)點(diǎn)上啟動(dòng)?k3s server
?進(jìn)程后,用?k3s kubectl get nodes
?確保集群正常運(yùn)行。你應(yīng)該會(huì)看到你的 server 節(jié)點(diǎn)處?Ready
?狀態(tài)。
Agent 節(jié)點(diǎn)需要一個(gè) URL 來(lái)注冊(cè)。這可以是任何 server 節(jié)點(diǎn)的 IP 或主機(jī)名,但在許多情況下,這些節(jié)點(diǎn)可能會(huì)隨著時(shí)間的推移而改變。例如,如果您在支持縮放組的云中運(yùn)行集群,您可能會(huì)隨著時(shí)間的推移上下縮放 server 節(jié)點(diǎn)組,導(dǎo)致節(jié)點(diǎn)被創(chuàng)建和銷(xiāo)毀,從而具有與初始 server 節(jié)點(diǎn)不同的 IP。因此,你應(yīng)該在 server 節(jié)點(diǎn)前面有一個(gè)穩(wěn)定的端點(diǎn),不會(huì)隨時(shí)間推移而改變??梢允褂迷S多方法來(lái)設(shè)置此端點(diǎn),例如:
這個(gè)端點(diǎn)也可以用來(lái)訪問(wèn) Kubernetes API。因此,你可以修改你的?kubeconfig
?文件來(lái)指向它,而不是特定的節(jié)點(diǎn)。為了避免在這樣的配置中出現(xiàn)證書(shū)錯(cuò)誤,你應(yīng)該使用?--tls-san YOUR_IP_OR_HOSTNAME_HERE
?選項(xiàng)安裝 server 節(jié)點(diǎn)。這個(gè)選項(xiàng)在 TLS 證書(shū)中增加了一個(gè)額外的主機(jī)名或 IP 作為備用名稱(chēng),如果你想通過(guò) IP 和主機(jī)名訪問(wèn),可以多次指定。
步驟 2 中的相同示例命令可用于加入其他 server 節(jié)點(diǎn),其中需要使用第一個(gè)節(jié)點(diǎn)的 token。
如果第一個(gè) server 節(jié)點(diǎn)是在沒(méi)有 ?--token
? CLI 標(biāo)志或 ?K3S_TOKEN
?變量的情況下啟動(dòng)的,那么可以從任何已經(jīng)加入集群的 server 節(jié)點(diǎn)中檢索到 token:
cat /var/lib/rancher/k3s/server/token
然后可以使用 token添加其他 server 節(jié)點(diǎn):
curl -sfL https://get.k3s.io | sh -s - server \
--token=SECRET \
--datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"
有幾個(gè)配置標(biāo)志在所有 server 節(jié)點(diǎn)中必須是相同的:
--cluster-dns
?, ?--cluster-domain
?, ?--cluster-cidr
?, ?--service-cidr
?--disable-helm-controller
?, ?--disable-kube-proxy
?, ?--disable-network-policy
?和任何傳遞給?--disable
?的組件--secrets-encryption
?注意:應(yīng)該備份 token 的值,因?yàn)閺膫浞莼謴?fù)和添加節(jié)點(diǎn)時(shí)都需要它。以前,K3s 在使用外部 SQL 數(shù)據(jù)存儲(chǔ)時(shí)不強(qiáng)制使用 token。
因?yàn)?nbsp;K3s server 節(jié)點(diǎn)默認(rèn)是可調(diào)度的,所以 HA K3s server 集群的最小節(jié)點(diǎn)數(shù)是兩個(gè) server 節(jié)點(diǎn)和零個(gè) agent 節(jié)點(diǎn)。要添加指定運(yùn)行您的應(yīng)用和服務(wù)的節(jié)點(diǎn),請(qǐng)將 agent 節(jié)點(diǎn)加入到您的集群中。
在 HA 集群中加入 agent 節(jié)點(diǎn)與在單個(gè) server 集群中加入 agent 節(jié)點(diǎn)是一樣的。你只需要指定 agent 應(yīng)該注冊(cè)到的 URL 和它應(yīng)該使用的 token 即可。
K3S_TOKEN=SECRET k3s agent --server https://fixed-registration-address:6443
更多建議: