博主头像

人間になりたい!!!!!


皖ICP备2025096275号

K3s 专题向研究 ep1: 搭建 Master && Worker

前言

由于项目的业务需要, 负载上来之后单个 Docker 容器撑不住, 遂决定开始研究 Kubernets, 对容器进行一个集群化. 在询问 AI 相关建议后, AI 建议我从轻量级的 Kubernets 发行版 K3s 入手. 于是这篇文章将会记录博主在 Proxmox VE 9.1.6 服务器上从零开始搭建 K3s 节点.

由于博主刚开始研究 K3s, 故本文可能会出现的问题包括但不限于各种低级错误, 十分不严谨的专业用语, 还请各路大佬轻喷

最低搭建需求

  • OS: Proxmox VE, VMware ESXi 等虚拟化系统
  • CPU: 核心数 >= 8
  • Mem: >= 12GB
  • Storage: >= 50GB

开整

1. 创建 K3s 虚拟机模板

1.1 创建 Cloud-Init 虚拟机

这里推荐使用 Debian 13 (trixie)
  • 根据需求和 CPU 架构选定发行版后, 登录服务器 SSH 进行下载
wget https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2
  • 下载完成后, 使用 qm 工具创建虚拟机
qm create <NewVMID> --name <NewVMName> --memory <VMMem> --net0 virtio,bridge=<TargetBridge> \
    --cores "<CPUCores>" --cpu host --ostype l26 \
    --scsihw virtio-scsi-pci --serial0 socket --vga serial0
  • <NewVMID> 模板虚拟机 ID
  • <NewVMName> 模板虚拟机名称
  • <VMMem> 模板虚拟机内存大小 (单位: MB)
  • <TargetBridge> 目标桥接网卡
  • <CPUCores> 模板虚拟机分配的核心数量

示例:

qm create 300 --name K3s-Templete --memory 2048 --net0 virtio,bridge=vmbr0 \
    --cores "8" --cpu host --ostype l26 \
    --scsihw virtio-scsi-pci --serial0 socket --vga serial0
  • 将下载好的镜像导入该 VM
qm importdisk $VM_ID "</path/to/image.qcow2>" "<StoragePool>" --format qcow2
  • </path/to/image.qcow2> 先前下载的 qcow2 镜像路径
  • <StoragePool> 导入的目标存储池

注意记录导入后的卷 ID

  • 挂载磁盘与 Cloud-Init 驱动器
qm set <NewVMID> --scsi0 "<VolumeID>"
  • <VolumeID> 先前导入的卷 ID
  • 添加 Cloud-Init 驱动器
qm set <NewVMID> --ide2 "<StoragePool>:cloudinit"
  • 设置引导顺序与显示配置
qm set <NewVMID> --boot order=scsi0
  • 配置基础 Cloud-Init 模板
qm set <NewVMID> --ipconfig0 ip=dhcp
  • 如果到此为止都没有任何错误, 那么 Cloud-Init 虚拟机创建完成

1.2 基础虚拟机配置

  • 进入虚拟机 Cloud-Init 配置, 填写默认登录用户名与密码, SSH, 网络设置等等

Cloud-Init Config
Cloud-Init Config

  • 启动该虚拟机, 在 Proxmox VE 网页端选择 xterm.js 终端

xterm.js
xterm.js

  • 等待启动完成后登录, 先对虚拟机软件包进行换源&&更新
此处选择中科大源
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
apt update
apt upgrade

注: 如果该指令无法换源, 您还可以手动换源

mv /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list.d/debian.sources.bak
vim /etc/apt/sources.list.d/debian.sources

然后输入

Types: deb
URIs: http://mirrors.ustc.edu.cn/debian
Suites: trixie trixie-updates trixie-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: http://mirrors.ustc.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
  • 执行完成后关闭虚拟机, 右键该虚拟机, 将其转换为模板

Convert to template
Convert to template

  • 转换完成后, K3s 虚拟机模板就创建完成了

2. 搭建 K3s 虚拟机

2.1 搭建 K3s Master

  • 右键刚刚创建好的模板, 选择 Clone

Clone
Clone

  • 在新弹出的对话框中输入虚拟机基本信息, 然后将 Mode 改为 Full Clone

Clone VM Template
Clone VM Template

  • 输入完成后单击 Clone, 等待克隆完成

由于 Cloud-Init 磁盘默认大小为 3GB, 因此我们这里需要根据不同需求来增加磁盘大小

  • 进入虚拟机的 Hardware 选项卡, 找到 Hard Disk (scsi0), 选定并单击 Disk Action --> Resize. 在这里输入你想要 增加 的磁盘空间.

同时你可以根据你的需求来更改 CPU/内存 等配置, 这里给出一张表格供参考

集群规模 (节点数)推荐的 Master 节点配置 (vCPU/内存/磁盘)
0 -1004 Cores / 8 GB / 50 GB SSD or up
100 - 3008 Cores / 16 GB / 50 GB SSD or up
300 - 50016 Cores / 32 GB / 100 GB SSD or up
500 - 100032 Cores / 64 GB / 100 GB SSD or up
  • 更改完配置后, 启动虚拟机并打开终端, 安装 K3s Master 相关组件
# 使用官方脚本一键安装,并指定节点名为master
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--node-name k3s-master" sh -s -

# 等待安装完成,检查服务状态
sudo systemctl status k3s

# 获取用于添加 Worker 节点 token
sudo cat /var/lib/rancher/k3s/server/node-token
如果您启用了防火墙, 请务必确保 6443/TCP, 8472/UDP, 10250/TCP 端口保持开放

至此, Master 节点配置完成

2.2 搭建 K3s Worker

  • 再次 Clone 一份刚才创建好的模板, 修改配置信息并启动虚拟机, 进入控制台

Clone VM Template
Clone VM Template

  • 输入以下指令部署 K3s Worker
curl -sfL https://get.k3s.io | K3S_URL=https://<MasterIP>:6443 K3S_TOKEN=<MasterToken> INSTALL_K3S_EXEC="--node-name k3s-worker1" sh -s -
  • <MasterIP> Master 虚拟机的 IP 地址
  • <MasterToken> 先前安装时获取的 Token
  • 安装如果未报错, 则证明成功

3. 验证

  • 返回 Master 节点的控制台, 输入指令查看节点状态
sudo kubectl get nodes
如果节点状态为 Ready, 则节点添加成功并且就绪
root@K3s-Master:~# sudo kubectl get nodes
NAME          STATUS   ROLES           AGE   VERSION
k3s-master    Ready    control-plane   20h   v1.34.6+k3s1
k3s-worker1   Ready    <none>          20h   v1.34.6+k3s1

至此, K3s 的 Master 与 Worker 均部署完成


后记

本人非专业 Kubernets 运维, 如有错误和疏漏, 欢迎各位大佬指出. 如果觉得文章不错, 请分享给有需要的人. 感谢阅读.

K3s 专题向研究 ep1: 搭建 Master && Worker
https://blog.nanami.tech/archives/269/
本文作者 Madobi Nanami
发布时间 2026-04-09
许可协议 CC BY-NC-SA 4.0
发表新评论