Kubernetes 集群管理:Kurator or Kubespray

这篇具有很好参考价值的文章主要介绍了Kubernetes 集群管理:Kurator or Kubespray。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要:Kubespray 和 Kurator 就是这类开源工具的典型代表。本文将对这两款工具进行比较。

本文分享自华为云社区《Kubernetes 集群管理:Kurator or Kubespray-华为云云原生团队》,作者: 云容器大未来 。

随着云计算技术的飞速发展,Kubernetes 已经成为了容器编排领域的事实标准。用户可以通过 Kubernetes 自动化地部署、扩展以及管理容器化的应用程序。然而,在不同云环境下创建高可靠的 Kubernetes 集群可能是一个复杂和漫长的过程。面对这种情况,许多用户开始寻找能够自动化部署和管理 Kubernetes 集群的工具,而 Kubespray 和 Kurator 就是这类开源工具的典型代表。本文将对这两款工具进行比较。

Kubespray

Kubespray 是一个开源项目,旨在帮助用户在多云环境中部署和管理Kubernetes集群。为了实现这个目标,Kubespray 使用了 Ansible 这个强大的工具。Ansible 是一个深受信赖的开源自动化运维工具,主要用于自动化应用部署、配置管理和任务执行。基于此,Kubespray 能够在各种云平台,如 AWS、GCE、Azure、OpenStack 等以及裸机等硬件上进行部署。此外,Kubespray 还具有以下优点:

● 支持高可用集群

● 网络插件等属性可组合

● 支持多种流行 Linux 发行版

● 持续集成测试

使用 Kubespray,用户可以选择执行一个 Ansible 脚本,然后 Ansible 会使用 SSH 协议与各个目标主机进行通信,并基于该脚本实现集群部署、清理、升级等任务。

Kurator

Kurator是由华为云云原生团队研发的业界领先的分布式云原生开源套件。其设计理念和实践经验源自华为云在分布式云原生领域多年的优秀实践。Kurator虽然基于Kubespray对本地数据中心集群的生命周期进行管理,但与Kubespray的主要区别在于,Kurator采用了更易于理解和配置的云原生声明式方法来管理集群,可谓站在了巨人的肩膀上。具体来说,Kurator设计了声明式的API用以表达Kubernetes集群的期望状态(比如集群的版本,集群的节点规模,网络配置等),并通过 Cluster Operator 对集群生命周期进行管理。这种方法极大地简化了用户的操作:用户只需将期望状态声明到 API 对象中,无论是创建集群还是进行其他操作,剩下的所有工作都可以由 Kurator 的Cluster Operator自动完成。此外,在分布式云场景下,由于资源和环境的差异和复杂性,这种声明式的方法具有更高的自动化程度和更好的扩展能力,使得管理和操作变得更为简便和高效。

Kurator 的使用示例

下面的示例将展示如何使用 Kurator 部署一个本地数据中心的 Kubernetes 集群。

1.在已经安装了 Kubernetes 集群的机器上安装 Kurator 的Cluster Operator

2.创建包含 SSH key 的 secret(一种Kubernetes中用来保存敏感数据的对象)

3.声明包含了机器信息以及集群信息的 CRD(Custom Resource Definition,自定义资源定义,用于扩展Kubernetes API)

4.将这些 CRD 应用到集群中,Cluster Operator 就会开始自动执行目标集群的安装

下面是上述步骤中用到的部分 CRD 实例

  • CustomMachine 用来声明目标集群的主机信息
  • CustomCluster 用来声明配置网络插件、高可用等集群属性
  • KubeadmControlPlane 用来声明集群控制面相关的配置

下面的代码示例展示了如何定义'CustomMachine'和'CustomCluster'。

apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: CustomMachine
metadata:
name: cc-custommachine
namespace: default
spec:
master:
- hostName: master1
# 将publicIP 的参数修改为真实master节点的公有IP
publicIP: 200.x.x.1
# 将privateIP 的参数修改为真实master节点的私有IP
privateIP: 192.x.x.1
sshKey:
apiVersion: v1
kind: Secret
name: cluster-secret
node:
- hostName: node1
# 将publicIP 的参数修改为真实node节点的公有IP
publicIP: 200.x.x.2
# 将privateIP 的参数修改为真实的node节点的私有IP
privateIP: 192.x.x.2
sshKey:
apiVersion: v1
kind: Secret
name: cluster-secret
...
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: CustomCluster
metadata:
name: cc-customcluster
namespace: default
spec:
cni:
# 可将cni的类型设置为 calico、flannal、cilium等
type: cilium
controlPlaneConfig:
# 高可用选项中将该地址设置为虚拟IP的地址
address: 192.x.x.0
# 可选项,用以设置负载均衡的域名
loadBalancerDomainName: my-apiserver-lb.kurator.com
# 可选项,用于添加到API服务器签名证书,以保证其能被正确的验证
certSANs: [200.x.x.1,200.x.x.2]
machineRef:
apiVersion: cluster.kurator.dev/v1alpha1
kind: CustomMachine
name: cc-custommachine
namespace: default
...

Cluster Operator 的实现细节

在Kubernetes环境下,一旦上述的自定义资源(CR)被创建或更新后,相关事件会被发送到 API server。Cluster Operator 会监听这些与CR相关的事件,并根据定义的期望状态(由spec的字段定义)创建相应的manager worker来实现状态的调整,即从当前状态调整至期望状态。

这些manager worker是由Cluster Operator创建和管理的一种特殊的 Pod。这些 Pod能够执行相应的Ansible集群管理命令来实现状态调整。根据当前状态和期望状态的区别,Cluster Operator 会创建不同的worker来实现不同的调整。Cluster Operator 也会监听这些worker的完成情况,以确认任务的完成和状态的更新。

除了集群的创建和删除,集群节点扩缩容和升级等也是相同的流程。例如,进行升级时,只需要在 KubeadmControlPlane中修改version字段即可。同样地,进行扩缩容时,只需增删 CustomMachine中的节点信息字段。

整个过程如下图所示:

Kubespray与Kurator的对比

Kurator和Kubespray都可以在多种云环境中部署生产可用的Kubernetes集群。Kubespray具有前面介绍的诸多优点,包括提供了高可用选项。Kurator继承了Kubespray的能力与优点,同样支持高可用。然而,这两者在技术实现、用户体验和项目愿景与社区等方面存在显著的差异。

1、技术实现

在Kubespray中,集群的配置主要通过清单文件和变量文件进行。清单文件定义了Ansible需要管理的主机,而变量文件则用于实现对Kubernetes集群的定制。在集群管理方面,Kubespray依赖于执行一系列的Ansible-playbook命令。每一种对集群的操作都有一个相应的Ansible脚本,这些脚本覆盖了集群部署、扩缩容、升级、清理等集群生命周期的管理。执行这些脚本需要使用Ansible-playbook命令,并在命令中包含使用的脚本、权限访问以及其他的参数信息。

相较之下,Kurator的实现方式有所不同。在Kurator中,所有的配置信息都被统一放在了API对象上。这意味着用户无需从Ansible的角度去管理这些配置,而是通过声明API对象的状态来配置。例如,当用户声明了期望的API对象的状态后,Cluster Operator就会自动触发并执行相应的操作。用户无需知晓底层使用的具体Ansible脚本,使得操作更为简洁和直观。

总的来说,虽然Kubespray提供了更灵活的定制化能力,但Kurator通过集中式的API对象管理和自动化操作,提供了更为简单、直观的集群配置和管理方式,在云原生环境下具有更好的扩展性。

2、用户体验

正如上面提到的,在Kubespray中,用户需要配置清单文件和变量文件,然后根据自己的需求调整并执行对应的Ansible命令。

而 Kurator采用的是声明式配置来管理本地 Kubernetes 集群,这一方式与 Kubernetes 的核心设计理念高度一致。因此,对于 Kubernetes 用户来说,Kurator 更容易理解,并且学习成本更低。与仅需描述期望状态的Kurator相比,Kubespray 使用的是 Ansible 命令,这对于没有 Ansible 经验的用户来说可能会有一定的学习挑战。

