1. 快速开始

minikube logo

minikube 是一种轻量化的 Kubernetes 集群管理工具,是为了帮助开发者和学习者能够更好学习和体验 Kubernetes 功能而推出的便捷管理工具。

借助容器和虚拟化环境就可以实现 Kubernetes 的快速创建与启动,目前已支持在 macOS、Linux、Windows 平台上利用各类本地虚拟化环境作为驱动运行 Kubernetes。

由 minikube 构建的集群支持 Kubernetes 的大部分功能,从基础的容器编排管理,到高级特性如负载均衡、Ingress,权限控制等。非常适合作为 Kubernetes 入门,或开发测试环境使用。

用户使用 Minikube CLI 管理虚拟机上的 Kubernetes 环境,比如:启动,停止,删除,获取状态等。一旦 Minikube 虚拟机启动,用户就可以使用熟悉的 Kubectl CLI 在 Kubernetes 集群上执行操作。

minikube 有以下几点优势:

  • 支持管理多个 Kubernetes 版本,最新版本+6个以前的小版本。设计上也期望是管理兼容更可能多的 Kubernetes 历史版本。
  • 支持跨平台,在不同的平台(Linux、macOS、Windows)上快速安装 minikube 来运行管理 Kubernetes 集群。
  • 支持虚拟机、容器或裸金属部署。支持多种类型的驱动,可以通过虚拟化的虚拟机,或容器以及裸金属来运行 Kubernetes 集群。
  • 支持多个容器运行时 。minikube 支持在构建 Kubernetes 集群时选择使用不同的容器运行时,可以支持 cri-o、containd、docker。
  • 支持通过 Docker API 快速镜像推送。支持使用 Docker API 的方式来向 minikube 中推送容器镜像。
  • 高级特性支持。minikube 构建的 Kubernetes 支持一些高级腾讯,如 LoadBalancer、文件系统挂载、和 FeatureGates。
  • 插件应用可以轻松安装到 Kubernetes。minikube 管理的插件可以快速的安装到 Kubernetes 集群中使用。
  • 支持通用的 CI 环境。

1.1. minikube 管理架构

Minikube 核心是提供 Kubernetes 的集群的管理,在不同的层次提供不同的管理工具。以下是 minikube 管理的分层工具命令

minikube

minikube 控制服务: 该部分主要是 minikube 工具本身相关的工具,例如查看 minikube 的版本信息,shell 命令行快速补齐命令等。

硬件驱动虚拟化:这部分内容主要是准备 Kubernetes 集群运行的基础设备,该设备可以通过使用虚拟化的方式提供,也可以通过远程主机或者 docker 来提供,也可以直接使用本地的原始 docker 环境。

运行 OS 系统:这部分主要管理主机环境,例如可以查看对应机器的 ip 地址信息,或者 ssh 登录到系统。

容器运行时:这部分主要是容器化管理层,例如镜像的管理,容器运行时是管理等。

Kubernetes:最上层是管理 Kubernetes 集群以及集群中运行的服务。

1.2. 安装

安装方式还可以选择:

  • 安装方式可以是二进制,还可以按照 Debian 包,RPM 包。
  • 安装的版本可以是稳定版本,还可以按照开发版本
  • 安装的平台可以是Linux, 还支持 MacOS 和 Windows
  • 安装的硬件架构可以是 X86,还支持 ARM64, ARMv7, ppc64, S390X

在新版本(应该是在v1.20版本后吗???)后,要求使用非 root 的管理员用户来执行 minikube 的安装。

1.2.1. Linux 系统安装

minikube 的安装和运行包都是一个独立的基于 golang 编译的二进制文件。安装方式也非常简单,就是将二进制文件放在指定的路径后,提供可执行权限即可。

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

1.2.2. Window 系统安装

todo

1.2.3. MacOS 系统安装

todo

1.3. 集群生命周期管理

1.3.1. 驱动

minikube 支持多种不同的驱动来运行 Kubernetes 集群。根据资源环境选择合适的驱动:

  • HyperKit 驱动: HyperKit 是 macOS 平台上的开源的虚拟化技术,为轻量级虚拟机和容器部署进行了优化。
  • Hyper-V 驱动: Hyper-V 是内置在现代版本 Microsoft Windows 中的虚拟化程序。
  • KVM 驱动: KVM 基于内核的虚拟机 是一个基于 x86 硬件的 Linux 的全虚拟化解决方案,包含虚拟化扩展。
  • Docker 驱动: Docker 驱动允许你将 Kubernetes 安装到现有的 Docker 服务中。在 Linux 系统中,这不需要启用虚拟化。
  • none 驱动: 即 Minikube 不使用任何类型的驱动,直接使用当前操作系统来运行 Kubernetes 集群,也称为裸金属(bare-metal)。
  • podman 驱动: 是一种可以代替 Docker 容器运行时的另外一种驱动。
  • ssh 驱动: 程序允许高级 minikube 用户跳过虚拟机创建,允许 minikube 在用户提供的虚拟机上运行。
  • Parallels 驱动: 对于拥有 Parallels Desktop for Mac 的用户特别有用,因为它不需要 VT-x 硬件支持。
  • VirtualBox 驱动: 是 minikube 的早期支持驱动。它可能不能提供最快的启动时间,但它是 Microsoft Windows Home 用户可用的最稳定的驱动程序。
  • vmware 驱动: 支持所有基于 vmware 的虚拟化环境。

