NKD:容器云集群与 OS 一体化运维利器

news2024/11/18 7:49:59

NKD 是 NestOS-kubernetes-Deployer 的缩写,是为了基于 NestOS 部署的 Kubernetes 集群运维工作准备的解决方案。其目标是在集群外提供对集群基础设施(包括操作系统和 Kubernetes 基础组件)的部署、更新和配置管理等服务。

1. 引言

Kubernetes 作为云原生领域容器云场景的事实标准,以其卓越的功能和灵活性,极大地简化了容器化应用程序的部署和管理。容器技术封装所需运行环境,实现与底层操作系统的解耦,而 Kubernetes 更进一步实现了与底层运行节点的解耦,使得应用在不同云提供商和环境中无缝部署。然而,这种解耦也带来了新的挑战。随着 Kubernetes 的广泛应用,运维复杂性逐渐凸显。维护 Kubernetes 集群需要大量技术和资源,运维人员必须熟悉复杂的 Kubernetes 配置和管理,以保证集群的稳定运行。为解决这一问题,运维人员主要将精力投入到集群本身的运维管理中,对于底层操作系统和 Kubernetes 基础组件持保守态度,避免频繁更新。然而,考虑到安全更新和 Kubernetes 新版本特性的支持,底层基础设施组件的更新势在必行。因此,需要一种解决方案来简化底层基础设施的运维工作,使运维更轻松地管理和更新集群的基础设施。

2. NestOS 云底座操作系统

NestOS 是一款在 openEuler 社区 CloudNative sig 组孵化的云底座操作系统,专注于提供大规模集群部署环境下最佳的容器主机。传统上,使用通用操作系统作为集群基础设施时,采用类似 Red Hat Satellite 或 SUSE Manager 等企业级系统管理平台是一个较为理想的解决方案。这些平台提供软件包管理、配置管理、补丁更新等功能,便于对大规模集群进行运维。然而,在对操作系统进行升级和管理的过程中,可能会遇到网络或电源等异常情况,导致部分节点处于不稳定的中间态。此外,这些平台仅限于支持其本身所覆盖的管理范围,对于集群中存在运维人员临时维护或开发人员临时调试导致的环境不一致,可能无法及时发现和修正。为解决这些问题,NestOS 采用基于 rpm-ostree 技术的操作系统封装方案,实现原子化更新,避免中间状态的存在,即使在升级过程中出现失败也能快速回滚至上一个稳定状态,保证系统的稳定性。在日常运行中,NestOS 采取安全措施保证系统稳定性,关键目录设为只读状态,核心系统文件和配置不会被意外修改,通过 ignition 机制导入和固化重要的系统配置,确保配置的持久性和一致性。这使得操作系统能够始终保持预期的状态,减少意外错误。NestOS 的核心思想类似于容器技术中的镜像,旨在为操作系统层面打造不可变基础设施。在部署时冻结了操作系统版本和配置,使其成为一个不可变的实体。这种做法有助于消除操作系统变体,确保基础组件版本与配置的一致性,从而提供了一个稳定可靠的基础设施环境。在集群中使用 NestOS 可以带来更高的一致性和可靠性,简化和高效地管理和维护操作系统。图片可变基础设施 vs 不可变基础设施然而,引入 NestOS 在原理上简化集群运维工作的同时,也在实际落地中带来了一些新的挑战。例如,NestOS 作为一种新的操作系统形态需要运维人员熟悉理解其核心思想,接受任何改动均需在 CICD 流水线上重新构建系统镜像而不是登入系统操作、操作系统变更需重新引导等与通用操作系统迥然不同的使用习惯,以便有效地管理和维护。此外,NestOS 与传统操作系统存在差异,需要适应新的工具和技术,具体有如下几个方面:

  1. 「系统镜像构建工具链」:NestOS 一切业务相关的组件及配置变更均需重新构建新版系统镜像,因此提供 NestOS-Assembler 编译工具链,可以完成从构建配置到多种系统镜像格式的生成,同时提供自动化测试工具,验证镜像基础组件可靠性。
  2. 「环境相关动态配置文件」:NestOS 通过 ignition 机制在部署阶段将与环境相关的动态配置(例如登录凭据、网络、外挂存储等信息)注入,因此需要运维人员提前编写配置文件,并通过 NestOS 提供的工具转化为机器可读的 ign 文件,供操作系统部署时使用。
  3. 「系统镜像更新源」:NestOS 支持通过 rpm-ostree 直接下载当前版本树的最新版本,但需要运维人员对系统镜像更新源进行维护管理,相应也需要学习对应的部署工具。也可以通过容器镜像的形式分发新版本系统镜像,复用现有 CICD 资源,但将无法应用增量更新方式,每次更新均需下载完整系统镜像。
  4. 「系统更新升级管理」:上述工具为系统更新做好了准备,但没有解决何时可进行系统升级的问题。NestOS 虽提供了 zincati 组件实现基本的更新策略管理,但最佳实践仍应当为结合操作系统当前运行业务状态,在业务允许的时间窗口对节点执行更新维护操作。对于容器云场景,NestOS 提供基于 operator 机制实现的 housekeeper 服务,在对节点上运行的容器业务进行驱逐后再行升级,用户也可基于此制定更为复杂的升级维护策略。

接纳操作系统使用的新方式需要成熟案例与时间积淀,但引入的运维挑战可以通过方便的运维工具去解决。在这一背景下,NestOS-kubernetes-Deployer 应运而生,旨在提供集群外的部署、更新和配置管理等服务,为运维人员提升 NestOS 运维体验。

3. NKD 对容器云运维场景的助力

NKD 是面向 kubernetes 集群场景的解决方案,主要简化集群部署和升级流程,具体如下:

  1. 「集群基础设施创建」:NKD 根据集群需求,连接基础设施提供商动态创建所需的 IaaS 资源,支持裸金属和虚拟化场景,目前优先实现 openstack 场景。
  2. 「操作系统镜像构建」:NestOS 提供完善的镜像构建工具链,可以轻松集成到用户现有 CICD 流程中,便于根据 openEuler 官方或用户自定义软件源快速构建定制镜像。NKD 目前获取镜像构建结果,并将相应更新源配置应用到集群中,未来将支持 NKD 配置托管镜像构建流程。
  3. 「动态配置注入」:在部署 NestOS 系统时,需要通过 ignition 点火机制传入系统部署后所需的动态配置。NKD 目前提供工具形式,支持通过命令行参数或配置文件将用户配置转换为 ign 点火文件。最终目标是提供用户友好的前端配置界面,便于轻松生成所需配置,并提供配置变更版本管理功能。
  4. 「kubernetes 集群部署」:这也是 NKD 的核心能力,将 k8s 集群部署所需配置自动合并到用户配置生成的 ign 文件中,使得节点在部署完成操作系统引导后自动开始创建 k8s 集群,无需手动干预。
  5. 「集群状态检测与 housekeeper 部署」:NKD 持续检测 k8s 集群状态,一旦集群创建完成,向用户提供访问凭据,并部署 housekeeper 自定义资源,用于后续维护升级功能。用户可选择默认不部署该 CRD。
  6. 「操作系统或 k8s 基础组件升级维护」:当操作系统或 k8s 基础组件需要升级维护时,NKD 使用镜像构建工具重新构建新版系统镜像,并在查询到新版镜像后,向集群创建 housekeeper CR 资源。集群中的 housekeeper 服务按照配置逐次对集群节点进行升级,完成整个集群的升级工作。

通过以上整体方案,用户可只通过 NKD 一键式完成集群创建和后续更新工作,而无需手动进行繁琐步骤,简化运维步骤。接下来我们对 NKD 架构及未来规划作一个简要介绍。

4. NKD 完整规划