此外,使用 API 对象的方式,Kurator 能够保存集群信息以及管理操作记录,方便用户查看和跟踪。由于保存了当前集群的信息,Kurator 还能在执行操作之前,对比操作参数进行预检查。例如,当用户想要升级集群的 Kubernetes 版本时,Kurator 可以在操作开始之前判断当前升级跨度是否合适。

借助 Operator 模式,Kurator 能够自动化地创建和管理集群。如果集群操作出现失败,用户可以删除出错的 worker,Kurator 会立即自动创建一个新的、功能相同的集群管理 worker,确保操作的幂等性,即重复操作不会改变系统状态。

这种高度自动化的方式有助于减少人工干预的时间和成本,从而降低人为错误的发生率并提高整体效率。

3、项目愿景与社区

在社区愿景方面,Kubespray 的定位是在各种云环境中部署生产可用的 Kubernetes 集群,并没有将其关注点放在分布式云环境的集群管理上。而 Kurator 的定位是成为一键式分布式云原生套件。除了支持在多种云环境中部署集群,Kurator 更深远的目标是帮助用户一站式构建专属的分布式云原生基础设施,以支持企业业务在不同的云环境和边缘环境之间进行分布式升级。因此,Kurator 的最新版本引入了 "舰队" 的概念,以提供一致地管理分布在任何云环境上的集群的能力。

另外,在社区发展的阶段上,两者也有明显的不同。Kubespray 目前非常活跃且成熟,拥有大量的贡献者和用户。相较而言,Kurator 尚处于初期阶段,但潜力无限,充满创新可能。Kurator 社区汇聚了资深的开源项目贡献者,并且高度重视与尊重每位参与者的讨论和贡献。对于 Kubernetes 的新手,Kurator 可以帮助轻松创建集群并一键集成常用开源工具,便于用户更好地体验云原生技术。而对于追求突破和创新的开发者来说,Kurator 也为他们提供了充足的施展空间。

总结与展望

以下的对比表格总结了 Kubespray 和 Kurator 在多个方面的区别:

从上面的对比来看,Kubespray 和 Kurator 都有各自的优势和特点。Kubespray 是一个成熟的项目,有着活跃的社区和高度的集群定制能力。然而,Kurator 提供了更简化和用户友好的配置管理,使得用户能够更容易地上手和使用。虽然 Kurator 的社区在规模上目前不如于 Kubespray,但是它充满了创新和发展潜力。因此,无论你是一个 Kubernetes 的新手,还是一个寻求创新和发展潜力的开发者,Kurator 都能满足你的需求。

在未来的发展规划中,Kurator 将进一步加强其对 Kubernetes 集群生命周期的管理,并强化集群管理的能力,提供跨云、跨区域、跨集群统一、一致的策略管理以确保安全和合规性。Kurator还将加强跨云、跨区域、跨集群的流量管理。Kurator 还计划在分布式应用的编排方面进行创新,比如提供基于 Volcano 的统一调度策略,以满足不同业务场景的需求。为了提升安全性,Kurator 还将为 Kubernetes 提供运行时的安全扫描。此外,还将针对多集群应用提供统一的监控工具。所有这些努力都旨在构建一个更为强大、可靠和用户友好的分布式云原生套件。

如果您对Kurator有更多兴趣或想法,欢迎加入Kurator社区,参与社区讨论和开发。

GitHub地址:https://github.com/kurator-dev/kurator

Slack地址:https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A

 

点击关注,第一时间了解华为云新鲜技术~文章来源地址https://www.toymoban.com/news/detail-475506.html

