Skip to main content

创建Native集群

概述#

本文介绍了如何在一个能够运行主流操作系统(如 Ubuntu、Debian、Raspbian 等)的虚拟机(VM)中创建和初始化 K3s 集群,以及为已有的 K3s 集群添加节点的操作步骤。除此之外,本文还提供了在 VM 上运行 AutoK3s 的进阶操作指导,如配置私有镜像仓库和启用 UI 组件。

前置要求#

虚拟机要求#

提供一个运行主流操作系统(如 Ubuntu、Debian、Raspbian 等)的 VM,并为它们注册或设置SSH密钥/密码

网络#

VM 实例至少需要应用以下入站及出站规则:

Rule Protocol Port Source Description
InBound TCP 22 ALL SSH Connect Port
InBound TCP 6443 K3s agent nodes Kubernetes API
InBound TCP 10250 K3s server & agent Kubelet
InBound TCP 8999 K3s dashboard (Optional) Required only for Dashboard UI
InBound UDP 8472 K3s server & agent (Optional) Required only for Flannel VXLAN
InBound TCP 2379,2380 K3s server nodes (Optional) Required only for embedded ETCD
OutBound ALL ALL ALL Allow All

UI 使用说明#

接下来我们将基于 AutoK3s 本地 UI 介绍如何使用 AutoK3s 工具,在任意主机上创建和管理 K3s 集群。如果您想了解 CLI 的使用,请移步到 CLI 使用说明

您可以通过快速体验中的描述,通过 Docker 或者 CLI 启动本地 UI,打开浏览器,访问目标端口 8080 即可。

自定义参数创建#

您可以在集群列表页点击 Create 按钮进入自定义参数页面进行更多参数的设置。

使用 Native 模式创建 K3s 集群的自定义参数配置分为三项,VM 配置、K3s集群配置、高级选项。接下来对每个配置项进行详细说明。

VM 配置#

实例配置主要配置的内容为 VM 的连接信息。

表 3:实例配置参数

参数说明默认值
Master IPsMaster 主机 IP 列表
Worker IPsWorker 主机 IP 列表
SSH UserSSH 用户root
SSH PortSSH 端口22
SSH Key PathSSH 私钥目录~/.ssh/id_rsa
SSH Key Passphrase如果您的私钥需要密码验证,请在这里输入密码
SSH Password如果您使用Password连接到虚拟机,请输入密码
SSH Agent Auth如果您配置 SSH 代理程序,可以开启此项配置false
SSH Cert Path如果您配置了 ssh certificate,在这里您需要将 certificate path 传入进来,以保证 AutoK3s 可以通过ssh连接到远程虚拟机

K3s 参数配置#

K3s 参数配置项主要对 K3s 集群进行设置,例如是否部署 HA 模式、K3s 安装版本等。

表 4:K3s 配置参数

参数说明默认值
K3s Channel用于获取 K3s 下载 URL 的通道。选项包括:stable, latest, testingstable
K3s Version安装的 K3s 版本,如果设置则覆盖 Channel 选项
Cluster启用嵌入式 DB 高可用 K3s(即开启 --cluster-init 设置)false
Datastore指定 etcd、Mysql、Postgres 或 Sqlite(默认)数据源名称
K3s Install ScriptK3s 安装脚本,对于中国区用户,可以通过下拉菜单选择 rancher-mirror 脚本来安装https://get.k3s.io
Master Extra ArgsMaster 节点额外参数设置,例如 --no-deploy traefik
Worker Extra ArgsWorker 节点额外参数设置,例如 --node-taint key=value:NoExecute
IPK3s server IP,用于加入已有集群
Token用于将server或agent加入集群的共享secret,如果不设置,会自动生成一个Token
Registry私有镜像仓库配置

高级选项#

配置是否开启 UI(kubernetes-dashboard)。

表 4:高级选项

参数说明默认值
UI是否部署 Kubernetes Dashboardfalse

集群模板#

Native 模式不支持集群模板功能。

集群管理#

Native 模式不支持集群列表管理功能,但您可以使用 Kubectl 功能操作和管理集群资源。

