Minikube vs. kind vs. k3s vs k3d vs MicroK8s

news2024/11/25 2:37:06

文章目录

    • 1. minikube
    • 2. k3s
    • 3. k3d
    • 4. Kind
    • 5. MicroK8s

1. minikube

minikube 是一个 Kubernetes SIG 项目,已经启动三年多了。它采用生成虚拟机的方法,该虚拟机本质上是一个单节点 K8s 集群。由于支持大量管理程序,它可以在所有主要操作系统上使用。这也允许您并行创建多个实例。

从用户的角度来看,minikube 是一个非常适合初学者的工具。您使用 启动集群minikube start,等待几分钟,您kubectl就可以开始了。要指定 Kubernetes 版本,您可以使用该--kubernetes-version标志。可在此处找到受支持版本的列表。默认情况下,Minikube 创建一个单节点集群,但您可以在启动 Minikube 时使用 --nodes 标志设置更多节点。

Minikube 的主要优点是它非常轻便,并且非常易于安装和使用。

Minikube 的主要缺点是它仅为测试而设计。它不是运行生产级集群的实用解决方案。

如果您是 Kubernetes 的新手,minikube 提供的对其仪表板的一流支持可能会对您有所帮助。通过一个简单minikube dashboard的应用程序将打开,让您很好地了解集群中发生的一切。这是通过minikube 的插件系统实现的,它可以帮助您将诸如Helm、Nvidia GPU和Docker Registry之类的东西与您的集群集成。

  • Minikube v1.25.2 在 Centos 7.9 部署 Kubernetes v1.23.8
  • Ubuntu 18.04 通过 Minikube 安装 Kubernetes v1.20

2. k3s

K3s 是由Rancher Labs开发的 Kubernetes 的缩小版本。通过删除可有可无的功能(遗留、alpha、非默认、树内插件)和使用轻量级组件(例如 sqlite3 而不是 etcd3),他们实现了显着的缩减。这会生成一个大小约为 60 MB 的二进制文件。它还可以在任何操作系统(Linux、Windows 和 macOS)上运行。

如果你想将节点添加到你的集群中,你必须单独在它们上设置 K3s 并将它们加入到你的集群中。在这方面,K3s 使用起来比 Minikube 和 MicroK8s 稍微繁琐一些,两者都提供了更简单的添加节点的过程。

另一方面,K3s 被设计成一个成熟的、生产就绪的 Kubernetes 发行版,同时也是轻量级的。

一项突出的功能称为自动部署。它允许您通过将 Kubernetes 清单和 Helm 图表放在特定目录中来部署它们。K3s 监视变化并在没有任何进一步交互的情况下负责应用它们。这对于 CI 管道和 IoT 设备(都是 K3s 的目标用例)特别有用。只需创建/更新您的配置,K3s 就会确保您的部署保持最新。

  • k3s 一条短命令安装:curl -sfL https://get.k3s.io | sh -
  • k3s 离线部署指南

3. k3d

k3d 是一个 开源 实用程序,旨在轻松地在 docker 容器中运行高度可用的轻量级 k3s 集群。

使用 k3d,您可以轻松创建单节点和多节点 k3s 集群,以在 Kubernetes 上进行无缝本地开发和测试。通过在 Kubernetes 中运行,k3d 还可以帮助您轻松扩展和缩减工作负载。
k3d 是 k3s 的包装器,顾名思义就是 docker 上的 k3s。
它还提供了额外的功能,例如代码的热重载、构建部署和使用多服务器集群测试 Kubernetes 应用程序。
k3d 部署基于 Docker 的 k3s Kubernetes 集群,而 k3s 部署基于虚拟机的 Kubernetes 集群。
K3d 提供了一个更具可扩展性的 k3s 版本,这可能使其优于标准 k3s。
k3d 似乎是 k3s 的更灵活和改进的版本,尽管它们的功能和用法相似。
另一个不同之处是,k3s 的设计易于在生产环境中部署,这使其成为在本地环境中为生产级工作负载运行 Kubernetes 的最受欢迎的选择之一,而 k3d 更适合在更小的环境中使用,例如 Raspberry Pi、IoT、和边缘设备。