图片NKD 整体架构与集群交互全景NKD 的整体架构由多个组件构成,主要包括 NKDS(NestOS-kubernetes-deployer-service)作为主体、部署到集群中的 HKO(housekeeper operator)以及集成在 NestOS 镜像中的 installer。此外,还可以配合 NestOS 镜像构建工具链、配置管理仓库(如 git)和私有化部署的容器镜像仓库,共同完成集群运维任务。目前 NKDS 以命令行工具提供,暂不提供对外 http 接口和前端配置页面,但主体功能所需的基础设施管理、配置管理、系统镜像管理、证书管理、健康检测等模块已初步形成。HKO 主要包括面向集群的 HKO 组件和集成在 NestOS 镜像中的 HKD(housekeeper daemon)组件。目前 installer 组件负责在系统点火阶段部署创建 K8S 集群,未来计划将其功能融合到 HKD 组件中,使整体方案更加精简,更易于用户根据个性化需求管理所需的 K8S 基础组件。NKD 的最终目标是以长期驻留服务形式提供运维服务,同时支持多个集群的管理。它将提供持久化配置变更记录、证书管理、多种更新升级策略和镜像源频道等功能。未来,我们将持续优化 NKD 的功能和性能,并引入更多智能化特性,如自动化故障处理和资源优化等。我们的目标是将 NKD 打造成 NestOS 生态中的核心组件,为云原生场景下的运维工作提供全方位支持,进一步推动云原生技术的发展和应用。

5. 总结

NestOS 作为专为云原生场景设计的操作系统,为容器云运维带来了巨大的助力,而 NKD 则是针对 NestOS 运维中新引入的问题所提供的解决方案。通过持续优化和创新,NKD 将使业界更易接受以 NestOS 为代表的不可变基础设施,同时随着 Kubernetes 社区的发展,更多创新解决方案将推动云原生技术向更成熟和可持续的未来发展。欢迎大家访问 NestOS 项目官网(https://nestos.openeuler.org/)以及NKD项目主页(https://gitee.com/openeuler/nestos-kubernetes-deployer)交流讨论。

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

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

相关文章

双栏排版中,[!b]等等的一些命令都不行啊

\usepackage{stfloats} Latex:图片、表格占据双栏排版的两栏时 的位置控制_latex stfloats_weixin_39450145的博客-CSDN博客目录1.问题:怎么在双栏排版中,让占据两栏的表格出现在页面顶端?2.解决:1)图片&a…

378. 有序矩阵中第 K 小的元素

378. 有序矩阵中第 K 小的元素 原题链接:完成情况:解题思路:参考代码:__378有序矩阵中第K小的元素__直接排序__378有序矩阵中第K小的元素__归并排序__378有序矩阵中第K小的元素__二分查找 原题链接: 378. 有序矩阵中…

中学高级本习集c++

第一章 回溯法 1.1 马拦过河卒 源程序名 knight.???(pas, c, cpp) 可执行文件名 knight.exe 输入文件名 knight.in 输出文件名 knight.out 【问题描述】 棋盘上A点有一个过河卒,需要走到目标B点…

山西电力市场日前价格预测【2023-08-10】

日前价格预测 预测明日(2023-08-10)山西电力市场全天平均日前电价为328.01元/MWh。其中,最高日前电价为366.62元/MWh,预计出现在20: 00。最低日前电价为283.28元/MWh,预计出现在13: 15。 价差方向预测 1: 实…

本质安全设备标准(IEC60079-11)的理解(六)温度

本质安全设备标准(IEC60079-11)的理解(六)温度 本质安全设备的温度要求也是非常复杂的,首先在标准中涉及有3个温度的概念: 环境温度ambient temperature, 工作温度service temperature和最高表…

聊聊机器人学习中的“资产”与“负债”(节选)

前言: 程序里面的bug,人生过程的bug,都非常让人烦躁的。 前一篇: 聊聊机器人学习中的“投资”与“消费”(节选) 有很多学生和朋友,越学越累,越活越累?这到底是为何&a…

Java | 包和内部类

目录 一、Java类包 1.1 类名冲突 1.2 完整的类路径 1.3 创建包 1.4 导入包 1.4.1 使用import关键字导入包 1.4.2 使用import导入静态成员 二、内部类 2.1 成员内部类 2.1.1 成员内部类简介 2.1.2 使用this关键字获取内部类与外部类的引用 2.2 匿名内部类 类除了具有…

