百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

使用Talos简化Kubernetes

liuian 2025-02-07 18:19 11 浏览

使用 Talos 以简单的方式了解如何使用 Kubernetes 。

译自 Making Kubernetes Simple with Talos,作者 Ritesh。

今年,Kubernetes 随着 v1.30.0 版本的发布迎来了其十周年纪念日,巩固了其作为首选云平台的地位。EKS、GKS 和 AKS 等自管理 Kubernetes 集群占集群总数的 73%,其余 27% 为自管理,如 Dynatrace 所述。过去十年是公有云时代,但由于成本不断上升,一些企业正试图通过混合云找到平衡。根据 VMware 的说法,大约 76% 的组织现在利用多个云,即公有云和私有云的组合。Kubernetes 允许我们在所选硬件上构建多云和私有云层,并且以经济高效的方式构建,而无需承诺使用某个特定云。

尽管 Kubernetes 的采用率不断提高,但人们仍然关注成本效率、可靠性和安全性。从 Kubernetes 虚拟机过渡到裸机基础设施可通过消除管理程序层、简化故障排除流程和最大化应用程序的资源可用性来提供性能优势。裸机设置使组织能够完全控制硬件组件,从而针对特定工作负载进行定制优化。通过正确的工程实践和 Kubernetes 的集成,组织可以实现与公有云产品同等的功能。从历史上看,由于操作复杂性,特别是在管理集群生命周期方面,在裸机上运行 Kubernetes 构成了挑战。然而,这些障碍已随着 Talos 的引入而被克服,我们将在本文中进一步探讨。

Talos 是一个非常精简的操作系统,用 Golang 编写。Talos 被设计为一个特定于操作系统的操作系统,用于维护 Kubernetes 集群。为了使 Kubernetes 基础设施更可靠,我们需要确保每个节点运行相同版本的操作系统。Talos 可以通过添加 Talos 构建在其上的不可变理念来帮助我们保持 Kubernetes 基础设施的可靠性和一致性。

Talos 始终作为 SquashFS 映像运行,SquashFS 映像是 Linux 中的只读文件系统。Talos SquashFS 映像的总大小约为 80M。Talos 故意省略了 systemd、GNU 实用程序、控制台包、bash 或 SSH 二进制文件等组件,以最大程度地减少攻击面并降低安全漏洞的可能性。相反,它依赖于一个用于管理系统操作的现代 API。

Talos 仅包含所需内容。相反,所有内容都由一个现代 API 管理。Talos 非常注重不可变基础设施理念。

什么是不可变基础设施?

不可变基础设施一旦系统部署,你将无法对其进行任何更改;此概念称为不可变基础设施。如果在不可变基础设施中需要进行更改,则会创建一个具有所需修改的新基础设施,而不是更改现有基础设施。拥有不可变的基础设施使登台、预生产和生产环境更加一致。在裸机 k8s 基础设施上保持节点之间的一致性是最重要的。在这种类型的基础设施中,我们的应用程序与操作系统紧密耦合,这是不可变系统的缺点。

使用 Talos 的好处

  1. Talos 在整个系统中保持一致性,并避免任何配置更改。Talos 将此称为“可预测性”。
  2. Talos 旨在使 Kubernetes 基础设施完全不可变,从而增强可靠性、安全性和一致性。这使得 Talos 成为运行 Kubernetes 的裸机服务器的理想选择。
  3. Talos 被设计为不可变的,因此它在 RAM 上运行,而不是在磁盘上运行。由于 Talos 是 SquashFS 映像,因此它具有较少的写入点,这些写入点本质上是短暂的。
  4. Talos 具有高度安全性。
  5. Talos 是一个非常轻量级的操作系统,大约有 12 个二进制文件,全部用于运行 Kubernetes。
  6. Talos 是 API 驱动的。
  7. Talos 遵循 KSPP(内核自保护项目)给出的建议 - KSPP 文档

用例

Talos 非常适合自管理 Kubernetes 集群,但 CIVO 等平台提供使用 Talos 部署 Kubernetes 集群的支持。以下是使用 Talos 运行 Kubernetes 的一些用例。

1. 边缘应用程序:

要在边缘设备大规模集群中进行管理,Kubernetes 是最佳选择之一,因为它不仅可以设计用于容器编排,还可以有效地管理边缘设备。为了确保边缘应用程序的可靠性和安全性,拥有一个安全且可靠的 Kubernetes

2. 裸机上的 Kuberntes:

在裸机上使用 Kubernetes 消除了不必要的抽象,使我们的应用程序能够完全控制硬件。Talos 是在裸机服务器上部署 Kubernetes 的绝佳选择。它消除了不必要的配置和故障排除,并使在裸机上部署 Kubernetes 变得容易。

3. AI & 机器学习工作负载:

Kubernetes 被证明是测试和训练新的机器学习模型的理想平台,能够无缝部署到更大规模的环境中。在部署中保持一致性对于确保安全稳定的模型部署至关重要。Talos 通过提供一致的环境,根据需求实现可靠的模型扩展,在此过程中发挥了关键作用。

