本文介紹了如何在 Harvester 中創(chuàng)建和初始化 K3s 集群,以及為已有的 K3s 集群添加節(jié)點(diǎn)的操作步驟。除此之外,本文還提供了在 Harvester 上運(yùn)行 AutoK3s 的進(jìn)階操作指導(dǎo),如配置私有鏡像倉(cāng)庫(kù)和啟用 UI 組件。
你需要提前搭建好 Harvester 環(huán)境,并準(zhǔn)備好可訪問(wèn) Harvester 集群的 Kubeconfig 文件。
在使用 Harvester provider 之前,你需要上傳好可以創(chuàng)建容器化實(shí)例的 OS 鏡像。
目前,Harvester 支持兩種類(lèi)型的網(wǎng)絡(luò):
Harvester 使用 canal 作為默認(rèn)管理網(wǎng)絡(luò)。它是一個(gè)內(nèi)置網(wǎng)絡(luò),可以直接從集群中使用。 默認(rèn)情況下,虛擬機(jī)的管理網(wǎng)絡(luò) IP 只能在集群節(jié)點(diǎn)內(nèi)訪問(wèn),虛擬機(jī)重啟后管理網(wǎng)絡(luò) IP 會(huì)改變。
如果你是在 Harvester 集群外部使用 AutoK3s,你不能使用默認(rèn)的管理網(wǎng)絡(luò),請(qǐng)你準(zhǔn)備好可訪問(wèn)到 Harvester VM的 VLAN 網(wǎng)絡(luò),以便 AutoK3s 可以在 Harvester VM 中安裝 K3s 集群。
接下來(lái)我們將介紹基于 AutoK3s 本地 UI 如何使用 AutoK3s 工具,在 Harvester 上創(chuàng)建和管理 K3s 集群。
你可以通過(guò)快速體驗(yàn)中的描述,通過(guò) Docker 或者 CLI 啟動(dòng)本地 UI,打開(kāi)瀏覽器,訪問(wèn)目標(biāo)端口 ?8080
?即可。
你可以使用快速創(chuàng)建功能,在指定的云提供商服務(wù)中,快速啟動(dòng)一個(gè)K3s集群。
以下圖為例,我們將在 Harvester 使用默認(rèn)配置創(chuàng)建一個(gè)單節(jié)點(diǎn)的 K3s 集群,虛擬機(jī)會(huì)在 ?default
?命名空間中創(chuàng)建。
表 1:快速創(chuàng)建參數(shù)
參數(shù) | 說(shuō)明 | 默認(rèn)值 |
---|---|---|
Provider | 云提供商名稱(chēng) | harvester
|
Name | K3s集群名稱(chēng) | |
Master | Master 節(jié)點(diǎn)數(shù)量 | 1
|
Worker | Worker 節(jié)點(diǎn)數(shù)量 | 0
|
CPU Count | 虛擬機(jī)CPU大小 | 2
|
Memory Size | 虛擬機(jī)內(nèi)存大小 | 4Gi
|
Disk Size | 虛擬機(jī)磁盤(pán)大小 | 40Gi
|
VM Namespace | 虛擬機(jī)所在命名空間 | default
|
Image Name | 虛擬機(jī)鏡像名稱(chēng),如果與虛擬機(jī)所在命名空間不同,設(shè)置規(guī)則為 <namespace>/<imageName>
|
|
Network Name | 虛擬機(jī)使用網(wǎng)絡(luò)名稱(chēng),如果與虛擬機(jī)所在命名空間不同,設(shè)置規(guī)則為 <namespace>/<networkName>
|
|
SSH User | SSH 用戶(hù) | |
SSH Key Path | 如果你選擇了已有的密鑰對(duì),需要指定SSH 私鑰目錄,如果你使用AutoK3s 自動(dòng)生成的密鑰,這里可以不填寫(xiě)任何內(nèi)容 | |
Kubeconfig | 可操作 Harvester 集群的 Kubeconfig 文件內(nèi)容 |
如果你不想使用默認(rèn)的配置,可以點(diǎn)擊 Advance 按鈕,進(jìn)入自定義參數(shù)頁(yè)面進(jìn)行更多參數(shù)的設(shè)置。 或者你可以在集群列表頁(yè)點(diǎn)擊 Create 按鈕進(jìn)入自定義參數(shù)頁(yè)面進(jìn)行更多參數(shù)的設(shè)置。
使用 Harvester 云提供商創(chuàng)建 K3s 集群的自定義參數(shù)配置分為三項(xiàng),實(shí)例配置、K3s集群配置、高級(jí)選項(xiàng)。接下來(lái)對(duì)每個(gè)配置項(xiàng)進(jìn)行詳細(xì)說(shuō)明。
實(shí)例配置主要配置的內(nèi)容為對(duì)應(yīng)云提供商虛擬機(jī)的配置,例如實(shí)例運(yùn)行命名空間、使用的操作系統(tǒng)類(lèi)型、網(wǎng)絡(luò)配置等信息。
表 3:實(shí)例配置參數(shù)
參數(shù) | 說(shuō)明 | 默認(rèn)值 |
---|---|---|
CPU Count | 虛擬機(jī)CPU大小 | 2
|
Memory Size | 虛擬機(jī)內(nèi)存大小 | 4Gi
|
Disk Size | 虛擬機(jī)磁盤(pán)大小 | 40Gi
|
Disk Bus | 磁盤(pán)類(lèi)型,支持 virtio , sata , scsi
|
virtio
|
Image Name | 虛擬機(jī)鏡像名稱(chēng),如果與虛擬機(jī)所在命名空間不同,設(shè)置規(guī)則為 <namespace>/<imageName>
|
|
Keypair Name | 密鑰對(duì)名稱(chēng)(如果你不設(shè)置密鑰對(duì),AutoK3s 將自動(dòng)為你生成一個(gè)密鑰對(duì)) | |
VM Namespace | 虛擬機(jī)所在命名空間 | default
|
Kubeconfig | 可操作 Harvester 集群的 Kubeconfig 文件內(nèi)容 | |
User Data | Cloud init 模板內(nèi)容 | |
Network Name | 虛擬機(jī)使用網(wǎng)絡(luò)名稱(chēng),如果與虛擬機(jī)所在命名空間不同,設(shè)置規(guī)則為 <namespace>/<networkName>
|
|
Network Model | 虛擬機(jī)使用的網(wǎng)卡驅(qū)動(dòng)類(lèi)型 | virtio
|
Network Type | 網(wǎng)絡(luò)類(lèi)型,支持 dhcp , pod
|
dhcp
|
Interface Type | 網(wǎng)絡(luò)接口類(lèi)型,支持 bridge , masquerade
|
bridge
|
Network Data | 自定義虛擬機(jī)網(wǎng)絡(luò)配置,更多信息可參考這里 | |
SSH User | SSH 用戶(hù) | root
|
SSH Port | SSH 端口 | 22
|
SSH Key Path | 如果你選擇了已有的密鑰對(duì),需要指定SSH 私鑰目錄,如果你使用AutoK3s 自動(dòng)生成的密鑰,這里可以不填寫(xiě)任何內(nèi)容 | |
SSH Key Passphrase | 如果你的私鑰需要密碼驗(yàn)證,請(qǐng)?jiān)谶@里輸入密碼 | |
SSH Password | 如果你使用Password連接到虛擬機(jī),請(qǐng)輸入密碼 | |
SSH Agent Auth | 如果你配置 SSH 代理程序,可以開(kāi)啟此項(xiàng)配置 | false |
SSH Cert Path | 如果你配置了 ssh certificate,在這里你需要將 certificate path 傳入進(jìn)來(lái),以保證 AutoK3s 可以通過(guò)ssh連接到遠(yuǎn)程虛擬機(jī) |
K3s 參數(shù)配置項(xiàng)主要對(duì) K3s 集群進(jìn)行設(shè)置,例如是否部署 HA 模式、K3s 安裝版本等。
表 4:K3s 配置參數(shù)
參數(shù) | 說(shuō)明 | 默認(rèn)值 |
---|---|---|
K3s Channel | 用于獲取 K3s 下載 URL 的通道。選項(xiàng)包括:stable , latest , testing 。 |
stable
|
K3s Version | 安裝的 K3s 版本,如果設(shè)置則覆蓋 Channel 選項(xiàng) | |
Cluster | 啟用嵌入式 DB 高可用 K3s(即開(kāi)啟 --cluster-init 設(shè)置) |
false |
Datastore | 指定 etcd、Mysql、Postgres 或 Sqlite(默認(rèn))數(shù)據(jù)源名稱(chēng) | |
K3s Install Script | K3s 安裝腳本,對(duì)于中國(guó)區(qū)用戶(hù),可以通過(guò)下拉菜單選擇 rancher-mirror 腳本來(lái)安裝 |
https://get.k3s.io
|
Master | Master 節(jié)點(diǎn)數(shù)量 | |
Master Extra Args | Master 節(jié)點(diǎn)額外參數(shù)設(shè)置,例如 --no-deploy traefik
|
|
Worker | Worker 節(jié)點(diǎn)數(shù)量 | |
Worker Extra Args | Worker 節(jié)點(diǎn)額外參數(shù)設(shè)置,例如 --node-taint key=value:NoExecute
|
|
Token | 用于將server或agent加入集群的共享secret,如果不設(shè)置,會(huì)自動(dòng)生成一個(gè)Token | |
Manifests | 自動(dòng)部署應(yīng)用清單目錄,這里支持設(shè)置某個(gè)manifest文件或者包含多個(gè)manifest文件的目錄路徑(僅支持一層目錄)。 | |
TLS Sans | 在 TLS 證書(shū)中添加其他主機(jī)名或 IP 作為主題備用名稱(chēng)。 | |
Registry | 私有鏡像倉(cāng)庫(kù)配置 |
配置要開(kāi)啟的 UI 組件(kubernetes-dashboard/kube-explorer)。
表 4:高級(jí)選項(xiàng)
參數(shù) | 說(shuō)明 | 默認(rèn)值 |
---|---|---|
UI | 開(kāi)啟的 UI 組件(Kubernetes Dashboard/kube-explorer) |
你可以使用模板功能,提前預(yù)置好常用的集群模板,每次創(chuàng)建集群時(shí)可以用模板參數(shù)進(jìn)行填充,極大精簡(jiǎn)了重復(fù)操作。一次編寫(xiě),多次運(yùn)行,提升效率。
創(chuàng)建集群模板的參數(shù)與上面描述的自定義參數(shù)創(chuàng)建集群的表單內(nèi)容相同,在這里不做贅述。
你可以選擇最常用的模板,點(diǎn)擊右側(cè)下拉框中的 Set Default 按鈕,將模板設(shè)置為默認(rèn)模板。
設(shè)置為默認(rèn)模板后,你可以通過(guò)快速創(chuàng)建功能一鍵部署常用配置的 K3s 集群。
如果你想使用其他模板創(chuàng)建集群,你還可以在快速創(chuàng)建頁(yè)面的右上角,或者在自定義創(chuàng)建集群的右上角篩選模板,點(diǎn)擊 Fill Form 按鈕后,會(huì)自動(dòng)根據(jù)模板內(nèi)容填充表單。
你可以在集群列表頁(yè)查看和管理使用 AutoK3s 創(chuàng)建的 K3s 集群。
選中你要添加節(jié)點(diǎn)的集群,點(diǎn)擊右側(cè)下拉菜單中的 Join Node 按鈕,在彈出的窗口中設(shè)置要添加的節(jié)點(diǎn)數(shù)量即可。
選中您要升級(jí)的集群,點(diǎn)擊右側(cè)下拉菜單中的 Upgrade 按鈕,在彈出窗口中會(huì)顯示您當(dāng)前集群配置的版本信息,例如下圖示例中,顯示集群版本為 ?v1.19.16+k3s1
?。
如果我們要將集群升級(jí)到 ?v1.20.15+k3s1
?,則修改 Version 為指定版本號(hào)即可;如果想要將集群升級(jí)到最新的stable版本,則刪除掉 Version 指定的版本號(hào)。
選擇要升級(jí)的版本后,點(diǎn)擊 Upgrade 按鈕,等待集群升級(jí)完成。
如果你想操作 K3s 集群數(shù)據(jù),可以點(diǎn)擊右上角 Launch Kubectl 按鈕,在下拉框中選擇要操作的集群后,便可以在 UI 控制臺(tái)操作選中的集群了。
如果您想在其他地方管理集群,可以單獨(dú)下載指定集群的 Kubeconfig 文件。點(diǎn)擊指定集群右側(cè)下拉菜單中的 ?Download KubeConfig
? 按鈕,在彈出窗口中選擇復(fù)制或下載文件。
如果你想連接到遠(yuǎn)程主機(jī)進(jìn)行操作,你可以在集群列表頁(yè)面點(diǎn)擊集群名稱(chēng),進(jìn)入詳情頁(yè)面,選擇要連接的主機(jī),點(diǎn)擊右側(cè) Execute Shell 按鈕。
你可以在創(chuàng)建集群時(shí),通過(guò) Additional Options 選擇 explorer 選項(xiàng)開(kāi)啟 kube-explorer 功能。
也可以通過(guò)右側(cè)下拉菜單中選擇 Enable Explorer 功能來(lái)開(kāi)啟 kube-explorer。
開(kāi)啟后,在集群列表會(huì)增加 dashboard 跳轉(zhuǎn)鏈接按鈕,點(diǎn)擊跳轉(zhuǎn)鏈接便可以訪問(wèn) kube-explorer dashboard 頁(yè)面了。
對(duì)于已經(jīng)開(kāi)啟了 kube-explorer 功能的集群,可以在右側(cè)下拉菜單中選擇 Disable Explorer 功能來(lái)關(guān)閉 kube-explorer 服務(wù)。
在使用命令之前,你需要設(shè)置環(huán)境變量。
export HARVESTER_KUBECONFIG_FILE='<your harvester kubeconfig file path>'
如想了解更多參數(shù),請(qǐng)運(yùn)行?autok3s <sub-command> --provider harvester --help
?命令。
運(yùn)行以下命令,在 Harvester 上創(chuàng)建并啟動(dòng)創(chuàng)建一個(gè)名為 “myk3s”的集群,并為該集群配置 1 個(gè) master 節(jié)點(diǎn)和 1 個(gè) worker 節(jié)點(diǎn)。
autok3s -d create \
--provider harvester \
--name myk3s \
--image-name <harvester image> \
--network-name <vlan network name> \
--master 1 \
--worker 1
創(chuàng)建高可用集群的命令分為兩種,取決于你選擇使用的是內(nèi)置的 etcd 還是外部數(shù)據(jù)庫(kù)。
運(yùn)行以下命令,在 Harvester 上創(chuàng)建并啟動(dòng)創(chuàng)建了一個(gè)名為“myk3s”,包含 3 個(gè) master 節(jié)點(diǎn)的高可用 K3s 集群。
autok3s -d create \
--provider harvester \
--name myk3s \
--image-name <harvester image> \
--network-name <vlan network name> \
--master 3 \
--cluster
在高可用模式下使用外部數(shù)據(jù)庫(kù),需要滿足兩個(gè)條件:
所以在以下的代碼示例中,我們通過(guò)?--master 2
?指定 master 節(jié)點(diǎn)數(shù)量為 2,滿足 master 節(jié)點(diǎn)的數(shù)量不小于 1 這個(gè)條件;且通過(guò)?--datastore "PATH"
?指定外部數(shù)據(jù)庫(kù)的存儲(chǔ)路徑,提供外部數(shù)據(jù)庫(kù)的存儲(chǔ)路徑。
運(yùn)行以下命令,在 Harvester 上創(chuàng)建并啟動(dòng)創(chuàng)建了一個(gè)名為“myk3s”,包含 2 個(gè)master 節(jié)點(diǎn)的高可用 K3s 集群:
autok3s -d create \
--provider harvester \
--name myk3s \
--image-name <harvester image> \
--network-name <vlan network name> \
--master 2 \
--datastore "mysql://<user>:<password>@tcp(<ip>:<port>)/<db>"
請(qǐng)使用?autok3s join
?命令為已有集群添加 K3s 節(jié)點(diǎn)。
運(yùn)行以下命令,為“myk3s”集群添加 1 個(gè) worker 節(jié)點(diǎn)。
autok3s -d join --provider harvester --name myk3s --worker 1
autok3s -d join --provider harvester --name myk3s --master 2 --worker 1
刪除一個(gè) k3s 集群,這里刪除的集群為 myk3s。
autok3s -d delete --provider harvester --name myk3s
顯示當(dāng)前主機(jī)上管理的所有 K3s 集群列表。
autok3s list
NAME REGION PROVIDER STATUS MASTERS WORKERS VERSION
myk3s harvester Running 1 0 v1.22.6+k3s1
顯示具體的 K3s 信息,包括實(shí)例狀態(tài)、主機(jī) ip、集群版本等信息。
autok3s describe -n <clusterName> -p harvester
注意:如果使用不同的 provider 創(chuàng)建的集群名稱(chēng)相同,describe 時(shí)會(huì)顯示多個(gè)集群信息,可以使用?
-p <provider>
?對(duì) provider 進(jìn)一步過(guò)濾。例如:?autok3s describe -n myk3s -p harvester
?。
Name: myk3s
Provider: harvester
Region:
Zone:
Master: 1
Worker: 2
Status: Running
Version: v1.22.6+k3s1
Nodes:
- internal-ip: [x.x.x.x]
external-ip: [x.x.x.x]
instance-status: Running
instance-id: autok3s-myk3s-76mfl
roles: <none>
status: Ready
hostname: autok3s-myk3s-76mfl
container-runtime: containerd://1.5.9-k3s1
version: v1.22.6+k3s1
群創(chuàng)建完成后, ?autok3s
?會(huì)自動(dòng)合并 ?kubeconfig
?文件。
autok3s kubectl config use-context myk3s.myns.harvester
autok3s kubectl <sub-commands> <flags>
在多個(gè)集群的場(chǎng)景下,可以通過(guò)切換上下文來(lái)完成對(duì)不同集群的訪問(wèn)。
autok3s kubectl config get-contexts
autok3s kubectl config use-context <context>
SSH 連接到集群中的某個(gè)主機(jī),這里選擇的集群為 myk3s。
autok3s ssh --provider harvester --name myk3s
您可以使用以下命令將指定的 K3s 集群升級(jí)到 ?latest
?版本
autok3s upgrade --provider harvester --name myk3s --k3s-channel latest
如果您想將 K3s 集群升級(jí)到指定版本,可以指定 ?--k3s-version
?
autok3s upgrade --provider harvester --name myk3s --k3s-version v1.22.4+k3s1
AutoK3s 集成了一些與當(dāng)前 provider 有關(guān)的高級(jí)組件,例如私有鏡像倉(cāng)庫(kù) 和 UI。
在運(yùn)行?autok3s create
?或?autok3s join
?時(shí),通過(guò)傳遞?--registry /etc/autok3s/registries.yaml
?以使用私有鏡像倉(cāng)庫(kù),例如:
autok3s -d create \
--provider harvester \
--name myk3s \
--image-name <harvester image> \
--network-name <vlan network name> \
--master 1 \
--worker 1 \
--registry /etc/autok3s/registries.yaml
使用私有鏡像倉(cāng)庫(kù)的配置請(qǐng)參考以下內(nèi)容,如果你的私有鏡像倉(cāng)庫(kù)需要 TLS 認(rèn)證,?autok3s
?會(huì)從本地讀取相關(guān)的 TLS 文件并自動(dòng)上傳到遠(yuǎn)程服務(wù)器中完成配置,你只需要完善?registry.yaml
?即可。
mirrors:
docker.io:
endpoint:
- "https://mycustomreg.com:5000"
configs:
"mycustomreg:5000":
auth:
username: xxxxxx # this is the registry username
password: xxxxxx # this is the registry password
tls:
cert_file: # path to the cert file used in the registry
key_file: # path to the key file used in the registry
ca_file: # path to the ca file used in the registry
AutoK3s 支持兩種 UI 組件,包括 kubernetes-dashboard 和 kube-explorer
autok3s -d create -p harvester \
... \
--enable dashboard
訪問(wèn) Token 等設(shè)置請(qǐng)參考 此文檔 。
autok3s explorer --context myk3s.myns.harvester --port 9999
你可以通過(guò) http://127.0.0.1:9999 訪問(wèn) kube-explorer dashboard 頁(yè)面。
更多建議: