title: 创建腾讯云集群 description: 本文介绍了如何在腾讯云 CVM 中创建和初始化 K3s 集群,以及为已有的 K3s 集群添加节点的操作步骤。 keywords:

  • k3s中文文档
  • k3s 中文文档
  • k3s中文
  • k3s 中文
  • k3s
  • k3s教程
  • k3s中国
  • rancher
  • k3s 中文教程
  • AutoK3s
  • 创建腾讯云集群

概述

本文介绍了如何在腾讯云 CVM 中创建和初始化 K3s 集群,以及为已有的 K3s 集群添加节点的操作步骤。除此之外,本文还提供了在腾讯云 CVM 上运行 AutoK3s 的进阶操作指导,如配置私有镜像仓库、启用腾讯云 CCM(Cloud Controller Manager)和启用 UI 组件。

前置要求

设置 CAM

您需要以下权限来访问腾讯云,因此需要确保为 CVM 实例创建以下 CAM 规则。

  1. {
  2. "version": "2.0",
  3. "statement": [
  4. {
  5. "action": [
  6. "cvm:RunInstances",
  7. "cvm:DescribeInstances",
  8. "cvm:TerminateInstances",
  9. "cvm:StartInstances",
  10. "cvm:StopInstances",
  11. "cvm:DescribeInstancesStatus",
  12. "cvm:AllocateAddresses",
  13. "cvm:ReleaseAddresses",
  14. "cvm:AssociateAddress",
  15. "cvm:DisassociateAddress",
  16. "cvm:DescribeAddresses",
  17. "cvm:DescribeImages"
  18. ],
  19. "resource": "*",
  20. "effect": "allow"
  21. },
  22. {
  23. "action": ["vpc:*"],
  24. "resource": "*",
  25. "effect": "allow"
  26. },
  27. {
  28. "action": [
  29. "tag:AddResourceTag",
  30. "tag:DescribeResourcesByTags",
  31. "tag:AttachResourcesTag"
  32. ],
  33. "resource": "*",
  34. "effect": "allow"
  35. },
  36. {
  37. "action": ["ccs:Describe*", "ccs:CreateClusterRoute"],
  38. "resource": "*",
  39. "effect": "allow"
  40. },
  41. {
  42. "action": ["clb:*"],
  43. "resource": "*",
  44. "effect": "allow"
  45. }
  46. ]
  47. }

设置安全组

CVM 实例至少需要应用以下安全组规则:

  1. Rule Protocol Port Source Description
  2. InBound TCP 22 ALL SSH Connect Port
  3. InBound TCP 6443 K3s agent nodes Kubernetes API
  4. InBound TCP 10250 K3s server & agent Kubelet
  5. InBound UDP 8472 K3s server & agent (Optional) Required only for Flannel VXLAN
  6. InBound TCP 2379,2380 K3s server nodes (Optional) Required only for embedded ETCD
  7. OutBound ALL ALL ALL Allow All

UI 使用说明

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

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

快速创建集群

您可以使用快速创建功能,在指定的云提供商服务中,快速启动一个K3s集群。

以下图为例,我们将在 tencent CVM 使用默认配置创建一个单节点的 K3s 集群,CVM 虚拟机会在 ap-guangzhou 区域中创建。

- 创建腾讯云集群 - 图1

表 1:快速创建参数

参数 说明 默认值
Provider 云提供商名称 tencent
Name K3s集群名称
Master Master 节点数量 1
Worker Worker 节点数量 0
Access Key 云提供商的Access Key 访问密钥
Secret Key 云提供商的Secret Key 访问密钥
Region 虚拟机所在的区域(在快速创建页面不允许编辑默认区域,您可以通过模板功能修改默认参数配置) ap-guangzhou
Zone 虚拟机所在的地区 ap-guangzhou-3

自定义参数创建

如果您不想使用默认的配置,可以点击 Advance 按钮,进入自定义参数页面进行更多参数的设置。 或者您可以在集群列表页点击 Create 按钮进入自定义参数页面进行更多参数的设置。

使用 tencent 云提供商创建 K3s 集群的自定义参数配置分为四项,云供应商访问凭证、云提供商对应实例配置、K3s集群配置、高级选项。接下来对每个配置项进行详细说明。

