在mutipass中启动ubuntu虚拟机
multipass shell microk8s-vm
MicroK8s 是一个由 Canonical(Ubuntu 的开发商)维护的轻量级 Kubernetes 发行版。它旨在为开发者、运维人员和边缘计算场景提供一个快速、简便的 Kubernetes 部署方式,适用于本地开发、测试环境、边缘设备以及生产场景。
MicroK8s 的特点 #
- 轻量级
- 微内核设计,占用资源少,适合运行在笔记本电脑、工作站、树莓派或其他资源受限的设备上。
- 默认禁用许多附加组件,只有基本的 Kubernetes 核心功能。
- 易安装
- 提供单命令安装,尤其在 Ubuntu 系统上,使用
snap
包管理器即可快速安装。 - 支持多种操作系统,包括 Linux(Ubuntu、CentOS 等)、Windows 和 macOS(通过虚拟化工具)。
- 提供单命令安装,尤其在 Ubuntu 系统上,使用
- 模块化
- 提供了多种可选的附加组件(addons),如
dns
、ingress
、storage
、helm
等,用户可以根据需要启用或禁用这些组件。
- 提供了多种可选的附加组件(addons),如
- 开箱即用
- 直接内置了 Kubernetes 集群的核心组件,如 API Server、kubelet 和调度器,用户无需额外配置即可开始使用。
- 自动升级
- 使用
snap
管理,支持自动更新到最新版本。
- 使用
- 跨平台
- 支持多种硬件架构(如 x86、ARM),适合开发、测试和物联网边缘计算场景。
- 兼容性
- 完全兼容 Kubernetes API,可以运行大多数 Kubernetes 应用程序。
- 支持与 kubectl、Helm 等工具集成。
MicroK8s 的用途 #
- 本地开发与测试
- 开发人员可以在本地快速启动一个 Kubernetes 集群,用于应用开发、测试和调试。
- 学习 Kubernetes
- 对于新手来说,MicroK8s 是学习 Kubernetes 的理想工具,因为它简单易用且资源需求低。
- 边缘计算
- MicroK8s 轻量级的特性使其适合运行在物联网设备或资源有限的边缘设备上。
- CI/CD 测试环境
- 用于快速创建临时 Kubernetes 环境以运行持续集成或自动化测试。
- 单节点或小型生产环境
- 在资源有限的情况下,可以作为单节点 Kubernetes 集群使用。
MicroK8s 的安装与使用 #
安装 MicroK8s #
在 Ubuntu 上安装 使用
snap
进行安装:sudo snap install microk8s --classic
安装完成后,检查版本:
microk8s version
在其他 Linux 系统上安装 在支持
snap
的 Linux 系统上,同样可以使用snap
安装。在 macOS 或 Windows 上安装 使用
Multipass
或其他虚拟化工具(如 VirtualBox)运行 MicroK8s。
常用命令 #
启用或禁用附加组件:
microk8s enable dns ingress storage helm3 microk8s disable dns
查看 Kubernetes 资源: 使用内置的
kubectl
:microk8s kubectl get nodes microk8s kubectl get pods -A
检查 MicroK8s 的状态:
microk8s status
重启或停止服务:
microk8s stop microk8s start
配置用户权限(非 root 用户):
sudo usermod -a -G microk8s $USER sudo chown -R $USER ~/.kube newgrp microk8s
MicroK8s 与其他 Kubernetes 发行版的对比 #
特性 | MicroK8s | Minikube | K3s |
---|---|---|---|
轻量化 | 是 | 部分轻量化 | 极轻量化 |
安装方式 | 单命令(snap 包) | VirtualBox 或其他虚拟化工具 | 二进制或安装脚本 |
资源需求 | 低 | 较高 | 极低 |
生产环境支持 | 支持(单节点或小型环境) | 不推荐 | 支持 |
附加组件管理 | 支持,模块化组件 | 手动安装 | 部分模块化 |
云原生兼容性 | 完全兼容 | 完全兼容 | 部分特性简化 |
总结 #
MicroK8s 是一个轻量级且功能强大的 Kubernetes 发行版,专为开发者、测试环境和边缘计算场景设计。它具有易安装、易管理、资源占用低等优点,同时保留了 Kubernetes 的核心功能,非常适合想快速入门 Kubernetes 或在本地进行开发测试的用户。
如果你需要一个即开即用的 Kubernetes 集群,无论是本地开发还是边缘计算,MicroK8s 都是一个理想的选择。
在 macOS 上安装 MicroK8s 相较于 Linux 环境略有不同,因为 macOS 本身不支持直接使用 snap
安装。要在 macOS 上安装 MicroK8s,你需要借助 Multipass(一个轻量级虚拟机管理工具)来运行一个虚拟机,从而部署 MicroK8s。
以下是详细的安装步骤:
1. 安装 Multipass #
Multipass 是一个由 Canonical(Ubuntu 的开发公司)开发的工具,能够轻松管理 Ubuntu 虚拟机。在 macOS 上安装 MicroK8s 的步骤首先是通过 Multipass 启动一个虚拟机。
(1)安装 Multipass #
你可以通过 Homebrew 安装 Multipass:
brew install --cask multipass
(2)检查安装是否成功 #
安装完成后,可以检查 Multipass 是否安装成功:
multipass version
如果安装成功,你将看到 Multipass 的版本信息。
2. 使用 Multipass 启动 Ubuntu 虚拟机 #
MicroK8s 需要 Ubuntu 系统来运行,因此接下来你需要在 macOS 上通过 Multipass 创建一个 Ubuntu 虚拟机。
(1)启动 Ubuntu 虚拟机 #
执行以下命令启动一个 Ubuntu 虚拟机(例如,启动一个 4GB 内存的 Ubuntu 20.04 虚拟机):
multipass launch --name microk8s-vm --mem 4G --disk 20G 20.04
这将启动一个名为 microk8s-vm
的虚拟机,分配 4GB 内存和 20GB 硬盘。
(2)进入虚拟机 #
进入虚拟机:
multipass shell microk8s-vm
3. 在虚拟机中安装 MicroK8s #
进入 Ubuntu 虚拟机后,你可以按照以下步骤安装 MicroK8s。
(1)安装 MicroK8s #
在虚拟机内,运行以下命令安装 MicroK8s:
sudo snap install microk8s --classic
(2)验证安装 #
安装完成后,检查 MicroK8s 是否正常运行:
microk8s status --wait-ready
这条命令会等待直到 MicroK8s 准备好并且可以正常使用。
ubuntu@microk8s-vm:~$ sudo snap install microk8s --classic
microk8s (1.31/stable) v1.31.3 from Canonical✓ installed
ubuntu@microk8s-vm:~$ microk8s status --wait-ready
Insufficient permissions to access MicroK8s.
You can either try again with sudo or add the user ubuntu to the 'microk8s' group:
sudo usermod -a -G microk8s ubuntu
sudo chown -R ubuntu ~/.kube
After this, reload the user groups either via a reboot or by running 'newgrp microk8s'.
ubuntu@microk8s-vm:~$
这个错误信息表示,当前用户 ubuntu
没有足够的权限来访问 MicroK8s。为了修复这个问题,你需要将 ubuntu
用户添加到 microk8s 组,并更改相应的权限。错误信息中已经给出了修复步骤,下面是详细的解释和步骤:
问题的原因 #
MicroK8s 在安装时会创建一个名为 microk8s
的组,只有该组的成员才能访问 MicroK8s 的配置和执行相关命令。默认情况下,普通用户并不在 microk8s
组中,因此无法访问和管理 MicroK8s。
解决方法 #
将用户添加到
microk8s
组 你需要将ubuntu
用户添加到microk8s
组中。这可以通过以下命令完成:sudo usermod -a -G microk8s ubuntu
修改权限 接下来,需要修改 Kubernetes 配置文件的权限,使得
ubuntu
用户可以访问它:sudo chown -R ubuntu ~/.kube
重新加载用户组 上述步骤会将用户添加到
microk8s
组,并将.kube
目录的权限更新。为了让权限生效,重新加载用户组,可以使用以下命令:newgrp microk8s
这会立即使
ubuntu
用户的权限更新,而不需要重启计算机。
4. 再次检查 MicroK8s 状态 #
完成上述步骤后,你应该可以再次运行 microk8s status
命令来查看 MicroK8s 的状态:
microk8s status --wait-ready
总结 #
- 你需要将
ubuntu
用户添加到microk8s
组中,才能让该用户访问 MicroK8s。 - 更改 Kubernetes 配置文件的权限,并通过
newgrp
命令重新加载用户组,以确保权限生效。
执行这些步骤后,问题应该得到解决,你可以正常使用 MicroK8s。
错误信息 chown: cannot access '/home/ubuntu/.kube': No such file or directory
表示在 /home/ubuntu/
目录下找不到 .kube
文件夹。原因可能是当前用户还没有在 ~/.kube
目录下创建 Kubernetes 配置文件。通常,这是因为还没有执行过 kubectl
命令,或者在配置文件复制步骤中没有正确生成该目录。
解决方法 #
1. 确保 .kube
目录存在
#
首先,你需要确保 Kubernetes 配置文件已经生成。执行以下命令生成 Kubernetes 配置文件:
在 MicroK8s 内获取 kubeconfig 文件:
sudo microk8s kubectl config view --raw > kubeconfig
将
kubeconfig
文件移动到~/.kube
目录: 创建.kube
目录,并将kubeconfig
文件移动到该目录下:mkdir -p ~/.kube mv kubeconfig ~/.kube/config
更新目录权限: 现在,你已经成功将
kubeconfig
文件放置在.kube
目录中,可以重新执行权限修改命令:sudo chown -R ubuntu ~/.kube
2. 配置 kubectl
使用 MicroK8s 配置
#
如果你已经将配置文件正确放入 ~/.kube/config
,可以尝试使用以下命令来测试是否成功配置了 kubectl
:
kubectl get nodes
如果配置正确,你应该能够看到集群中的节点信息。
3. 重新加载用户组(如果必要) #
如果你已经将 ubuntu
用户添加到 microk8s
组,但还没有刷新用户组,可以执行以下命令:
newgrp microk8s
总结 #
- 错误的根本原因是
.kube
目录不存在。你需要确保配置文件kubeconfig
被正确生成,并放置到.kube/config
中。 - 执行
mkdir -p ~/.kube && mv kubeconfig ~/.kube/config
可以确保配置文件正确放置。 - 修改文件权限时,使用
chown -R ubuntu ~/.kube
来确保当前用户有正确的访问权限。
完成这些步骤后,你应该能够正常访问 Kubernetes 集群并使用 kubectl
命令了。
4. 配置 kubectl 访问 MicroK8s #
为了能够从宿主机(macOS)直接使用 kubectl
来管理 MicroK8s 集群,你需要配置访问权限。
(1)获取 kubectl 配置文件 #
通过 Multipass 虚拟机执行以下命令,获取 Kubernetes 配置文件:
sudo microk8s kubectl config view --raw > kubeconfig
(2)将配置文件复制到宿主机 #
将该配置文件复制到宿主机(macOS)上的合适目录,比如 ~/.kube/config
:
mkdir -p ~/.kube
cp kubeconfig ~/.kube/config
(3)验证 kubectl 配置 #
验证 kubectl
是否能够连接到 MicroK8s 集群:
kubectl get nodes
你应该会看到 microk8s-vm
作为节点,表示 kubectl
成功连接到 MicroK8s 集群。
5. 启用必要的 MicroK8s 插件 #
MicroK8s 提供了多个附加插件,可以根据需要启用它们。
例如,启用 DNS 和 Ingress:
microk8s enable dns ingress
你可以根据需求启用其他插件,如存储、Metrics Server 等:
microk8s enable storage
microk8s enable dashboard
microk8s disable ingress
microk8s disable storage
microk8s disable dashboard
6. 访问 Kubernetes Dashboard(可选) #
如果启用了 Kubernetes Dashboard 插件,可以通过以下命令获取访问 Dashboard 的 token:
microk8s dashboard-proxy
此命令会显示一个 URL,你可以在浏览器中访问该 URL,以便通过 Web 界面管理集群。
7. 关闭和删除虚拟机 #
如果不再需要 MicroK8s,可以通过以下命令停止虚拟机:
multipass stop microk8s-vm
如果希望删除虚拟机及其所有数据,可以运行:
multipass delete microk8s-vm
multipass purge
总结 #
在 macOS 上安装 MicroK8s 的关键步骤是使用 Multipass 启动一个 Ubuntu 虚拟机,并在虚拟机内安装和配置 MicroK8s。这样,你就可以在本地开发、测试和学习 Kubernetes 集群,或者部署轻量级的应用程序。如果需要更强大的功能,还可以启用多种插件。
进入虚拟机
multipass shell microk8s-v
如果你想重新启动已停止的 microk8s-vm
实例,你可以使用以下命令:
multipass start microk8s-vm
这将重新启动并使虚拟机恢复运行状态。如果你想查看当前虚拟机的状态,可以使用:
multipass list
这个命令会列出所有虚拟机及其当前状态(如运行中或已停止)。
wget https://github.com/derailed/k9s/releases/download/v0.32.7/k9s_linux_amd64.deb && apt install ./k9s_linux_amd64.deb && rm k9s_linux_amd64.deb
wget https://github.com/derailed/k9s/releases/download/v0.32.7/k9s_linux_amd64.deb
apt install ./k9s_linux_amd64.deb
rm k9s_linux_amd64.deb
Warning FailedCreatePodSandBox 92s kubelet Failed to create pod sandbox: rpc error: code = DeadlineExceeded desc = failed to g │
│ et sandbox image "registry.k8s.io/pause:3.7": failed to pull image "registry.k8s.io/pause:3.7": failed to pull and unpack image "registry.k8s.io/pa │
│ use:3.7": failed to resolve reference "registry.k8s.io/pause:3.7": failed to do request: Head "https://us-west2-docker.pkg.dev/v2/k8s-artifacts-pro │
│ d/images/pause/manifests/3.7": dial tcp 74.125.199.82:443: i/o timeout │
│ Warning FailedCreatePodSandBox 6s (x7 over 5m15s) kubelet Failed to create pod sandbox: rpc error: code = DeadlineExceeded desc = failed to g │
│ et sandbox image "registry.k8s.io/pause:3.7": failed to pull image "registry.k8s.io/pause:3.7": failed to pull and unpack image "registry.k8s.io/pa │
│ use:3.7": failed to resolve reference "registry.k8s.io/pause:3.7": failed to do request: Head "https://us-west2-docker.pkg.dev/v2/k8s-artifacts-pro │
│ d/images/pause/manifests/3.7": dial tcp 172.253.117.82:443: i/o timeout