简体中文 / English
本文介绍了如何在一个能够运行主流操作系统(如 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
请使用autok3s create
命令在 VM 实例中创建集群。
运行以下命令,在 VM 上创建并启动创建一个名为 “myk3s”的集群,并为该集群配置 2 个 master 节点和 2 个 worker 节点。
autok3s -d create \
--provider native \
--name myk3s \
--ssh-key-path <ssh-key-path> \
--master-ips <master-ip-1,master-ip-2> \
--worker-ips <worker-ip-1,worker-ip-2>
创建高可用集群的命令分为两种,取决于您选择使用的是内置的 etcd 还是外部数据库。
运行以下命令,在 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>"
请使用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 节点的命令分为两种,取决于您选择使用的是内置的 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>"
群创建完成后,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 <sub-command> --provider native --help
命令。
AutoK3s 集成了一些与当前 provider 有关的高级组件,例如私有镜像仓库和 UI。
在运行autok3s create
或autok3s 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
该参数会启用 kubernetes/dashboard 图形界面。 访问 Token 等设置请参考 此文档 。
autok3s -d create \
... \
--ui