云提供商访问凭证

- 创建腾讯云集群 - 图2

表 2:云提供商访问凭证参数

参数 说明
Provider 云提供商名称
Name K3s集群名称
Access Key 云提供商的Access Key 访问密钥
Secret Key 云提供商的Secret Key 访问密钥

实例配置

实例配置主要配置的内容为对应云提供商虚拟机的配置,例如实例运行区域、地区、使用的操作系统类型、实例规格、网络配置等信息。

- 创建腾讯云集群 - 图3

表 3:实例配置参数

参数 说明 默认值
Region 腾讯云 CVM 区域 ap-guangzhou
Zone 腾讯云 CVM 地区 ap-guangzhou-3
Instance Type 腾讯云 CVM 实例规格 SA1.MEDIUM4(2vCPU/4GiB)
Image 腾讯云 CVM 系统映像 ID img-pi0ii46r(Ubuntu 18.04)
Disk Category 根磁盘卷类型 CLOUD_SSD
Disk Size 根磁盘卷大小 50(GiB)
VPC ID VPC ID(如果您不设置,AutoK3s 将为您创建名称为 autok3s-tencent-vpc 的VPC)
Subnet ID 子网 ID(如果您不设置,AutoK3s会自动在 autok3s-tencent-vpc 下创建默认子网)
Internet Max Bandwidth Out 网络带宽 5(MB)
Security Group Ids 安全组(如果您不选择任何安全组,AutoK3s 将为您自动创建名称为 autok3s 的默认的安全组)
EIP 是否使用弹性公网IP false
Keypair Id 密钥对名称(如果您不设置密钥对,AutoK3s 将自动为您生成一个密钥对)
SSH User SSH 用户 ubuntu
SSH Port SSH 端口 22
SSH Key Path 如果您选择了已有的密钥对,需要指定SSH 私钥目录,如果您使用AutoK3s 自动生成的密钥,这里可以不填写任何内容
SSH Key Passphrase 如果您的私钥需要密码验证,请在这里输入密码
SSH Password 如果您使用Password连接到虚拟机,请输入密码
SSH Agent Auth 如果您配置 SSH 代理程序,可以开启此项配置 false
SSH Cert Path 如果您配置了 ssh certificate,在这里您需要将 certificate path 传入进来,以保证 AutoK3s 可以通过ssh连接到远程虚拟机
Tags 虚拟机标签

K3s 参数配置

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

- 创建腾讯云集群 - 图4

表 4:K3s 配置参数

参数 说明 默认值
K3s Channel 用于获取 K3s 下载 URL 的通道。选项包括:stable, latest, testing stable
K3s Version 安装的 K3s 版本,如果设置则覆盖 Channel 选项
Cluster 启用嵌入式 DB 高可用 K3s(即开启 --cluster-init 设置) false
Datastore 指定 etcd、Mysql、Postgres 或 Sqlite(默认)数据源名称
K3s Install Script K3s 安装脚本 https://rancher-mirror.rancher.cn/k3s/k3s-install.sh
Master Master 节点数量
Master Extra Args Master 节点额外参数设置,例如 --no-deploy traefik
Worker Worker 节点数量
Worker Extra Args Worker 节点额外参数设置,例如 --node-taint key=value:NoExecute
IP K3s server IP,用于加入已有集群
Token 用于将server或agent加入集群的共享secret,如果不设置,会自动生成一个Token
Manifests 自动部署应用清单目录,这里支持设置某个manifest文件或者包含多个manifest文件的目录路径(仅支持一层目录),具体功能可查看这里
TLS Sans 在 TLS 证书中添加其他主机名或 IP 作为主题备用名称,具体功能可查看这里
Registry 私有镜像仓库配置

高级选项

配置要开启的 UI 组件(kubernetes-dashboard/kube-explorer),以及是否部署腾讯云 Cloud Provider。

- 创建腾讯云集群 - 图5

表 4:高级选项

参数 说明 默认值
UI 开启的 UI 组件(Kubernetes Dashboard/kube-explorer)
Cloud Controller Manager 是否部署腾讯云 Cloud Provider false
Network Route Table Name 如果开启 CCM,需要配置路由名称,配置方法请参考这里

