Docker部署MicroK8s:零基础全流程实操教程

Docker部署MicroK8s:零基础全流程实操教程

很多新手在接触Kubernetes时都会被复杂的安装过程劝退,而MicroK8s正是为解决这个问题而生——它是一个轻量级的K8s发行版,非常适合在本地或单机环境学习。
但如果你的宿主机是Windows或Mac,或者希望把K8s完全隔离在容器里,Docker部署MicroK8s就是一个干净又灵活的选择。
下面我从零开始,带你一步步完成整个部署。

什么场景下适合用Docker运行MicroK8s

  • 你需要一个独立的Kubernetes环境,但不想污染宿主机系统。
  • 你的服务器上已经安装了Docker,不想再装snap或其他包管理。
  • 想快速启动/销毁集群用于测试或CI/CD。

这种方式的优势是环境隔离快速重建,缺点是需要Docker本身支持容器嵌套(即privileged模式),所以对内核有一定要求。

环境准备与前提条件

在开始Docker部署MicroK8s之前,请确认以下条件:

  • 一台Linux服务器(Ubuntu 20.04/22.04或CentOS 7+均可),已安装Docker。
  • Docker版本建议20.10以上,安装命令:sudo apt install docker.io -y
  • 服务器内存至少2GB(推荐4GB),CPU支持虚拟化(可通过grep -E '(vmx|svm)' /proc/cpuinfo检查)。
  • 宿主机需要启用overlaybr_netfilter内核模块,并设置net.bridge.bridge-nf-call-iptables=1

如果不确定,可以参考以下快速配置:

cat <

一步步在Docker中部署MicroK8s

这里我们使用MicroK8s官方提供的Docker镜像ubuntu/microk8s,直接通过docker run启动一个容器即可。

1. 拉取镜像并启动容器

docker run -d --name microk8s \
  --privileged \
  -p 16443:16443 \
  -v /var/snap/microk8s/common/var/log:/var/log \
  -v /var/snap/microk8s/common/etc:/var/snap/microk8s/common/etc \
  ubuntu/microk8s:latest

说明

  • --privileged 是必需的,因为容器内需要运行systemd和内核功能。
  • -p 16443:16443 映射了Kubernetes API端口,方便从宿主机通过kubectl访问。
  • 挂载卷用于持久化日志和配置,可以根据需要去掉。

2. 进入容器并启动MicroK8s

docker exec -it microk8s bash
microk8s status --wait-ready

第一次启动时会自动下载组件并初始化,整个过程大约2-5分钟,等待状态变为microk8s is running即可。

3. 启用常用插件(可选)

microk8s enable dashboard dns registry

启用Dashboard后会输出访问令牌和地址,后面验证时会用到。

4. 从宿主机连接到集群

在宿主机安装kubectl(如果还没有),然后复制容器内的kubeconfig:

docker cp microk8s:/var/snap/microk8s/current/credentials/client.config ~/.kube/config
kubectl get nodes

如果能正常返回一个Ready状态的节点,说明Docker部署MicroK8s已经成功。

常见问题与避坑说明

问题1:容器启动后卡在microk8s status --wait-ready

  • 检查宿主机是否开启虚拟化,以及内核模块是否加载。
  • 尝试加大容器内存:启动时加上--memory=4g
  • 如果日志出现Failed to start snap.daemon,可能是--privileged没加。

问题2:从宿主机kubectl连不上

  • 确保容器端口映射正确(-p 16443:16443)。
  • 检查kubeconfig中的server地址:默认是127.0.0.1:16443,如果虚拟机或远程访问需要改成宿主机IP。

问题3:重启容器后MicroK8s状态丢失

  • 因为容器内MicroK8s状态保存在/var/snap中,如果启动时没有挂载持久化卷,重启后数据会丢失。建议用docker stop/start操作,不要频繁docker rm

验证MicroK8s是否运行正常

完成部署后,可以执行以下命令验证集群功能:

# 在容器内或通过远程kubectl执行
kubectl get all -A
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80
kubectl get svc

如果能看到Nginx服务正常运行,说明整个Docker部署MicroK8s流程是正确的。
也可以访问Dashboard(通过microk8s kubectl -n kube-system describe secret $(microk8s kubectl -n kube-system get secret | grep admin | cut -d ' ' -f1)获取token)来可视化查看集群状态。

以上就是从零开始用Docker运行MicroK8s的完整步骤。
如果你在操作中遇到其他问题,建议优先检查Docker版本和特权模式是否开启,这也是90%以上报错的根源。
希望这篇教程能帮你快速上手MicroK8s。

分享到:
上一篇
零基础搞定Linux服务器启动项管理
下一篇
服务器运维学习路线2026:从零搭建
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意