架构和设计

Talos Architecture 由许多具有已定义 gRPC 界面的不同组件组成。所有 Talos 组件之间的通信都通过 gRPC 进行。

Talos 文件系统分区

  • EFI:存储 EFI 引导数据。
  • BIOS:用于 GRUB 第二阶段引导。
  • Boot:用于引导加载程序,存储 initramfs 和内核数据。
  • Meta:存储有关 Talos 节点的元数据。
  • State:存储机器配置。
  • Ephemeral:挂载在 /var 上,用于存储临时数据。

Talos的文件系统有3层:

  1. rootfs:它是只读的核心squashfs层。然后将Squashfs作为循环设备挂载到内存中。
  2. tmpfs:此文件系统用于运行时特定需求。
  3. system:内部操作必需。

例如,Talos 将写入 /system/etc/hosts,然后将其绑定到 /etc/hosts 中。Talos 不会让 /etc 可写,而只让 /etc 的特定部分可写。/system 会在每次启动时完全重新创建。为了实现启动时持久化,Talos 创建了 overlay 的文件系统。Kubernetes 拥有 /var。此目录由 etcd 用于写入数据。我们添加 "--preserve" 选项来避免在升级时删除此数据,仅当机器升级或重置时才会删除此数据。

组件

talosctl 是一个用于与 Talos 中所有组件交互的 CLI 工具。类似于我们使用 kubectl 与 kube-api 交互的方式,talosctl 用于与 apid 交互。

  • apid:Talos 是 API 驱动的,apid 负责提供 gRPC 终结点以与不同的组件交互。apid 在每个节点上都存在,包括控制平面。

Talos 架构

  • machined:它负责处理来自 apid 的 API 请求,并进行资源和控制管理。
  • trustd:它是一个守护进程,用于在系统中建立信任。它用于在节点之间建立信任。
  • udevd:它用于在 /dev 中设置必需的链接。

控制器与资源

  • 资源:它们与 Kubernetes 中的资源类似,资源属于不同类型,并包含元数据,如命名空间、类型等。资源可通过其命名空间进行唯一标识。“机器配置”资源反映了当前的机器配置。
  • 控制器:在 Talos 中,控制器作为线程运行。一个控制器可以管理多种资源类型,并且每种资源类型都可以有许多资源。为了避免冲突,只有一个控制器负责管理命名空间中特定资源类型。Talos 将为控制器定义的资源类型存储在 meta 命名空间中。

Demo

在这篇文章中,由于尚未提供裸机,我们将使用 Docker 来展示该功能。订阅我们的博客,因为我们计划在之后的文章中介绍如何在裸机上运行 Talos。我们将学习如何使用 Docker 创建 Kubernetes 集群。

设置 Docker 和 Talos 集群

先决条件

在继续之前,请确保你已安装以下软件:

  • Docker Engine
  • Kubectl
  • talosctl

注意:talosctl 和 Talos 操作系统 ISO 镜像版本应相同。有关更多信息,请查看发布信息。

Mac:

brew install siderolabs/tap/talosctl

Linux:

wget https://github.com/siderolabs/talos/releases/download/v1.7.0/talosctl-linux-amd64
chmod +x talosctl-linux-amd64
./talosctl-linux-amd64
sudo mv ./talosctl-linux-amd64 /usr/local/bin

使用 docker 和 talosctl 安装一个三节点集群。以下命令将创建一个 3 节点集群(controlplane、workernode-1、workernode-2)。

talosctl cluster create --workers 2

让我们检查一下创建的节点数以及操作系统信息

kubectl get nodes -o wide
kubectl get node talos-default-worker-1 -o json | jq -r '.status.nodeInfo.osImage'

让我们清理并删除集群

结论

Talos 在管理 Kubernetes 环境中发挥着至关重要的作用。它的简单性极大地简化了 Kubernetes 集群的配置。Talos 的不可变理念极大地增强了基础设施的安全性与一致性。

常见问题解答

Talos 与 k3s

Talos 与 k3s 之间没有直接比较。但是,在考虑部署 Kubernetes 集群时,k3s 需要一个操作系统,并且具有其他依赖项,这些依赖项根据底层操作系统而异。而 Talos 的重点是使用其不可变理念运行 Kubernetes 集群,从而保持其安全性和可靠性。Talos 使 Kubernetes 部署变得更加简单。

Talos 包含哪些二进制文件?

  • Talos 中的 init 二进制文件负责运行 kubelet 和容器运行时。
  • Containerd 是 Talos 中的运行时,以及 runc。
  • Modprobe 用于为某些二进制文件加载模块。模块可以添加到 Talos,或者我们可以使用 Image Factory 中预先构建的模块。
  • 对于卷管理,使用 lvm。
  • udevd 用于从内核收集消息并将其传递给其他系统。
  • xfs_repair 等二进制文件用于修复 XFS 文件系统。

Talos 是否免费?