集群模板

您可以使用模板功能,提前预置好常用的集群模板,每次创建集群时可以用模板参数进行填充,极大精简了重复操作。一次编写,多次运行,提升效率。

创建集群模板的参数与上面描述的自定义参数创建集群的表单内容相同,在这里不做赘述。

- 创建腾讯云集群 - 图6

您可以选择最常用的模板,点击右侧下拉框中的 Set Default 按钮,将模板设置为默认模板。

- 创建腾讯云集群 - 图7

设置为默认模板后,您可以通过快速创建功能一键部署常用配置的 K3s 集群。

- 创建腾讯云集群 - 图8

如果您想使用其他模板创建集群,您还可以在快速创建页面的右上角,或者在自定义创建集群的右上角筛选模板,点击 Fill Form 按钮后,会自动根据模板内容填充表单。

- 创建腾讯云集群 - 图9

集群管理

您可以在集群列表页查看和管理使用 AutoK3s 创建的 K3s 集群。

添加节点

选中您要添加节点的集群,点击右侧下拉菜单中的 Join Node 按钮,在弹出的窗口中设置要添加的节点数量即可。

- 创建腾讯云集群 - 图10

Kubectl

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

- 创建腾讯云集群 - 图11

SSH

如果您想连接到远程主机进行操作,您可以在集群列表页面点击集群名称,进入详情页面,选择要连接的主机,点击右侧 Execute Shell 按钮。

- 创建腾讯云集群 - 图12

开启 kube-explorer dashboard

您可以在创建集群时,通过 Additional Options 选择 explorer 选项开启 kube-explorer 功能。

- 创建腾讯云集群 - 图13

也可以通过右侧下拉菜单中选择 Enable Explorer 功能来开启 kube-explorer。

- 创建腾讯云集群 - 图14

开启后,在集群列表会增加 dashboard 跳转链接按钮,点击跳转链接便可以访问 kube-explorer dashboard 页面了。

- 创建腾讯云集群 - 图15

关闭 kube-explorer dashboard

对于已经开启了 kube-explorer 功能的集群,可以在右侧下拉菜单中选择 Disable Explorer 功能来关闭 kube-explorer 服务。

- 创建腾讯云集群 - 图16

CLI 使用说明

在使用命令之前,您需要设置访问凭证。

  1. export CVM_SECRET_ID='<secret-id>'
  2. export CVM_SECRET_KEY='<secret-key>'

如想了解更多参数,请运行autok3s <sub-command> --provider tencent --help命令。

创建普通集群

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

  1. autok3s -d create -p tencent --name myk3s --master 1 --worker 1

创建高可用 K3s 集群

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

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

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

  1. autok3s -d create -p tencent --name myk3s --master 3 --cluster

外部数据库

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

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

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

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

  1. autok3s -d create -p tencent --name myk3s --master 2 --datastore "mysql://<user>:<password>@tcp(<ip>:<port>)/<db>"

添加 K3s 节点

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

普通集群

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

  1. autok3s -d join --provider tencent --name myk3s --worker 1

高可用 K3s 集群

  1. autok3s -d join --provider tencent --name myk3s --master 2 --worker 1

删除 K3s 集群

删除一个 k3s 集群,这里删除的集群为 myk3s。

  1. autok3s -d delete --provider tencent --name myk3s

查看集群列表

显示当前主机上管理的所有 K3s 集群列表。

  1. autok3s list
  1. NAME REGION PROVIDER STATUS MASTERS WORKERS VERSION
  2. myk3s cn-hangzhou alibaba Running 2 2 v1.19.5+k3s2
  3. myk3s ap-nanjing tencent Running 2 1 v1.19.5+k3s2

查看集群详细信息

显示具体的 k3s 信息,包括实例状态、主机 ip、集群版本等信息。

  1. autok3s describe -n <clusterName> -p tencent

