kubernetes 入门
就在几个月前,我有机会第一次接触到Kubernetes。 到目前为止,我所知道的只是确保容器化应用程序在集群中平稳运行的功能,除此之外,别无其他。 在完成“ hello world”并尝试了一些示例之后,我决定编写一系列博客文章,在这些文章中,我将尝试总结所有学习内容。
一个合理的警告–我仍然是Kubernetes的初学者,因此Kubernetes的高级从业者可能会发现我的帖子太基础了。 这也是促使我首先写这些帖子的原因。 我想在Kubernetes上为开发人员编写一系列适合初学者的文章,这些文章可以作为一个很好的起点。 我还决定将我的文章分成几小部分,以便初学者容易理解。
什么是Kubernetes?
如今,容器已成为包装应用的事实上的媒介。 越来越多的应用程序被容器化并部署到机器中。 将单个容器部署到虚拟机和/或物理机可能不是一个大问题,并且可能可行。 但是,当我们必须将数百个容器部署到很多机器上时,事情变得越来越复杂,同时要确保可伸缩性和可用性。
这是Kubernetes试图解决的问题。 它可以帮助我们自动化容器化应用程序的部署,管理和可伸缩性。 它是通过创建由物理和/或虚拟机组成的集群来实现的,这些集群能够运行容器化的应用程序。 当我们想使用Kubernetes部署应用程序时,我们告诉它映像的位置并指定一些其他配置(即资源,内存,配置等)。 然后,它负责其余的工作-获取图像,将它们部署到群集中的计算机上,并确保容器获得必要的资源。 它还监视群集的状态,并采取必要的步骤来确保可伸缩性和可用性。
我发现将Kubernetes看作是非常有帮助的
容器乐队的指挥,以及乐器演奏时的容器–
顺便说一下,这就是官方文档
定义Kubernetes –
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 它拥有一个庞大且快速增长的生态系统。 Kubernetes的服务,支持和工具广泛可用。
Kubernetes这个名字起源于希腊语,意思是舵手或飞行员。 Google在2014年开源了Kubernetes项目。Kubernetes依靠Google在大规模运行生产工作负载方面已有的十五年的经验,并结合了社区中最好的想法和实践。
在深入探讨Kubernetes的细节之前,让我们先谈谈声明式和命令式部署模型之间的区别。 了解这两种方法之间的差异有助于我了解Kubernetes所提供的好处。
声明式部署与命令式部署
当我将应用程序部署到计算机上时,到目前为止,我已经看到/采用的方法如下所示–
- 我分配了一个虚拟/物理机
- 我为计算机配置了所有必需的运行时和依赖项
- 我将应用程序部署到计算机上
- 我添加监视以确保当我的应用程序关闭时,我得到通知
我当然可以使用工具来自动化这些步骤。 但是,我仍然必须明确指定部署我的应用程序必须执行的操作。 如果在部署之后,其中一个应用程序实例运行不正常/被卡住,我必须自己用一个运行正常的实例替换它,最好执行一些简单的部署脚本。 这种部署样式通常称为命令式样式。
Kubernetes的工作方式略有不同。 我没有告诉它应该如何部署应用程序,而是将其指向了我的容器映像。 我还指定了应用程序所需的资源(CPU,内存),所需的运行实例数以及“正常”实例的定义。 一旦以“资源”定义的形式指定了它们,就将它们发送到Kubernetes集群。 一旦Kubernetes收到了这些资源定义,它就会处理其余的工作–将应用程序部署到集群中的机器上,确保正在运行所需数量的实例。 它还可以确保每个正在运行的实例具有所需的所有资源。 不仅如此,它还将继续监视部署状态。 如果由于某种不幸的原因,应用程序的任何实例死亡/卡住,它会自动采取必要的措施以确保始终保持应用程序的“所需状态”。 这种部署样式通常称为声明式样式,与命令式部署样式相比,它具有上述所有优点。
我希望本文提供了有关Kubernetes试图解决的问题的非常简短但仍然有些有用的概述。 在下一篇文章中,我们将讨论Pods,这是我上面刚刚提到的“资源”之一,它也是Kubernetes中部署的基本单位。
祝您阅读愉快!
kubernetes 入门