MicroK8s单机容器编排部署

今天聊一个很适合个人学习容器编排的工具——MicroK8s
它是 Canonical 公司推出的轻量级 Kubernetes 发行版,所有组件打包在一个 snap 包内,安装简单、资源占用低,非常适合在一台服务器上体验容器编排的核心流程。
下面我会从零开始,逐步指导你完成单机 MicroK8s 的部署和验证。

准备一台干净的 Ubuntu 服务器

MicroK8s 官方推荐使用 Ubuntu 18.04 及以上版本,其他 Linux 发行版也能装但问题较多。
如果你手头没有 Ubuntu,可以考虑用虚拟机或云服务器(比如腾讯云轻量应用服务器)创建一个 Ubuntu 20.04 实例。
最低配置要求:

  • 2 核 CPU
  • 2 GB 内存(为了跑示例应用,建议 4 GB)
  • 20 GB 硬盘
  • 能正常访问 snap 仓库(国内服务器可能需要配置 proxy)

确认系统版本:

lsb_release -a

如果输出中有 "Ubuntu" 且版本号 >= 18.04,就满足条件。

安装 MicroK8s 并启动核心组件

MicroK8s 通过 snap 包管理工具安装,Ubuntu 默认自带 snap。
打开终端执行:

sudo snap install microk8s --classic --channel=stable

安装过程会下载约 200 MB 的压缩包,根据网速等待 1-5 分钟。
安装完成后,将当前用户加入 microk8s 用户组,这样就不用每次输 sudo

sudo usermod -a -G microk8s $USER
newgrp microk8s

注意newgrp 命令会开启一个新 shell,之后的操作都在这个 shell 里进行。
你也可以直接注销重新登录。

下面启用几个常用插件:DNS(服务发现)、Dashboard(Web 控制台)和 Registry(本地镜像仓库):

microk8s enable dns dashboard registry

启用插件会拉取相应镜像,初次启用耗时稍长。
看到类似 "Enabling DNS ... done" 的提示就表示成功。

验证集群状态并部署第一个应用

先检查节点是否正常:

microk8s kubectl get nodes

正常会输出类似:

NAME       STATUS   ROLES    AGE   VERSION
ubuntu     Ready       1m    v1.28.2

如果 STATUS 显示 Ready,说明集群已就绪。

现在部署一个最简单的 Nginx 应用,用 kubectl create deployment 命令:

microk8s kubectl create deployment nginx-demo --image=nginx:alpine

这条命令会在集群中创建一个名为 nginx-demo 的 Deployment,管理一个运行 nginx:alpine 镜像的 Pod。
查看 Pod 状态:

microk8s kubectl get pods

等待约 30 秒,当 READY 列显示 1/1,STATUS 为 Running 时,说明应用已成功运行。

暴露服务并访问测试

Pod 默认只能在集群内部访问,想从外部(比如你的浏览器)访问 Nginx,需要创建一个 Service 并指定类型为 NodePort:

microk8s kubectl expose deployment nginx-demo --type=NodePort --port=80 --name=nginx-svc

查看 Service 分配的外部端口:

microk8s kubectl get svc nginx-svc

输出中会有一列 "PORT(S)",例如 80:3xxxx/TCP,其中 3xxxx 就是 NodePort 端口(范围 30000-32767)。
记下这个端口。

在宿主机上访问(如果是在云服务器,注意安全组放行该端口):

curl http://localhost:3xxxx

或者直接用浏览器打开 http://服务器公网IP:3xxxx,应该能看到 Nginx 的欢迎页。

避坑指南与常见问题解答

坑1:snap 下载太慢或超时
国内网络访问 snap 商店不稳定。解决方法:配置 snap 代理或更换源。临时方案:用手机热点重试。长期方案:修改 /etc/environment 添加 SNAP_STORE=http://your-proxy(需自建 proxy)。

坑2:内存不足导致 Pod 调度失败
MicroK8s 默认不限制 Pod 资源,但如果宿主机内存小于 2 GB,系统会报 "Insufficient memory"。可以在安装前用 free -h 查看总内存,低于 2 GB 建议升级配置或关闭其他服务。

坑3:Dashboard 无法访问
开启 Dashboard 后,默认只能通过 token 登录。获取 token 命令:

microk8s kubectl -n kube-system describe secret $(microk8s kubectl -n kube-system get secret | grep admin | awk '{print $1}') | grep token: | awk '{print $2}'

然后将 token 粘贴到 Dashboard 登录页。
如果忘记端口,用 microk8s kubectl -n kube-system get svc kubernetes-dashboard 查看 NodePort。

坑4:关机重启后 MicroK8s 未自动启动
MicroK8s 默认作为 systemd 服务运行,但有时重启后 kubectl 命令报连接拒绝。执行:

sudo microk8s start

等待数秒即可恢复。

验证整体功能并清理环境

完成上述步骤后,建议运行 MicroK8s 内置的 inspect 命令检查组件健康:

microk8s inspect

如果一切正常,会输出 "Inspecting system ... Success"。

想清理刚创建的部署和服务?
执行:

microk8s kubectl delete deployment nginx-demo
microk8s kubectl delete svc nginx-svc

如果想完全卸载 MicroK8s(包括所有数据):

sudo snap remove microk8s

本文通过最简步骤演示了 MicroK8s 单机容器编排部署的全过程,从安装到访问应用不过十几分钟。
如果你在实践过程中遇到环境差异导致的问题,建议优先查看 journalctl -u snap.microk8s.daemon-kubelite 日志,或者去社区论坛搜索相似报错。
掌握这个基础流程后,下一步可以尝试部署多副本应用、配置存储卷,逐步深入容器编排的世界。

分享到:
上一篇
零基础K3s轻量K8s集群搭建教程:3分钟上手
下一篇
Podman替代Docker使用教程:零基础迁移与实战指南
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意