4. Kind

Kind 是另一个 Kubernetes SIG 项目,但与 minikube 相比有很大不同。顾名思义,它将集群移动到 Docker 容器中。与生成 VM 相比,这导致启动速度明显加快。

创建集群与 minikube 的方法非常相似。执行kind create cluster,然后你就可以开始了。通过使用不同的名称 ( --name) kind,您可以并行创建多个实例。

我个人喜欢的一个功能是能够将我的本地图像直接加载到集群中。这为我节省了一些额外的步骤,即每次我想尝试我的更改时设置注册表和推送我的图像。简单kind load docker-image my-app:latest来说,图像就可以在我的集群中使用。很不错!

如果您正在寻找一种以编程方式创建 Kubernetes 集群的方法,请亲切地(您一直在等待这个,不是吗 😛)发布其在后台使用的 Go 包。

5. MicroK8s

Microk8s是Canonical发布的一款小型、轻量级、完全符合标准的Kubernetes发行版。这款简约的发行版专注于简洁和性能。由于占用资源少,Microk8s可以轻松部署在物联网和边缘设备端。MicroK8s是目前最小、最快与Kubernetes全面兼容的集群系统,主要用于工作站和小型团队,但是目前镜像并没有与snap打包在一起,还在gcr.io上,国内下载上还是有问题。MicroK8s适合离线开发、原型开发和测试,尤其是运行VM作为小、便宜、可靠的k8s用于CI/CD。支持arm架构,也适合开发 IoT 应用,通过 MicroK8s 部署应用到小型Linux设备上。

Canonical已将Microk8s 包装成 snap,这是该公司的Linux软件包管理器。snap捆绑了应用程序及无需修改即可在许多不同的Linux发行版上运行的依赖项。snap是独立的应用程序,可在沙盒中运行,通过中介访问主机系统。snap 已成为通常在基于 Debian 的发行版中使用的标准.deb软件包之外的替代方案。包装成snap的应用程序可以轻松安装和卸载。除了最新版本的Ubuntu外,snap 还可以部署在各种平台上,包括Linux Mint、Raspberry Pi OS和Arch Linux。

由于Microk8s基于snap,因此可以通过单个命令轻松部署。比如在Ubuntu 18.04上,sudo snap install microk8s --classic可安装功能完备的单节点Kubernetes集群。对于任何运行snapd(snap软件包管理器的守护程序)的平台而言,安装过程都一样

项目特点

  • MicroK8轻巧 :团队成员希望最小的Kubernetes用于笔记本电脑和工作站的开发。 MicroK8s提供了轻量级的独立Kubernetes,在Ubuntu上运行时,它与Azure AKS,Amazon EKS和Google GKE兼容。
  • MicroK8很简单 :MicroK8s通过单软件包安装来最大程度地减少管理和操作,该软件包没有活动部件(开箱即用),并且包括所有依赖项。
  • MicroK8是安全的 :对于所有安全问题,更新始终可用,并且可以立即应用或安排更新以适合企业的维护周期。 此外,MicroK8具有最新的隔离功能,可在工作站上安全运行。 通过将Kubernetes,Docker.io,iptables和CNI的所有二进制文件打包在单个snap软件包中,可以实现这种隔离。
  • MicroK8是最新的 :MicroK8s跟踪上游Kubernetes,并在上游Kubernetes发行的同一天发布beta,发行候选版本和最终版本。 您可以跟踪最新的Kubernetes或坚持使用从1.10开始的任何Kubernetes版本。 当出现新的主要Kubernetes版本时,您可以自动升级或使用单个命令进行升级。
  • MicroK8是全面的 :MicroK8s包括精选的清单,用于常见的Kubernetes功能和服务。 MicroK8带有Docker注册表,使用户可以在笔记本电脑上制作,推送和部署容器。

运行环境
操作系统 Ubuntu 18.04 LTS 或16.04 LTS 环境 (或其他支持 snapd 的操作系统- see the snapd documentation)。至少 20G 磁盘空间, (建议)4G 内存。

