K3s AutoK3s 創(chuàng)建K3d集群

2022-08-18 11:47 更新

概述

本文介紹了如何使用 K3d 在宿主機(jī)中使用 Docker 初始化 K3s 集群,以及為已有的 K3s 集群添加節(jié)點(diǎn)的操作步驟。除此之外,本文還提供了在 K3d 上運(yùn)行 AutoK3s 的進(jìn)階操作指導(dǎo),如配置私有鏡像倉庫。

前置要求

  • 強(qiáng)烈建議您在 Linux/Unix 環(huán)境中使用 K3d Provider
  • 安裝 Docker

UI 使用說明

接下來我們將基于 AutoK3s 本地 UI 介紹如何使用 AutoK3s 工具,在 Docker 中啟動 K3s 集群。

您可以通過快速體驗中的描述,通過 Docker 或者 CLI 啟動本地 UI,打開瀏覽器,訪問目標(biāo)端口 ?8080 ?即可。

請注意:
  • 如果您使用 Docker 啟動 AutoK3s 服務(wù)并且需要使用 K3d Provider,請將 docker.sock 文件掛載到容器中。
  • 受限于 MacOS docker vm,k3d 本身在 MacOS 下使用存在限制,為了您更好的體驗,建議在 Linux 下使用 k3d provider。
  • 如確實需要 MacOS 下使用,需注意 MacOS 下 Docker 不支持 Host Networking,請使用 publish 端口方式。此時,AutoK3s 無法使用 Kubectl shell 操作 K3d 集群,請轉(zhuǎn)而進(jìn)入 K3d 集群的 node shell,依托 master 節(jié)點(diǎn)自帶的kubectl進(jìn)行管理。參考: https://docs.docker.com/network/host/

快速創(chuàng)建集群

您可以使用快速創(chuàng)建功能,在指定的云提供商服務(wù)中,快速啟動一個K3s集群。

以下圖為例,我們將在 Docker 中使用默認(rèn)配置創(chuàng)建一個單節(jié)點(diǎn)的 K3s 集群。


表 1:快速創(chuàng)建參數(shù)

參數(shù) 說明 默認(rèn)值
Provider 云提供商名稱 k3d
Name K3s集群名稱
Master Master 節(jié)點(diǎn)數(shù)量 1
Worker Worker 節(jié)點(diǎn)數(shù)量 0

自定義參數(shù)創(chuàng)建

如果您不想使用默認(rèn)的配置,可以點(diǎn)擊 Advance 按鈕,進(jìn)入自定義參數(shù)頁面進(jìn)行更多參數(shù)的設(shè)置。 或者您可以在集群列表頁點(diǎn)擊 Create 按鈕進(jìn)入自定義參數(shù)頁面進(jìn)行更多參數(shù)的設(shè)置。

使用 K3d 云提供商創(chuàng)建 K3s 集群的自定義參數(shù)配置僅有一項,接下來對每個配置項進(jìn)行詳細(xì)說明。

K3d 配置

K3d 配置主要配置的內(nèi)容為啟動 K3s 集群所需的參數(shù),例如 K3s 鏡像、容器運(yùn)行內(nèi)存、環(huán)境變量、掛載數(shù)據(jù)卷等信息。


表 2:實例配置參數(shù)

參數(shù) 說明 默認(rèn)值
API Port 指定在LoadBalancer上公開的 Kubernetes API 服務(wù)器端口,例如(--api-port 0.0.0.0:6550) 0.0.0.0:0
Image 在 Docker 中啟動的 K3s 鏡像 rancher/k3s:v1.21.2-k3s1
No LoadBalancer 禁用 LoadBalancer false
No Host IP 禁用將主機(jī)IP作為“host.k3d.internal”自動注入到容器和CoreDNS中 false
No Image Volume 禁用創(chuàng)建用于導(dǎo)入鏡像的數(shù)據(jù)卷 false
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
Masters Memory Master 節(jié)點(diǎn)內(nèi)存限制[作用于Docker]
Workers Memory Worker 節(jié)點(diǎn)內(nèi)存限制[作用于Docker]
Token 用于將server或agent加入集群的共享secret,如果不設(shè)置,會自動生成一個Token
Network 使用已經(jīng)存在的 Docker 網(wǎng)絡(luò)
GPUs 將GPU設(shè)備添加到群集節(jié)點(diǎn)容器(設(shè)置all將添加所有GPU到容器)[作用于Docker]
Labels 將標(biāo)簽添加到節(jié)點(diǎn)容器,例如--labels my.label@agent [0,1] --labels other.label=somevalue@server:0
Environment Variables 將環(huán)境變量添加到節(jié)點(diǎn),例如--envs HTTP_PROXY=my.proxy.com@server:0 --envs SOME_KEY=SOME_VAL@server:0
Volumes 將卷掛載到節(jié)點(diǎn)中,例如--volumes /my/path@agent:0,1 --volumes /tmp/test:/tmp/other@server:0
Ports 將節(jié)點(diǎn)容器中的端口映射到主機(jī),例如--ports 8080:80@agent:0 --ports 8081@agent:1
Registry 私有鏡像倉庫配置文件路徑,如果您的私有鏡像倉庫帶有證書,請參考這里

