问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用Kubernetes管理Kubernetes集群

发布网友 发布时间:2022-10-12 20:08

我来回答

1个回答

热心网友 时间:2023-10-03 04:05

Kubernetes 1.0版本发布已经过去了4年,繁荣的社区和广泛用户群体使得Kubernetes的成熟度超出了预期,大部分用户常用的功能性需求都得到了满足。但是,根据CNCF的调查,很多非功能性的需求尚待完善,比如,用户所面临的最困难的挑战之一仍然是管理多个Kubernetes集群的生命周期,包括集群部署、升级和变更等。Kubernetes社区未来的一个阶段的重点就是帮助用户更好的部署和维护Kubernetes,使其无缝的融入和对接现有的企业环境。

Kubernetes现在已经可以支持超大规模的集群,单集群可以支撑5000个节点,15万个POD。但是由于大规模集群的维护和调度过于复杂,比如,有些企业应用需要分级,不同级别的应用需要使用不同的资源池,有些业务应用需要带有GPU支持的集群,有些应用需要Windows container的支持,甚至不同应用依赖不同版本的Kubernetes,所以在企业环境中通过多集群的方式实现多租户和资源调度已经成为了最佳实践。

当你需要管理多个集群,每个集群都有不同的规模、版本、升级计划、硬件资源池,自动化的管理工具和理念就必不可少了。

我们知道,Kubernetes的很多原则和理念改变了传统资源管理和交付的模式,其中声明式API和自愈机制的引入提升了用户部署和管理应用的效率。它允许用户通过yaml文件描述对象部署的期望状态(比如部署3个POD实例),并持续观测当前状态,如果和预期不一致(只剩2个POD实例),就通过控制器使其达到期望状态(添加1个POD实例,使总数为预期的3个)。
既然这种模式如此的成功,能不能把它适用到更多的场景中呢?比如,能不能用Kubernetes的思想来管理Kubernetes的集群呢?
实际上社区中已经有人这么做了,Cluster API 就是在这个背景下,由google,vmware等公司共同发起的项目。 https://github.com/kubernetes-sigs/cluster-api

Cluster API是一个Kubernetes项目,它将声明式的、Kubernetes风格的API用于集群创建、配置和管理。通过利用Kubernetes API的结构化和可扩展的特性,构建更高级别的云环境无关的工具,声明式的、自动化的改善用户体验。

当前,Cluster API已经可以支持AWS, Azure, GCP, Openstack, VMware, Bare metal等绝大多数基础设施环境。在目前的版本中,该API包含五个customresourcedefinition(CRD):Cluster、Machine、MachineSet、MachineDeployment和MachineClass。

将这几个CRD和大家熟悉的Kubernetes的对象类比一下,

说明:以下的几个CRD yaml文件都可以自动生成模板,在创建cluster的时候,并不都是必须的。

Cluster这个CRD是全新的Kubernetes集群的抽象。它可以定义Kubernetes集群配置,例如POD网络CIDR和service网络CIDR,以及集群是运行在何种云平台之上。

Machine类似于POD,它负责描述单个Kubernetes节点(虚拟机)。只需很少的配置(主要是Kubernetes版本信息),其他配置通过嵌入云环境相关的ProviderSpec。

MachineDeloyment 类似于Deployment。它允许对节点配置进行更新,定义工作节点的升级方式(rolling,recreate),它还允许回滚到以前的某个版本的配置。用户可以修改yaml文件来动态调整集群节点的数量。

MachineSet类似于ReplicaSet,管理一组Machine的扩缩容。与ReplicaSet类似,实践中尽量使用MachineDeloyment来管理一组资源的部署而不应该直接操作ReplicaSet。

MachineClass和StorageClass很像,定义Machine的规格。所有节点都会从指定规格的虚拟机模板中clone出来。

Cluster API的工作原理非常简单,用户通过以上的几个CRD定义需要的Kubernetes集群的规格。通过熟悉的kubectl apply命令把yaml传递给management cluster,managerment cluster会根据需要驱动不同的云平台创建虚拟机安装部署Kubernetes binary,并交付集群给用户。
那么management cluster是怎么来的?是否后续的运维工作也需要依赖它呢?实际上,初始的management cluster一般是一个单机版的Kubernetes,比如minikube或者Kind。当置备出第一个workload cluster以后,可以将management cluster的功能转移到任何一个workload cluster,这样后续的工作就不在依赖单机版的Kubernetes。一个有意思的地方是,你会发现,某一个workload cluster同时也是management cluster,在管理和监控着它自己。