无涯教程-Perl - getnetbyname函数

描述 此函数返回由NAME指定的网络信息(在列表context中)($name,$aliases,$addrtype,$net) 语法 以下是此函数的简单语法- getnetbyname NAME返回值 此函数在错误时返回undef,否则在标量context中返回网络地址,在错误时返回空列表,否则在列表context中返回网络记录(名称,别…

在软件测试中,如何有效地跟踪和管理缺陷?

在软件测试中,跟踪和管理缺陷是非常重要的,因为这有助于确保所有问题得到妥善处理,避免在产品发布后出现问题。以下是跟踪和管理缺陷的一些有效方法: 1.创建缺陷报告:当发现一个缺陷时,应该立即创建一个缺…

前端进阶js02----null和undefined的区别

1.相同点 1)都是原始类型的值且保存在栈中。 2) 在布尔运算中都会被认为是false 2.不同点 1)null是js的关键字,表示空值;undefined不是关键字,是一个全局变量。 2)值相同,但类型不一样 值相同&#xff1a…

Day 25 C++ queue 容器(队列)

文章目录 queue 基本概念定义注意基本概念队头(Front)——指向队列中最早添加的元素的位置。队尾(Rear)——指向队列中最后添加的元素的位置。入队(Enqueue)——将元素添加到队尾。出队(Dequeue…

Docker 方式 部署 vue 项目 (docker + vue + nginx)

1.安装好 nginx 。 2. 把 vue 项目的源码克隆到确定目录下。用 git 管理,所以直接 git clone 到既定目录就行了。 如我的目录是:/root/jiangyu/projects/gentle_vue/gentle_vue_code 。 3. 项目打包: npm run build 复制 会自动生成 dist…

【Linux】-进程概念之进程优先级(如何去进行调度以及进程切换),还不进来看看??

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

小小推磨台(我在芜湖等你)

君问归期已有期,江城相逢话恩奇 我 渐渐明了 因为 有祂同行 有期待 有不知所措 离别故乡 去远方 是求学 更是认识祂 我 还不知 那里有没有家 或许有 或许有人找寻 忽然间 想到不认识的相逢 已然在祂预备之中 在那里 侧耳倾听 彼此谈论 那是和睦同居 好的无比 if (&q…

优雅地处理RabbitMQ中的消息丢失

目录 一、异常处理 二、消息重试机制 三、错误日志记录 四、死信队列 五、监控与告警 优雅地处理RabbitMQ中的消息丢失对于构建可靠的消息系统至关重要。下面将介绍一些优雅处理消息丢失的方案,包括异常处理、重试机制、错误日志记录、死信队列和监控告警等。…

科技资讯|苹果手机版Vision Pro头显专利曝光,内嵌苹果手机使用

根据美国商标和专利局(USPTO)公示的清单,苹果公司近日获得了一项头显相关的技术专利,展示了一款亲民款 Vision Pro 头显,可以将 iPhone 放置在头显内部充当屏幕。 根据patentlyapple 媒体报道,这是苹果公司…

设计模式——单例模式(懒汉和饿汉)

单例模式 一、概念 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。一个类只能有一个实例在生活中是很常见的,比如打印机程…

若依管理系统后端将 Mybatis 升级为 Mybatis-Plus

文章目录 说明流程增加依赖修改配置文件注释掉MybatisConfig里面的Bean 代码生成使用IDEA生成代码注意 Controller文件 说明 若依管理系统是一个非常完善的管理系统模板,里面含有代码生成的方法,可以帮助用户快速进行开发,但是项目使用的是m…

单例模式_饿汉模式_懒汉模式(含线程安全写法)

前言 某个类在程序中只存在唯一一份实例,叫做单例模式。 目录 前言 一、饿汉模式 二、懒汉模式 (一)单线程写法 (二)线程安全写法 (三)线程安全和不安全写法的区别 结语 一、饿汉模式 …

分享windwosServer2012R--ISO镜像下载地址(含激活教程)

windowsServer2012R----急速网盘下载地址:点击下载 提取码:888999 激活下载:点击下载 提取码:888999