Docker部署K3s:零基础搭建轻量Kubernetes集
准备工作:一台装了Docker的Linux服务器
使用Docker部署K3s之前,先确认你的服务器上已经安装了Docker。
如果你还没有Docker,可以参考官方文档用一条命令安装(这里不展开)。
K3s是Rancher出品的轻量级Kubernetes发行版,适合边缘计算和资源敏感的场景。
通过Docker运行K3s可以省去系统包管理的步骤,一切在容器里完成。
检查项清单:
- 操作系统:Ubuntu 20.04+ 或 CentOS 7+(其他Linux发行版同理)
- Docker版本:20.10以上(执行
docker --version查看) - 网络:开放6443端口(K3s API Server)和对外通信能力
- 内存:server节点建议至少2GB,agent节点1GB即可
部署K3s Server节点
我们先启动一个K3s Server容器,它会自动创建etcd和API Server。
打开终端,输入以下命令:
docker run -d --restart=unless-stopped \
--name k3s-server \
-p 6443:6443 \
-v /var/lib/rancher/k3s:/var/lib/rancher/k3s \
rancher/k3s server
参数说明:
-d后台运行--restart=unless-stopped退出后自动重启-p 6443:6443映射API端口到宿主机-v挂载数据卷,保存集群配置和证书,这样容器删除后数据不丢
启动后,需要获取管理凭据。
进入容器内部复制kubeconfig文件到宿主机:
docker exec k3s-server cat /etc/rancher/k3s/k3s.yaml > ~/.kube/config
然后修改配置里的server地址,把 127.0.0.1 换成你服务器的公网IP或域名。
接着就可以用 kubectl get nodes 验证,应该能看到一个Ready状态的节点。
添加Agent节点(Worker)
Agent节点同样用容器运行,但需要知道Server的Token。
先获取Token:
docker exec k3s-server cat /var/lib/rancher/k3s/server/node-token
复制输出的Token字符串(类似 K10xxxxxxxx)。
然后启动Agent容器:
docker run -d --restart=unless-stopped \
--name k3s-agent \
--link k3s-server \
rancher/k3s agent \
--server https://k3s-server:6443 \
--token <你刚才获取的Token>
注意:--link 让agent能通过容器名解析server的IP。
如果你用多个agent,重复执行上面的命令,每次改一下 --name 即可。
几分钟后回到Server节点,执行 kubectl get nodes,你应该看到两个节点都显示Ready。
避坑指南 & 常见问题
Q:Agent节点连不上Server怎么办?
- 先检查Server容器的6443端口是否被防火墙阻挡。简单测试:在agent服务器上执行
curl -k https://,如果返回类似:6443 403 Forbidden说明可以通。 - 如果用
--link无效(Docker网络模式限制),可以改用--add-host k3s-server:,或者直接用实际的宿主机IP替换k3s-server。
Q:如何修改Server启动参数?
- 在
docker run的server命令后追加参数,例如--disable-agent可以让server不做worker。完整参数参考K3s官方文档。
Q:如何查看容器日志?
docker logs k3s-server或docker logs k3s-agent,如果启动失败常见原因是端口占用或磁盘权限。
Q:需要持久化存储怎么办?
- 已经通过
-v挂载了数据目录,但Pod的持久卷需要额外配置,建议先了解K3s默认的Local Path Provisioner。
效果验证:部署一个测试应用
创建一个简单的Deployment来验证集群是否正常工作:
kubectl create deployment nginx-test --image=nginx
kubectl expose deployment nginx-test --port=80 --type=NodePort
kubectl get svc
访问 http://<任意节点IP>:,看到Nginx欢迎页面就说明集群完全可用。
总结
通过Docker部署K3s,你只需要两条命令就能获得一个功能完整的Kubernetes集群。
这种方式特别适合开发和测试环境,也方便快速体验K3s特性。
如果你在生产环境使用,建议加上更多的卷映射和资源限制。
遇到任何异常,优先检查容器日志和服务端口,大部分问题都能靠 docker logs 定位。
记住,K3s的轻量和兼容性让它成为入门Kubernetes的最佳选择之一。