k3系统简介,k3sv

Kubernetes无处不在——开发者的笔记本、树莓派、云、数据中心、混合云甚至多云上都有Kubernetes。它已然成为现代基础设施的基础,抽象了底层的计算、

Kubernetes 无处不在—— 开发人员正在笔记本电脑、Raspberry Pi、云、数据中心、混合云甚至多个云上部署Kubernetes。它是现代基础设施的基础,抽象了底层的计算、存储和网络服务。 Kubernetes 隐藏了不同基础设施环境之间的差异并支持多云。

Kubernetes也成为编排的通用控制平面,不仅包括容器编排,还包括虚拟机、数据库甚至SAP Hana实例等各种资源。

尽管Kubernetes 正在快速发展,但它仍然给开发人员和运维人员带来了许多挑战。关键挑战之一是在边缘运行Kubernetes。与云或数据中心相比,边缘有很大不同。这是在高度受限的环境中的远程位置执行的。与数据中心中运行的类似设备相比,边缘设备只拥有一小部分计算、存储和网络资源。边缘设备与云的连接是间歇性的,并且主要在离线环境中运行。这些因素使得在边缘部署和管理Kubernetes 集群变得困难。

在此基础上,业界最广泛使用的K8S 管理平台的创建者Rancher Labs 发布了K3s,这是一种针对边缘高度优化的Kubernetes 发行版。 K3s 是Kubernetes 的简化迷你版本,但API 一致性和功能保持不变。从kubectl 到Helm 再到Kubernetes,您可以将几乎任何云原生生态系统工具无缝连接到K3。事实上,K3s 是一个经过CNCF 认证且兼容的Kubernetes 发行版,可以部署在生产环境中。几乎所有运行完整Kubernetes 集群的工作负载都保证在K3s 集群上运行。

Kubernetes 这个由10 个字母组成的单词被社区称为K8S。由于K3s 恰好是Kubernetes 内存的一半,Rancher 找到了一个五个字母的单词来代表新的发行版,并将其缩写为K3s。

深入了解K3s架构

K3 的美妙之处在于它的简洁。打包并部署为单个二进制文件(大约100MB),您可以在几秒钟内构建一个成熟的Kubernetes 集群。安装就像在集群中的每个节点上运行脚本一样简单。

K3s 二进制文件是自治的封装实体,运行Kubernetes 集群的几乎所有组件,包括API 服务器、调度程序和控制器。默认情况下,所有K3s 安装都包含足够的控制平面、kubelet 和containerd 运行时来运行Kubernetes 工作负载。当然,您还可以添加仅运行kubelet 代理和containerd 运行时的专用工作节点来调度和管理pod 的生命周期。

与传统的Kubernetes 集群相比,K3 中主节点和工作节点没有明显区别。 Pod 可以在任何节点上进行调度和管理,无论其角色如何。因此,主节点和工作节点的命名方案不适用于K3S 集群。

在k3s 集群中,运行控制平面组件和kubelet 的节点称为服务器,仅运行kubelet 的节点称为代理。服务器和代理都有容器运行时和kubeproxy 来管理集群中的隧道和网络流量。

6680981d28a64b61b4a5457b2ec5f5f0~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774447&x-signature=XV%2F%2BE2%2FPApt5gmQox%2F%2BCiaqpZko%3D

典型的k3s 环境运行一个服务器和多个代理。当您在安装期间传递服务器URL 时,节点将成为代理。否则,您将运行一个单独的、独立的k3s 集群,并拥有自己的控制平面。

那么Rancher 如何减少k3s 上的内存呢?首先,我们删除了运行最小集群不需要的许多Kubernetes 可选组件。接下来,添加几个必需的元素:containerd、Flannel、CoreDNS、CNI、Traefik Ingress 控制器、本地存储过程、内置服务负载均衡器和统一网络策略控制器。所有这些组件都打包成二进制文件并在同一进程中运行。除此之外,该发行版还支持开箱即用的Helm 图表。

上游Kubernetes 发行版臃肿且有大量可以删除的代码。例如,存储卷插件和云提供商API 可以显着增加您的发行版的内存。 K3s 忽略了所有这些以最小化二进制大小。

另一个重要的区别是集群状态的管理方式。 Kubernetes 依赖分布式键/值数据库etcd 来存储整个集群的状态。 K3s 用一个名为SQLite 的轻量级数据库取代了etcd,这是一个成熟的内置场景数据库。许多移动应用程序捆绑SQLite 来保存状态。

f91ff1af48944123bad61b4f3103e3a2~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774447&x-signature=oIs4wYb0fR5t%2FNynPMdx7NK12JU%3D

在至少三个节点上运行etcd 可以使Kubernetes 控制平面具有高可用性。另一方面,SQLite 不是分布式数据库。为了实现控制平面高可用性,K3 服务器可以指向外部数据库端点。支持的数据库包括etcd、MySQL 和PostgreSQL。通过有效地将状态委托给外部数据库,K3s 支持多个控制平面实例并提高集群可用性。

Rancher 正在试验名为DQLite 的SQLite 分布式版本,它最终可能成为K3 的默认数据存储。

e5bf1dba0edd4cdda967cd8d519287ce~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774447&x-signature=GcofDTtCpjnvK2SkJ9gJsxMjIyY%3D

K3s最大的优势在于其“自带电池但可更换”的做法。例如,您可以将containerd运行时替换为Docker CE运行时,将Flannel替换为Calico,将本地存储替换为Longhorn。

要了解有关K3s 架构的更多信息,我们强烈建议观看K3s 架构师Darren Shepherd 在北美KubeCon 2019 上的演讲。

K3s部署场景和拓扑结构

K3s 发行版支持多种架构,包括AMD64、ARM64 和ARMv7。凭借一致的安装体验,K3 可以在Raspberry Pi Zero、NVIDIA Jetson Nano、Intel NUC 或Amazon EC2 a1.4xlarge 实例上运行。

对于需要单节点Kubernetes 集群来维护相同的清单部署工作流程的环境,请在服务器或边缘设备上安装K3。这使您可以灵活地将现有的CI/CD 管道和容器映像与Helm 图表和YAML 文件结合使用。

如果您希望在AMD64 或ARM64 架构上运行高可用集群,请安装三节点etcd 集群,然后安装三台K3 服务器和一个或多个代理。这提供了生产级环境并为控制平面提供高可用性。

当您在云中运行K3s 集群时,您将服务器指向Amazon RDS 或Google Cloud SQL 等托管数据库,以运行具有多个代理的高可用控制平面。每个K3s 服务器都可以在不同的可用区中运行,以最大限度地延长正常运行时间。

如果您在具有可靠的始终在线连接的边缘计算环境中运行K3,请在云中运行服务器并在边缘运行代理。这使您可以灵活地在远程环境中运行代理,同时在云中运行高度可用且易于管理的控制平面。

最后,您可以在5G 边缘位置(例如AWS Wavelength 或Azure Edge Zones 环境)部署K3s HA 控制平面,同时在设备内运行代理。该拓扑反映了智能建筑、智能工厂和智能医疗场景。

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83488.html

(0)
小条's avatar小条
上一篇 2024年5月31日 下午11:33
下一篇 2024年5月31日 下午11:34

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注