下面是一个在vsphere环境使用Cluster API的例子。
首先,使用Cluster API项目提供的工具生成一组部署的yaml模板。

根据需求调整yaml文件中的内容,比如虚拟机模板的名称、集群节点的数量等。
然后依次创建这些资源对象,

这时可以在vcenter中看到Kubernetes集群的虚拟机陆续被创建出来。

大约几分钟后,workload cluster就可以交付给用户使用了。

我们可以关闭或者删除一个workload cluster的节点的虚拟机来模拟故障场景。Cluster API会自动检测所有节点的状态,并且驱动vsphere重新生成一个虚拟机进行替代,使得Kubernetes集群的状态与预期描述的一致。像不像Kubernetes管理POD的功能?

以上实验的具体的细节可参考官方文档, https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/blob/master/docs/getting_started.md

解决多集群生命周期的管理只是企业环境使用Kubernetes的第一步,后续还有什么问题是需要考虑的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
64岁的老头感冒了,还喝一瓶啤酒,又喝3包感冒药,吃了3个阿莫西林消炎药... ...今天中午12点喝了一瓶啤酒,不会有反应死了吧? 喝一瓶啤酒吃药没事吧 养育孩子有哪些正确的方式? 联想电脑一开机就蓝屏怎么解决 光遇冥想任务怎么完成_冥想任务攻略 光遇 光遇云野的锦鲤池冥想怎么做? 光遇 光遇在滑冰场旁冥想的任务怎么做? 光遇在仙乡的金塔下冥想任务怎么做 任务达成方法介绍 光遇 光遇在禁阁的神坛旁冥想怎么做? 推荐系统推理优化 如果手机号码注销了,还可以继续使用吗? 从宜都到长阳清江画廊怎么走最近啊? 长阳清江画廊好玩么?怎么去呢?一定要祖船才能玩么?去了的人指点哈啊? 从宜昌出发去清江画廊在哪里坐车啊? 宜昌市区到清江画廊风景区怎么走? 民事诉讼被告可以不出庭委托律师出庭吗 民事纠纷被告可以委托律师出庭吗 被告可以委托律师出庭吗 上班第一天早安心语 我与爸爸的关系是父母还是子女 森海塞尔ie800要多少钱啊?为什么淘宝上有的卖1000左右有的卖5000多啊 ie800怎么辨别真假,顺便说一下怎么煲机,谢谢 没有痘痘能用片仔癀清颜净痘修复霜 关于狗狗身上的蜱虫(狗豆子,吸血虫)!~~~请高手帮忙 谢谢了! 很担心 很担心 这是什么虫子,在狗狗身上爬过!特别小,有硬壳,捏都不容易捏死,后来狗狗毛上有血迹,怀疑是吸血虫。 用手去摘了狗身上的吸血虫没事吧? 狗身上的吸血虫 狗狗身上有吸血虫 荣耀7 CPU多少纳米 在用3dmark测试显卡看动画的时候提示基准运行过程中出现未知错误,图为所提示的错误 用3dmark 测试电脑显卡出现这么个英文 求解决,求帮助 怎么解决这个问题,有没有什么方法 两个怎么互相关联 刷宠是什么意思 刷宠物是干什么 DNF怎样刷宠物 洛克王国中的刷宠物是什么意思? 两个可以关联吗 怎么能两个关联起来 怎样下载和安装C#软件呢? 两个手机,两个能关联吗?怎样才能看到另一个手机的聊天记录? 11道奥数植树问题(没学过)急 求15道3`4年级奥数题 一个女生分手了发朋友圈终于轻松了代表什么 今天终于轻松了。感觉心里放着一个人好累。你和女朋友的感觉是什么呢? 放下暗恋六年的人是什么体验? 纠缠的感情决定放弃了,心终于轻松了,人最怕的就是*,不要怕失去,相信更好的会到来。 终于轻松了。翻译 干红枣与新鲜红枣哪个好?_ 余额宝退款要几天到账