Kubectl#

如果您想操作 K3s 集群数据,可以点击右上角 Launch Kubectl 按钮,在下拉框中选择要操作的集群后,便可以在 UI 控制台操作选中的集群了。

CLI 使用说明#

更多参数请运行autok3s <sub-command> --provider native --help命令。

创建普通集群#

运行以下命令,在 VM 上创建并启动创建一个名为 “myk3s”的集群,并为该集群配置 1 个 master 节点和 1 个 worker 节点。

autok3s -d create \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--master-ips <master-ip-1> \
--worker-ips <worker-ip-1>

创建高可用 K3s 集群#

创建高可用集群的命令分为两种,取决于您选择使用的是内置的 etcd 还是外部数据库。

嵌入式 etcd(k3s 版本 >= 1.19.1-k3s1)#

运行以下命令,在 VM 上创建并启动创建了一个名为“myk3s”的高可用 K3s 集群。

autok3s -d create \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--master-ips <master-ip-1,master-ip-2,master-ip-3> \
--cluster

外部数据库#

在高可用模式下使用外部数据库,需要满足两个条件:

  • master 节点的数量不小于 1。
  • 需要提供外部数据库的存储路径。

所以在以下的代码示例中,我们通过--master-ips <master-ip-1,master-ip-2>指定 master 节点数量为 2,满足 master 节点的数量不小于 1 这个条件;且通过--datastore "PATH"指定外部数据库的存储路径,提供外部数据库的存储路径。

运行以下命令,在 VM 上创建并启动创建了一个名为“myk3s”的高可用 K3s 集群:

autok3s -d create \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--master-ips <master-ip-1,master-ip-2> \
--datastore "mysql://<user>:<password>@tcp(<ip>:<port>)/<db>"

添加 K3s 节点#

请使用autok3s join命令为已有集群添加 K3s 节点。

普通集群#

运行以下命令,为“myk3s”集群添加 2 个 worker 节点。

autok3s -d join \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--ip <existing-k3s-server-public-ip> \
--worker-ips <worker-ip-2,worker-ip-3>

高可用 K3s 集群#

添加 K3s 节点的命令分为两种,取决于您选择使用的是内置的 etcd 还是外部数据库。

嵌入式 etcd#

运行以下命令,为高可用集群(嵌入式 etcd: k3s 版本 >= 1.19.1-k3s1)“myk3s”集群添加 2 个 master 节点。

autok3s -d join \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--ip <existing-k3s-server-public-ip> \
--master-ips <master-ip-2,master-ip-3>
外部数据库#

运行以下命令,为高可用集群(外部数据库)“myk3s”集群添加 2 个 master 节点。值得注意的是,添加节点时需要指定参数--datastore,提供外部数据库的存储路径。

autok3s -d join \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--ip <existing-k3s-server-public-ip> \
--master-ips <master-ip-2,master-ip-3> \
--datastore "mysql://<user>:<password>@tcp(<ip>:<port>)/<db>"

Kubectl#

群创建完成后,autok3s 会自动合并 kubeconfig 文件。

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

在多个集群的场景下,可以通过切换上下文来完成对不同集群的访问。

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

进阶使用#

AutoK3s 集成了一些与当前 provider 有关的高级组件,例如私有镜像仓库和 UI。

配置私有镜像仓库#

在运行autok3s createautok3s join时,通过传递--registry /etc/autok3s/registries.yaml参数以使用私有镜像仓库,例如:

autok3s -d create \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--master-ips <master-ip-1> \
--worker-ips <worker-ip-1,worker-ip-2> \
--registry /etc/autok3s/registries.yaml

使用私有镜像仓库的配置请参考以下内容,如果您的私有镜像仓库需要 TLS 认证,autok3s会从本地读取相关的 TLS 文件并自动上传到远程服务器中完成配置,您只需要完善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

启用 UI 组件#

该参数会启用 kubernetes/dashboard 图形界面。 访问 Token 等设置请参考 此文档

autok3s -d create \
... \
--ui
Last updated on by JacieChao