MicroK8s 的一个不错的特性是,只要集群节点总数达到或超过三个,它就会自动将您的集群配置为高可用性(意味着它有多个主节点)。

总体而言,MicroK8s 使用起来比 K3s 或 Minikube 稍微复杂一些,特别是因为它具有模块化架构并且默认情况下仅运行最少的服务集。要打开 DNS 支持或基于 Web 的仪表板等功能,您必须明确启动它们。

  • 开源地址:https://github.com/canonical/microk8s
minikubek3skind
runtimeVMnativecontainer
supported architecturesAMD64AMD64, ARMv7, ARM64AMD64
supported container runtimesDocker,CRI-O,containerd,gvisorDocker, containerdDocker
startup time initial/following5:19 / 3:150:15 / 0:152:48 / 1:06
memory requirements2GB512 MB8GB (Windows, MacOS)
requires root?noyes (rootless is experimental)no
multi-cluster supportyesno (can be achieved using containers)yes
multi-node supportnoyesyes
project pageminikubek3skind

参考:

  • K3d vs k3s vs Kind vs Microk8s vs Minikube
  • Minikube vs. kind vs. k3s - What should I use?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333576.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目管理基础

项目的特点 项目是为提供独特产品、服务或成果所做的临时性努力 临时性(一次性,指项目有明确的开始时间和结束时间)独特性逐步完善-渐进明细资源约束目的性 项目的三重制约: 成本 质量 时间 其次还有范围 目标:多快…

FPGA时序约束与分析 --- 实例教程(1)

注意: 时序约束辅助工具或者相关的TCL命令,都必须在 open synthesis design / open implemention design 后才能有效运行。 1、时序约束辅助工具 2、查看相关时序信息 3、一般的时序约束顺序 1、 时序约束辅助工具(1)时序约束编辑…

操作系统的奋斗(三)内存管理

