K
ken
首页文章🕐 时间转换📋 JSON 工具🖼️ Base64 图片🔑 密码生成 Cron 表达式🔤 命名转换📱 二维码生成#️⃣ 哈希计算🔡 编码转换🔍 正则表达式⚙️ 配置文件格式转化🔐 加解密
运维监控HOT

Ubuntu 搭建 K3s 集群

2026-04-29·8 分钟阅读

记录一下 Ubuntu 上搭 K3s 集群的步骤。三台机器,一个 master 两个 node,带 NFS 存储。

系统初始化(所有节点都要做)

关闭防火墙

bash双击代码复制
systemctl stop firewalld
systemctl disable firewalld

关闭 SELinux

bash双击代码复制
# 临时
setenforce 0
# 永久
sed -i 's/enforcing/disabled/' /etc/selinux/config

关闭交换分区

bash双击代码复制
# 临时
swapoff -a
# 永久
sed -ri 's/.*swap.*/#&/' /etc/fstab

安装 Docker(所有节点装同一版本)

bash双击代码复制
sudo apt update
sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

添加 Docker 官方源:

bash双击代码复制
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

安装 Docker:

bash双击代码复制
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker version
docker compose version

配置 Docker

编辑 /etc/docker/daemon.json:

json双击代码复制
{
  "storage-driver": "overlay2",
  "storage-opts": ["overlay2.override_kernel_check=true"],
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

重启 Docker:

bash双击代码复制
sudo systemctl restart docker

配置 hosts(三台机器都要配)

bash双击代码复制
cat >> /etc/hosts <<EOF
192.168.0.146 k8s-master
192.168.0.172 k8s-node1
192.168.0.193 k8s-node2
EOF

IP 换成你实际的。

安装 K3s Master

bash双击代码复制
hostnamectl set-hostname master

--tls-san 填你的公网 IP 和内网 IP,不然证书会报错:

bash双击代码复制
curl -sfL https://get.k3s.io | sh -s - server   --cluster-init   --tls-san 8.219.59.132   --tls-san 172.21.128.220

安装完后查看节点 token 和 kubeconfig:

bash双击代码复制
cat /var/lib/rancher/k3s/server/node-token
cat /etc/rancher/k3s/k3s.yaml

配 kubeconfig:

bash双击代码复制
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config

加入 Worker 节点

每个 node 上执行,替换 MASTER_IP 和 TOKEN:

bash双击代码复制
hostnamectl set-hostname node-1
bash双击代码复制
curl -sfL https://get.k3s.io | K3S_URL=https://172.24.199.171:6443 K3S_TOKEN=K103014e2ca5d99f1aeea880fafacd2e099df65861cf949afe0569026974328cb63::server:290c5798ebabf10dd395b0ed4962fdcc sh -

安装 Helm

bash双击代码复制
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

配置 NFS 存储

服务端(master 节点)

bash双击代码复制
apt install -y nfs-kernel-server
mkdir -p /opt/nfsstore/boex
chown nobody:nogroup /opt/nfsstore/boex

编辑 /etc/exports:

code双击代码复制
/opt/nfsstore/boex 172.21.128.0/24(rw,sync,no_subtree_check,no_root_squash)

启动服务:

bash双击代码复制
systemctl restart nfs-server
systemctl enable nfs-server
systemctl enable rpcbind
showmount -e

客户端(node 节点)

bash双击代码复制
apt install -y nfs-common

kubectl 别名(可选)

bash双击代码复制
kq() {
    kubectl -n boex-system "$@"
}

加到 ~/.bashrc 里永久生效。