到了这里,关于Kubernetes 集群管理:Kurator or Kubespray的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubespray-offline v2.21.0-1 下载 Kubespray v2.22.1 离线部署 kubernetes v1.25.6

    本篇将说明如何通过 Kubespray 部署 Kubernetes 至裸机节点,安装版本如下所示: rocky linux 8.8 Kubernetes v1.25.6 kubespray v2.21.0-1 系统: rocky linux 8.8 192.168.23.30-rocky-8.8-bastion01 bastion01 (这里下载介质与部署节点为同一节点,如果非同一节点,需要介质下载搬运) 192.168.23.30(联网下载介质

    2024年02月14日
    浏览(55)
  • Kubernetes集群管理 —追踪 Kubernetes 系统组件、代理

    特性状态: Kubernetes v1.27 [beta] 系统组件追踪功能记录各个集群操作的时延信息和这些操作之间的关系。 Kubernetes 组件基于 gRPC 导出器的 OpenTelemetry 协议 发送追踪信息,并用 OpenTelemetry Collector 收集追踪信息,再将其转交给追踪系统的后台。 关于收集追踪信息、以及使用收集器

    2024年02月14日
    浏览(42)
  • Kubernetes 集群管理—日志架构

    应用日志可以让你了解应用内部的运行状况。日志对调试问题和监控集群活动非常有用。 大部分现代化应用都有某种日志记录机制。同样地,容器引擎也被设计成支持日志记录。 针对容器化应用,最简单且最广泛采用的日志记录方式就是写入标准输出和标准错误流。 但是,

    2024年01月17日
    浏览(39)
  • Kubernetes 集群管理和编排

    第一章:引入 Kubernetes 引言: 在本章中,我们将引入 Kubernetes,这是一个强大而受欢迎的容器编排和管理平台。我们将探讨 Kubernetes 的定义、作用以及为什么它成为现代容器编排和管理的事实标准。通过本章,您将对 Kubernetes 的背景和优势有一个全面的了解。 大纲: 什么是

    2024年02月16日
    浏览(51)
  • Rancher 管理 Kubernetes 集群

    //Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。 官网:https://docs.rancher.cn/ //Rancher 和 k8s 的区别 Ranch

    2024年02月16日
    浏览(92)
  • 使用Rancher管理Kubernetes集群

    整个部署包括2个部分,一是管理集群部署,二是k8s集群部署。管理集群功能主要提供web界面方式管理k8s集群。正常情况,管理集群3个节点即可,k8s集群至少3个。本文以3节点管理集群,3节点k8s集群为例 说明部署过程 管理集群需要通过域名的方式访问,需要在访问客户端添加

    2024年01月22日
    浏览(36)
  • 4.2 Kubernetes 集群管理和编排

    第一章:引入 Kubernetes 引言: 在本章中,我们将引入 Kubernetes,这是一个强大而受欢迎的容器编排和管理平台。我们将探讨 Kubernetes 的定义、作用以及为什么它成为现代容器编排和管理的事实标准。通过本章,您将对 Kubernetes 的背景和优势有一个全面的了解。 大纲: 什么是

    2024年02月13日
    浏览(34)
  • kubesphere多集群管理,实现kubernetes多集群同时应用部署

    测试kubesphere多集群管理功能,至少需要两套kubesphere集群环境。 1、准备环境 执行以下命令,集群的节点都需要执行。 2、下载kubesphere安装工具KubeKey 这里我先下载好安装工具,在部署操作系统上进行解压,解压出来就具有了 kk 命令。如果没有执行权限,执行如下命令。 3、准

    2024年02月06日
    浏览(45)
  • 云原生之深入解析如何使用Vagrant Kubespray快速初始化K8S集群

    Vagrant 是一款用于构建及配置虚拟开发环境的软件,采用 Ruby 编写,主要以命令行方式运行。其主要使用 Oracle VirtualBox 提供虚拟化系统,与 Chef,Salt,Puppet 等环境配置管理软件搭配使用,可以实现快速搭建虚拟开发环境。 Kubespray 是利用 Ansible 工具,通过 SSH 协议批量让指定

    2024年02月15日
    浏览(48)
  • Kubernetes 多集群管理工具 - Kuboard

    Kuboard 是Kubernetes 多集群管理工具,是一个界面化的web网站,使用起来非常方便。在Kuboard中可以导入集群,在kuboard上可以完成很多的运维工作,比如创建命名空间、创建标签、运行服务、修改pod数量等等。 Kuboard目前已经发展到了v3.x版本了。Kuboard v3.x 支持 amd64 (x86) 架构和

    2024年02月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包