第三章 内存管理3.1内存管理概念3.1.1 内存管理的基本原理和要求(1)内存管理的主要功能3.1.2 覆盖和交换(1)覆盖(2)交换3.1.3 连续分配管理方式(1)单一连续分配(2&#x…

【Spring源码】23. 执行初始化逻辑:initializeBean()

进入initializeBean()先检查是否有安全管理器,如果有就以特权方式执行回调bean中Aware接口方法invokeAwareMethods()invokeAwareMethods()这个方法处理了3个Aware(更多关于Aware的内容可移步至那些Aware们)BeanNameAwareBeanClassLoaderAware…

json文件在faster_rcnn中从测试到训练 可行性

1.确认任务 经过mydataset文件处理后 - > 在train_res50_fpn文件内应用 # load train data set # VOCdevkit -> VOC2012 -> ImageSets -> Main -> train.txt train_dataset VOCDataSet(VOC_root, "2012", data_transform["train"], &…

Python 异步: 使用和查询任务(8)

任务是异步程序的货币。在本节中,我们将仔细研究如何在我们的程序中与它们交互。 1. 任务生命周期 异步任务具有生命周期。首先,任务是从协程创建的。然后安排在事件循环中独立执行。在某个时候,它会运行。 在运行时它可能会被挂起&#xff0…

舆情监测方案主体需求,TOOM舆情监测预警应对处置方案

舆情监测预警是一种通过预先设定的告警机制,在发生重要事件或异常情况时及时通知相关人员的舆情监测方式。它旨在帮助企业和组织及时了解舆情变化,并采取必要的应对措施,舆情监测方案主体需求,TOOM舆情监测预警应对处置方案。 一…

在Unity中管理材质

Shader和Material的关系 Shader能够设置游戏物体的颜色或者能够通过材质来配置颜色。实际上,一个shader能够让许多物体看起来像是完全不同的物质。 Shader和材质作为一个整体工作:Shader定义了表面看起来可以像哪些东西,材质让表面真正看起来…

【手写 Vuex 源码】第一篇 - Vuex 的基本使用

一,前言 本篇开始,进入 vuex 源码学习,本篇主要介绍一下内容: 创建 vuex 源码项目;介绍 vuex 的基本使用; 二,创建 vuex 源码项目 1,使用 vue-cli 创建 vue2.x 脚手架 vue creat…

shell脚本(语法)

一、什么是shell脚本 1.1、shell 的两层含义:既是一种应用程序,又是一种程序设计语言 1.1.1、shell是一种应用程序 交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能称之为 shell 命令解析器。 shell 是…

阳离子交换树脂排钾,选择性吸附钾离子

Tulsimer T-42特级凝胶型强酸性阳离子交换树脂,适用于超纯水系统的混床用阳离子交换树脂 Tulsimer T-42是特级强酸型离子交换树脂,氢 H/钠 Na阳离子交换树脂, 是一款有较的交换容量 ,并同时拥有物理及化学稳定品质。可应用于汽电共生发电厂冷…

excel操作技巧:聊聊关于打印的一些事儿

在之前的学习中,小编给小伙伴们带来了许多关于Excel操作的小技巧,不过最近很多小伙伴在打印上又犯了难题,倒在了最后一步上,实在是亏得很。今天小编就来给大家讲讲打印的那些难事儿!难题一: 多列数据打印不…

【Unity】Tomcat 部署项目(3种方式)

一、将Unity WebGL包丢进webapps这是最简单粗暴的方式:将Unity WebGL包丢进tomcat/webapps目录即可。无需修改任何配置文件即可完成部署。使用tomcat10与Unity Pong Game包来做测试。①启动tomcat②将Unity Pong Game包丢进webapps目录浏览器直接访问:lo…

HTTP和HTTPS协议

HTTP协议 HTTP协议是一种应用层的协议,全称为超文本传输协议。 URL URL值统一资源定位标志,也就是俗称的网址。 协议方案名 http://表示的就是协议方案名,常用的协议有HTTP协议、HTTPS协议、FTP协议等。HTTPS协议是以HTTP协议为基础&#…

java面经汇总

Java基础 什么是字节码? jvm可以理解的代码(.class文件) Java代码从源代码到运行过程: java代码 -> javac编译器->.class字节码文件 -> 解释器&JIT(运行时编译器)->机器码 JIT编译器会将热…

球面坐标系下的三重积分

涉及知识点 三重积分球面坐标系点火公式一些常见积分处理手法 球面坐标系定义 球面坐标系由方位角φ\varphiφ、仰角θ\thetaθ和距离rrr构成 直角坐标系(x,y,z)(x,y,z)(x,y,z)到球面坐标系的(r,φ,θ)(r,\varphi,\theta)(r,φ,θ)的转化规则如下: {xrsin⁡φco…

使用Python脚本修改Maya ASCII文件路径方法

以下脚本修改当前项目路径和子文件夹中扩展名为“.ma”的所有文件,这样您就可以轻松地一次编辑所有文件。此脚本搜索特定字符串replace_This变量并将其替换为with_This,您可以使用它更改引用路径、纹理路径等… 话不多说直接上脚本: import…

JavaWeb-JavaScropt入门(二)

目录函数语法传参函数表达式作用域对象使用 字面量 创建对象 [常用]使用 new Object 创建对象使用 构造函数 创建对象函数 语法 function 函数名(形参列表) {函数体return 返回值; }那么有了创建函数,肯定有调用函数: // 函数调用 函数名(实参列表) …

聊一聊,我对DDD的关键理解

作者:闵大为 阿里业务平台解决方案团队 当我们在学习DDD的过程中,感觉学而不得的时候,可能会问:我们还要学么?这的确引人深思。本文基于工作经验,尝试谈谈对DDD的一些理解。 一、序 《阿甘正传》中&#xf…

亚马逊要求UL94防火测试阻燃测试标准及项目

UL94认证是什么?分几个等级?是如何表示各等级?带电的产品上架亚马逊都需要相关的UL报告,需要有ISO 17025资质的实验室出具的测试报告才能正常销售和恢复链接,UL94防火测试则是其中一项。UL94试验共有五种:1.B级的水平燃烧试验2.…