集群模板

您可以使用模板功能,提前預(yù)置好常用的集群模板,每次創(chuàng)建集群時可以用模板參數(shù)進(jìn)行填充,極大精簡了重復(fù)操作。一次編寫,多次運(yùn)行,提升效率。

創(chuàng)建集群模板的參數(shù)與上面描述的自定義參數(shù)創(chuàng)建集群的表單內(nèi)容相同,在這里不做贅述。


您可以選擇最常用的模板,點(diǎn)擊右側(cè)下拉框中的 Set Default 按鈕,將模板設(shè)置為默認(rèn)模板。


設(shè)置為默認(rèn)模板后,您可以通過快速創(chuàng)建功能一鍵部署常用配置的 K3s 集群。


如果您想使用其他模板創(chuàng)建集群,您還可以在快速創(chuàng)建頁面的右上角,或者在自定義創(chuàng)建集群的右上角篩選模板,點(diǎn)擊 Fill Form 按鈕后,會自動根據(jù)模板內(nèi)容填充表單。


集群管理

您可以在集群列表頁查看和管理使用 AutoK3s 創(chuàng)建的 K3s 集群。

添加節(jié)點(diǎn)

選中您要添加節(jié)點(diǎn)的集群,點(diǎn)擊右側(cè)下拉菜單中的 Join Node 按鈕,在彈出的窗口中設(shè)置要添加的節(jié)點(diǎn)數(shù)量即可。


Kubectl

如果您想操作 K3s 集群數(shù)據(jù),可以點(diǎn)擊右上角 Launch Kubectl 按鈕,在下拉框中選擇要操作的集群后,便可以在 UI 控制臺操作選中的集群了。


下載 Kubeconfig 文件

如果您想在其他地方管理集群,可以單獨(dú)下載指定集群的 Kubeconfig 文件。點(diǎn)擊指定集群右側(cè)下拉菜單中的 Download KubeConfig 按鈕,在彈出窗口中選擇復(fù)制或下載文件。


SSH

如果您想連接到遠(yuǎn)程主機(jī)進(jìn)行操作,您可以在集群列表頁面點(diǎn)擊集群名稱,進(jìn)入詳情頁面,選擇要連接的主機(jī),點(diǎn)擊右側(cè) Execute Shell 按鈕。


開啟 kube-explorer dashboard

您可以通過右側(cè)下拉菜單中選擇 Enable Explorer 功能來開啟 kube-explorer。


開啟后,在集群列表會增加 dashboard 跳轉(zhuǎn)鏈接按鈕,點(diǎn)擊跳轉(zhuǎn)鏈接便可以訪問 kube-explorer dashboard 頁面了。


關(guān)閉 kube-explorer dashboard

對于已經(jīng)開啟了 kube-explorer 功能的集群,可以在右側(cè)下拉菜單中選擇 Disable Explorer 功能來關(guān)閉 kube-explorer 服務(wù)。


請注意:
  • MacOS 下 Docker 不支持 Host Networking,如果在 MacOS 下使用 K3d provider,由于無法使用 Kubectl shell 功能操作 K3d 集群,所以我們無法使用 kube-explorer 功能。

CLI 使用說明

如想了解更多參數(shù),請運(yùn)行?autok3s <sub-command> --provider k3d --help?命令。

創(chuàng)建普通集群

運(yùn)行以下命令,將在宿主機(jī)使用 Docker 啟動名稱為“myk3s”的集群,并為該集群配置 1 個 master 節(jié)點(diǎn)和 1 個 worker 節(jié)點(diǎn)。

autok3s -d create -p k3d -n myk3s --master 1 --worker 1

