在 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

安装依赖

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

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

安装 Docker

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

sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker

验证 Docker 是否安装成功:

docker --version

示例输出

Docker version 20.10.7, build f0df350

使用国内镜像安装 kubectl

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

  1. 获取稳定版本号:

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

    示例输出

    v1.22.0
    
  2. 下载 kubectl:

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

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

    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:

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

验证 Minikube 是否安装成功:

minikube version

示例输出

minikube version: v1.33.1
commit: 2f223910e89575eb6b2cf301748c1126d88a1585

启动 Minikube

使用以下命令启动 Minikube:

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 插件:

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 服务名称:

    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. 进行端口转发:

    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 &
    

设置防火墙(可选)

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

sudo ufw allow 8001

参考链接

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