驱动选择可以分为一下几类:

  • 裸金属无驱动:none
  • 容器驱动:docker、podman
  • 远程主机驱动: ssh
  • 虚拟化虚拟机驱动 MacOS 平台:HyperKit、Parallels、VirtualBox、Vmware
  • 虚拟化虚拟机驱动 Windows 平台:Hyper-V、VirtualBox、Vmware
  • 虚拟化虚拟机驱动 Linux 平台:KVM、VirtualBox、Vmware

注:

  • 由于minikube复用了docker-machine,在其软件包中已经支持了相应的VirtualBox, VMware Fusion驱动
  • VT-x/AMD-v 虚拟化必须在 BIOS 中开启
  • 在Windows环境下,如果开启了Hyper-V,不支持VirtualBox方式

根据我们的物理设备运行环境,可以选择不同的驱动来运行 Kubernetes 集群。通过 --drvier='' 的方式来指定驱动

minikube start --drvier="docker"

1.3.2. 指定版本

minikube 支持管理不同版本的 Kubernetes 集群。 minikube 设计之初就希望作为一个便于研发使用 minikube 的工具,而支持不同的 Kubernetes 历史版本就是其中核心功能之一。

minikube 会稳定支持发布版本的 6 个历史版本,实际上可以支持更多的历史版本。

如果需要使用或验证某个历史版本的兼容性,可以通过 --kubernetes-version 来指定 Kubernetes 版本

minikube start --kubernetes-version v1.19.16

1.3.3. 多集群

minikube 支持管理多个 Kubernetes 集群。当我们需要在不同的 Kubernetes 版本间切换验证时,希望同事保留多个 Kubernetes 集群实例,可以通过 minikube 的集群配置 profile 的方式配置和管理多集群。

在创建或后续管理使用 Kubernetes 时,都可以通过 -p 选项来指定一个 Kubernetes 集群配置,相关的操作都可以限定在指定的集群中

minikube start -p k8s-v1.19.16

1.3.4. Linux 参考创建集群

除了上诉的几个功能选项,minikube 在创建集群时还有很多其他有用的选项,

minikube start \
  -p k8s-v1.19.16 \
  --kubernetes-version v1.19.16 \
  --registry-mirror=https://registry.docker-cn.com \
  --image-mirror-country=cn \
  --driver=docker \
  --extra-config=kubelet.cgroup-driver=systemd \
  --cni=calico

1.3.5. Windows 平台创建集群

todo

1.3.6. MacOS 平台创建集群

todo

1.4. 群管理

集群创建完成后,可以通过 profile 来查看集群配置

[minikube@wenyu-poc-gitlab ~]$ minikube profile list
|---------|-----------|---------|--------------|------|---------|---------|-------|
| Profile | VM Driver | Runtime |      IP      | Port | Version | Status  | Nodes |
|---------|-----------|---------|--------------|------|---------|---------|-------|
| k8s1    | docker    | docker  | 192.168.49.2 | 8443 | v1.22.3 | Stopped |     3 |
| k8s2    | docker    | docker  | 192.168.58.2 | 8443 | v1.22.3 | Running |     2 |
|---------|-----------|---------|--------------|------|---------|---------|-------|

minikube 在管理 Kubernetes 集群状态和生命周期时,在对状态的管理分为三类:"start/delete"、"start/stop" 和 "pause/unpause"

  • start/delete 是管理 Kubernetes 生命周期的创建与删除,决定集群存在与否,在集群被删除时相关的数据也会一起清理。
  • start/stop 是管理 Kubernetes 集群的启动与停止,决定集群和机器是否是运行状态,集群停止不会删除数据,只是将相关的机器以及机器上的 Kubernetes 停止
  • pause/unpause 是管理 Kubernetes 集群本身的状态,暂停的集群可以被快速恢复,数据也不会丢失。与 stop 的区别是,stop 会将集群和机器一起停止,而 pause 只会停止 Kubernetes 集群,不会停止对应的机器。

1.5. 使用 Kubernetes 集群

当通过 minikube 创建好 Kubernetes 集群后,该如何访问集群呢?minikube 提供了以下几种方式来访问

1.5.1. minikube kubectl

minikube kubectl 
alias kubectl="minikube kubectl --"
kubectl config context

1.5.2. kubeconfig

在 minikube 安装好集群后,会自动在宿主机的 /root/.kube/config 中生存集群的 kubeconfig,因此只需要下载一个 kubectl 二进制文件,即可远程访问 Kubernetes 集群

1.5.3. dashboard

minikube 提供 minikube dashboard 命令,可以自动安装 dashboard 插件,打开 dashboard 的 web 页面,通过 页面的方式来访问和管理 Kubernetes 集群

====================================

1.6. 插件管理 addons

minikube 内置了很多插件,这些插件可以通过 minikube addons 命令快速的安装和卸载

minikube addons list

1.7. 应用部署与访问

1.8. 配置管理

1.8.1. 镜像管理

1.8.2. config管理

1.8.3. 节点管理

1.9. 其他

国内 gcr 访问不了的问题,通过阿里云加速

离线部署问题

2. 参考

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-07-20 21:53:58

results matching ""

    No results matching ""