Talos 是一个免费且开源的操作系统,受 Mozilla 公共许可证版本 2.0 约束,允许商业使用。在 Talos Github 存储库 中查看更多信息。

为什么要使用 Talos?

Talos 使 Kubernetes 环境更加安全可靠。众所周知,Talos 适用于 Kubernetes 等分布式系统,如果您希望您的 Kubernetes 环境更加安全可靠,则应该使用 Talos。

我们可以在裸机上运行 Talos 吗?

如果您希望在裸机上配置 Kubernetes,Talos 是理想的选择。敬请关注,了解如何在裸机上部署 Talos,订阅我们的帖子或直接联系我们以进一步讨论此事。

谁为 Talos 提供额外支持?

  • Sidero Labs
  • CloudRaft 用于实施和支持。联系我们 以进一步讨论。

相关推荐

面试问了解Linux内存管理吗?10张图给你安排的明明白白!

来源:https://www.cnblogs.com/NanoDragon/p/12736887.html今天来带大家研究一下Linux内存管理。对于精通CURD的业务同学,内存管理好像离我们很远...

Linux Kernel 6.12震撼发布:实时性能飙升,开启全新计算时代!

概述LinusTorvalds在邮件列表中宣布推出LinuxKernel6.12,该版本带来了多项重要的更新和功能增强。更新亮点PREEMPT_RT支持主要内容:LinuxKernel...

linux Grub2功能、常见配置及使用方式

Grub2(GrandUnifiedBootloaderversion2)是一款功能强大的引导加载程序,提供了以下功能和常见配置:多操作系统支持:Grub2可以加载和引导多个操作系统,包括不同...

Linux内核必备知识点-platform总线详解

platform总线是学习linux驱动必须要掌握的一个知识点。本文参考已发布:Linux3.14内核一、概念嵌入式系统中有很多的物理总线:I2c、SPI、USB、uart、PCIE、APB、AHB...

linux kernel内核的头文件获取、安装等方法

交叉编译时经常会用到这些头文件。下载合适版本的linux地址:https://mirrors.aliyun.com/linux-kernel/https://mirrors.edge.kernel.o...

600个常用 Linux 命令,收藏备用!

本文为Linux命令大全,从A到Z都有总结,建议大家收藏以便查用,或者查漏补缺!A命令描述access用于检查调用程序是否可以访问指定的文件,用于检查文件是否存在accton用于打开或关闭记帐进程或...

Linux 中 `/proc/cpuinfo`文件中最常见的标志

/proc/cpuinfo是一个虚拟文件系统,在Linux系统中提供有关CPU(中央处理器)的信息。通过读取该文件,您可以获取有关处理器的详细信息,如型号、频率、核心数、缓存大小等。本文将介绍...

600个Linux命令大全,从A到Z,2023年收藏大吉!

本文为Linux命令大全(有PDF),从A到Z都有总结,建议大家收藏以便查用,或者查漏补缺!A命令描述access用于检查调用程序是否可以访问指定的文件,用于检查文件是否存在accton用于打开或关闭...

Linux下如何查看硬件信息?

我们在Linux下进行开发时,有时也需要知道当前的硬件信息,比如:CPU几核?使用情况?内存大小及使用情况?USB设备是否被识别?等等类似此类问题。下面良许介绍一些常用的硬件查看命令。lshwls...

从PXE到GRUB到VHD文件启动

今天玩点花活儿,之前的文章再探从VHD文件中启动Windows及Grub双启动VHD文件+TinyCoreLinux中研了一下GRUB和VHD文件的关联应用,那么结合PXE又会是怎么样的呢?...

bootra1n教学:Windows用户用U盘Linux实现checkra1n越狱方法

checkra1n越狱工具在前几天推出Linux版本,相信对于Windows用户可能也看得很模糊,甚至要切割硬碟到安装Linux系统太过于繁杂,这篇要来教大家最简易最快速利用U盘Linux...

不了解NUMA,就看不懂Linux内核

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这...

Linus Torvalds接受微软Hyper-V升级 下一代Linux启动会更快

虽然Windows的粉丝和Linux的粉丝经常喜欢进行激烈的键盘大战,但操作系统的制造商们自己也了解彼此的优缺点。毫无疑问,微软也明白这一点,事实上,它甚至鼓励用户尝试Linux,尽管是使用...

deepin使用笔记——开机卡LOGO,无法正常关机的解决办法

第一次使用deepin操作系统,很容易遇到几种情况:1,开机卡LOGO,无法进入系统。2,开机可以进入系统,但是进入系统后桌面环境无法正常打开,一直卡着什么都不能用。3,开机后看似一切正常,但关机的时...

如何检查Linux系统硬件信息?从CPU到显卡,一网打尽!

你可能会问:“我为什么要关心硬件信息?”答案很简单:硬件是Linux系统的根基,了解它可以帮你解决很多实际问题。比如:性能调优:知道CPU核心数和内存大小,才能更好地调整程序运行参数。故障排查:系统卡...