在 Ubuntu 22 上深入了解和搭建 Minikube

在 Ubuntu 22 上深入了解和搭建 Minikube

Minikube 是一个开源工具,使开发者能够在本地计算机上运行单节点的 Kubernetes 集群,非常适合于开发、测试和学习 Kubernetes 的基础知识。在这篇文章中,我们将深入了解 Minikube 的工作原理,并提供在 Ubuntu 22 系统上搭建 Minikube 的详细步骤。

什么是 Minikube?

Minikube 是一个轻量级的 Kubernetes 实现,旨在帮助用户快速构建本地的 Kubernetes 环境。其核心特性包括:

  • 单节点集群:Minikube 运行一个单节点的 Kubernetes 集群,适合开发和测试。
  • 多种驱动:支持多种虚拟化驱动,包括 VirtualBox、VMware、Hyper-V 等,也支持通过 Docker 驱动在容器中运行。
  • 易于使用:提供简单的命令行工具,便于集群的启动、停止和管理。

Minikube 的工作原理

Minikube 通过创建和管理虚拟机或容器来运行一个单节点的 Kubernetes 集群。它将 Kubernetes 的各个组件(如 API server、scheduler、controller-manager 等)运行在一个节点上。Minikube 还包括了一些有用的工具,如 kubectl 命令行工具,用于与 Kubernetes 集群进行交互。

在 Ubuntu 22 上安装 Minikube

安装依赖

首先,确保你的系统安装了必要的依赖项:

bash 复制代码
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

安装 Docker

Minikube 可以使用 Docker 作为其虚拟化驱动程序。按照以下步骤安装 Docker:

bash 复制代码
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker

验证 Docker 是否安装成功:

bash 复制代码
docker --version

示例输出

复制代码
Docker version 20.10.7, build f0df350

使用国内镜像安装 kubectl

由于网络原因无法访问 Google 的 Kubernetes 存储库,我们可以使用 Azure China 的 Kubernetes 镜像源来下载和安装 kubectl:

  1. 获取稳定版本号:

    bash 复制代码
    VERSION=$(curl -s https://mirror.azure.cn/kubernetes/kubectl/stable.txt)
    echo $VERSION

    示例输出

    复制代码
    v1.22.0
  2. 下载 kubectl:

    bash 复制代码
    curl -LO "https://mirror.azure.cn/kubernetes/kubectl/$VERSION/bin/linux/amd64/kubectl"
  3. 安装 kubectl:

    bash 复制代码
    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  4. 验证安装:

    bash 复制代码
    kubectl version --client

    示例输出

    复制代码
    Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"abcdef", GitTreeState:"clean", BuildDate:"2022-07-15T12:00:00Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}

安装 Minikube

从 Minikube 的官方网站下载并安装最新版本的 Minikube:

bash 复制代码
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

验证 Minikube 是否安装成功:

bash 复制代码
minikube version

示例输出

复制代码
minikube version: v1.33.1
commit: 2f223910e89575eb6b2cf301748c1126d88a1585

启动 Minikube

使用以下命令启动 Minikube:

bash 复制代码
minikube start --driver=docker

示例输出

复制代码
😄  minikube v1.33.1 on Ubuntu 22.04 (vbox/amd64)
✨  Using the docker driver based on user configuration
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔥  Creating docker container (CPUs=2, Memory=4000MB) ...
🐳  Preparing Kubernetes v1.23.3 on Docker 20.10.7 ...
    ▪ kubelet.housekeeping-interval=5m
🚀  Launching Kubernetes ...
    ▪ apiserver.advertise-address=192.168.99.100
🌟  Enabling addons: default-storageclass, storage-provisioner
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

启用 Ingress 插件

为了使局域网内的其他机器能够访问 Minikube Dashboard,你需要启用 Ingress 插件:

bash 复制代码
minikube addons enable ingress

示例输出

复制代码
💡  ingress is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
    ▪ Using image registry.k8s.io/ingress-nginx/controller:v1.10.1
    ▪ Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1
    ▪ Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1
🔎  Verifying ingress addon...
🌟  The 'ingress' addon is enabled

让局域网内其他机器访问 Minikube Dashboard

使用 kubectl port-forward

  1. 获取 Dashboard 服务名称:

    bash 复制代码
    kubectl get svc -n kubernetes-dashboard

    示例输出

    复制代码
    NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
    kubernetes-dashboard   ClusterIP   10.96.183.235    <none>        80/TCP    10m
  2. 进行端口转发:

    bash 复制代码
    kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8080:80 --address 0.0.0.0 &
  3. 在局域网内的其他机器上,通过以下 URL 访问 Dashboard:

    复制代码
    http://<your-host-ip>:8080/

    其中 <your-host-ip> 是运行 Minikube 的主机的 IP 地址。

    如果需要后台运行,可以用nohup命令:

    复制代码
    nohup kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8080:80 --address 0.0.0.0 > port-forward.log 2>&1 &

设置防火墙(可选)

如果你在机器上启用了防火墙,可能需要开放相应的端口:

bash 复制代码
sudo ufw allow 8001

参考链接

相关推荐
Neighbor_OldY24 分钟前
云上安全配置审计与误配置修复实战:从安全组、OSS、RAM到数据库的全栈排查复盘
大数据·运维·安全·云计算
开心大爆炸1 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun22 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng3 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
2601_962304913 小时前
把出片接进自动化流水线:2026 年批量 AI 视频生成工具的脚本契约与同类项目对照
运维·人工智能·自动化
Ruiery3 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败3 小时前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW3 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li3 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
实战派K8S&DB3 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi