在 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

参考链接

相关推荐
想学习java初学者12 分钟前
Docker compose部署elasticsearch(单机版)
运维·docker·容器
人类群星闪耀时39 分钟前
未来运维的发展趋势:运维领域的新技术与趋势
运维
落非44 分钟前
NFS存储基础操作
运维
Vanish_ran1 小时前
gitlab与jenkins
运维·gitlab·jenkins
朱容君1 小时前
Linux系统编程多线程之读写锁讲解
linux·开发语言
大风吹PP凉1 小时前
38配置管理工具(如Ansible、Puppet、Chef)
linux·运维·服务器·ansible·puppet
康熙38bdc2 小时前
Linux 进程间通信——共享内存
linux·运维·服务器
jwybobo20072 小时前
redis7.x源码分析:(3) dict字典
linux·redis
scoone2 小时前
ssh登陆服务器后支持Tab键命令补全
linux·shell
微刻时光2 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验