創(chuàng)建高可用 K3s 集群

嵌入式 etcd

運(yùn)行以下命令,將在宿主機(jī)中使用 Docker 啟動一個名為“myk3s”,包含 3 個 master 節(jié)點(diǎn)的高可用 K3s 集群。

autok3s -d create -p k3d -n myk3s --master 3

添加 K3s 節(jié)點(diǎn)

請使用?autok3s join?命令為已有集群添加 K3s 節(jié)點(diǎn)。

普通集群

運(yùn)行以下命令,為“myk3s”集群添加 1 個 worker 節(jié)點(diǎn)。

autok3s -d join -p k3d -n myk3s --worker 1

高可用 K3s 集群

autok3s -d join -p k3d -n myk3s --master 1 --worker 1

刪除 K3s 集群

刪除一個 k3s 集群,這里刪除的集群為 myk3s。

autok3s -d delete -p k3d -n myk3s

查看集群列表

顯示當(dāng)前主機(jī)上管理的所有 K3s 集群列表。

autok3s list
NAME   REGION  PROVIDER  STATUS   MASTERS  WORKERS    VERSION     
myk3s          k3d       Running  1        1        v1.20.5+k3s1 

查看集群詳細(xì)信息

顯示具體的 K3s 信息,包括實例狀態(tài)、主機(jī) ip、集群版本等信息。

autok3s describe -n myk3s -p k3d

注意:如果使用不同的 provider 創(chuàng)建的集群名稱相同,describe 時會顯示多個集群信息,可以使用?-p <provider>?對 provider 進(jìn)一步過濾。例如:?autok3s describe -n myk3s -p k3d?。

Name: myk3s
Provider: k3d
Region: 
Zone: 
Master: 1
Worker: 1
Status: Running
Version: v1.20.5+k3s1
Nodes:
  - internal-ip: []
    external-ip: []
    instance-status: running
    instance-id: k3d-myk3s-agent-0
    roles: <none>
    status: Ready
    hostname: k3d-myk3s-agent-0
    container-runtime: containerd://1.4.4-k3s1
    version: v1.20.5+k3s1
  - internal-ip: []
    external-ip: []
    instance-status: running
    instance-id: k3d-myk3s-server-0
    roles: control-plane,master
    status: Ready
    hostname: k3d-myk3s-server-0
    container-runtime: containerd://1.4.4-k3s1
    version: v1.20.5+k3s1

Kubectl

群創(chuàng)建完成后, ?autok3s ?會自動合并 ?kubeconfig ?文件。

autok3s kubectl config use-context k3d-myk3s
autok3s kubectl <sub-commands> <flags>

在多個集群的場景下,可以通過切換上下文來完成對不同集群的訪問。

autok3s kubectl config get-contexts
autok3s kubectl config use-context <context>

SSH

SSH 連接到集群中的某個主機(jī),這里選擇的集群為 myk3s。

autok3s ssh -p k3d -n myk3s

進(jìn)階使用

AutoK3s 集成了一些與當(dāng)前 provider 有關(guān)的高級組件,例如私有鏡像倉庫。

配置私有鏡像倉庫

私有鏡像倉庫配置僅作用于 k3s v0.10.0 及以上版本,帶認(rèn)證的私有鏡像倉庫需要將 TLS 文件掛載到 K3d 容器中,更多的信息請查看這里。

使用私有鏡像倉庫的配置請參考以下內(nèi)容,如果您的私有鏡像倉庫需要 TLS 認(rèn)證,?autok3s?會從本地讀取相關(guān)的 TLS 文件并自動上傳到遠(yuǎn)程服務(wù)器中完成配置,您只需要完善?registry.yaml?即可。

mirrors:
  my.company.registry:
    endpoint:
      - https://my.company.registry

configs:
  my.company.registry:
    tls:
      # we will mount "my-company-root.pem" in the /etc/ssl/certs/ directory.
      ca_file: "/etc/ssl/certs/my-company-root.pem"

在運(yùn)行 ?autok3s create? 或 ?autok3s join? 時,通過傳遞 ?--registry /etc/autok3s/registries.yaml? 以使用私有鏡像倉庫,例如:

autok3s -d create \
    --provider k3d \
    --name myk3s \
    --master 1 \
    --worker 1 \
    --registry /etc/autok3s/registries.yaml
    --volumes ${HOME}/.k3d/my-company-root.pem:/etc/ssl/certs/my-company-root.pem


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號