注意:如果使用不同的 provider 创建的集群名称相同,describe 时会显示多个集群信息,可以使用-p <provider>对 provider 进一步过滤。例如 autok3s describe -n myk3s -p tencent

  1. Name: myk3s
  2. Provider: tencent
  3. Region: ap-nanjing
  4. Zone: ap-nanjing-1
  5. Master: 2
  6. Worker: 1
  7. Status: Running
  8. Version: v1.19.5+k3s2
  9. Nodes:
  10. - internal-ip: x.x.x.x
  11. external-ip: x.x.x.x
  12. instance-status: RUNNING
  13. instance-id: xxxxx
  14. roles: etcd,master
  15. status: Ready
  16. hostname: xxxx
  17. container-runtime: containerd://1.4.3-k3s1
  18. version: v1.19.5+k3s2
  19. - internal-ip: x.x.x.x
  20. external-ip: x.x.x.x
  21. instance-status: RUNNING
  22. instance-id: xxxxx
  23. roles: <none>
  24. status: Ready
  25. hostname: xxxxxx
  26. container-runtime: containerd://1.4.3-k3s1
  27. version: v1.19.5+k3s2
  28. - internal-ip: x.x.x.x
  29. external-ip: x.x.x.x
  30. instance-status: RUNNING
  31. instance-id: xxxxxx
  32. roles: etcd,master
  33. status: Ready
  34. hostname: xxxxx
  35. container-runtime: containerd://1.4.3-k3s1
  36. version: v1.19.5+k3s2

Kubectl

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

  1. autok3s kubectl config use-context myk3s.ap-nanjing.tecent
  2. autok3s kubectl <sub-commands> <flags>

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

  1. autok3s kubectl config get-contexts
  2. autok3s kubectl config use-context <context>

SSH

SSH 连接到集群中的某个主机,这里选择的集群为 myk3s。

  1. autok3s ssh --provider tencent --name myk3s

进阶使用

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

配置私有镜像仓库

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

  1. autok3s -d create -p tencent --name myk3s --master 3 --registry /etc/autok3s/registries.yaml

使用私有镜像仓库的配置请参考以下内容,如果您的私有镜像仓库需要 TLS 认证,autok3s会从本地读取相关的 TLS 文件并自动上传到远程服务器中完成配置,您只需要完善registry.yaml即可。

  1. mirrors:
  2. docker.io:
  3. endpoint:
  4. - "https://mycustomreg.com:5000"
  5. configs:
  6. "mycustomreg:5000":
  7. auth:
  8. username: xxxxxx # this is the registry username
  9. password: xxxxxx # this is the registry password
  10. tls:
  11. cert_file: # path to the cert file used in the registry
  12. key_file: # path to the key file used in the registry
  13. ca_file: # path to the ca file used in the registry

启用腾讯云 CCM(Cloud Controller Manager)

如果启用 CCM,您需要提前创建好集群路由表,以便 POD 可以通过 VPC 正常通信,并将路由表的名称通过--router参数传入。

autok3s 默认使用的 cluster cidr 为10.42.0.0/16,您需要为该网段创建路由表。

您可以通过route-ctl(又名“routecontroller”)创建。

  1. export QCloudSecretId=************************************
  2. export QCloudSecretKey=********************************
  3. export QCloudCcsAPIRegion=<your-region>
  4. ./route-ctl route-table create --route-table-cidr-block 10.42.0.0/16 --route-table-name <your-route-table-name> --vpc-id <your-vpc-id>

接下来将上面创建好的<your-route-table-name>作为--router参数。这里注意—vpc 也要使用创建 router 的 vpc id。

  1. autok3s -d create \
  2. ... \
  3. --cloud-controller-manager --router <your-route-table-name> --vpc <your-vpc-id> --subnet <your-subnet-id>

在您删除集群后,集群路由不会自动删除,您可以使用route-ctl(又名“routecontroller”)手动删除。

启用 UI 组件

AutoK3s 支持两种 UI 组件,包括 kubernetes-dashboardkube-explorer

开启 kubernetes dashboard
  1. autok3s -d create -p aws \
  2. ... \
  3. --enable dashboard

访问 Token 等设置请参考 此文档

开启 kube-explorer
  1. autok3s explorer --context <context> --port 9999

您可以通过 http://127.0.0.1:9999 访问 kube-explorer dashboard 页面。