时间:2022-5-15来源:本站原创作者:佚名

技术和架构是相辅相成的,容器技术的成熟促使微服务架构遍地开花。随着企业内的微服务应用越来越多,基础设施、运维、开发等团队都选择使用Kubernetes作为解决方案的一部分。这加速了Kubernetes的普及,使Kubernetes在世界各地的企业中被广泛使用。

相对于其他大规模的开源项目(如Linux),Kubernetes还稍显年轻。很多使用Kubernetes的团队或组织,仅处于初级阶段,达到生产规模的很少,能进行体系化运维的更是微乎其微。在本篇文章中,我想和大家讨论一些实现Kubernetes生产化的关键因素。

1.1Kubernetes定义

有人说Kubernetes是一个平台,有人说Kubernetes是基础设施,也有人说Kubernetes是一个应用......各种各样的定义,使人眼花缭乱。与其在定义上绞尽脑汁,不然把精力用在Kubernetes能解决什么问题上。有了这个立意,我们才好讨论如何在这些功能的基础上,成功创建生产级的Kubernetes。生产级Kubernetes的理想状态是能成功的为生产流量服务。

Kubernetes的名字有点像一个总括性术语,在GitHub上快速浏览,可以看到Kubernetes组织包含了74(撰写本文时)个项目,然后是kubernetes-sigs组织,包含了(撰写本文时)个项目,CNCF中包含的项目就更多了。所以在本书中,Kubernetes将完全指核心项目(kubernetes/kubernetes库)中的内容,也就是我们在大多数Kubernetes集群中所见的关键组件。当用这些组件运行Kubernetes集群时,可以为我们提供以下功能:

?在多个主机上调度工作负载?暴露一个声明性的、可扩展的、用于与系统交互的API?提供Cli,即kubectl,供维护者与APIserver交互?对象当前状态与期望状态的调谐?提供基本的Service抽象,帮助实现工作负载间的路由请求?暴露多个接口,可以支持可插拔的网络、存储等

这些功能组成了Kubernetes所宣称的生产级的容器编排器。简单地说,Kubernetes为我们提供了一种在多个主机上运行和调度容器化工作负载的方法。当我们深入研究时,需要牢记这一主要功能。随着研究逐步深入,我希望能够证明这种功能尽管很基础,但却是我们生产化过程的重要组成。

1.1.1核心组件

哪些组件提供了我们介绍的功能呢?就是我前面提到的包含在kubernetes/kubernetes源码仓库中的核心组件。有多种方式使用这些组件。例如,运行GoogleKubernetes引擎(GKE)的用户会发现,每个组件都存在于主机上。也有用户从kubernetes/kubernetes源码仓库下载Kubernetes版本。在源码目录中,可以使用cluster/get-kube.sh脚本获取二进制文件。它会自动检查主机架构,并下载对应版本的server和client组件。我们先看看下面的代码,然后探索各组件:

$gitclone
转载请注明原文网址:http://www.coolofsoul.com/phpys/phpys/24069.html

------分隔线----------------------------