什么是Kubernetes:开源容器编排系统简介

Kubernetes Khronicles是Vultr的系列文章,重点介绍有关Kubernetes开源容器编排的信息和见解。在本文中,Vultr的Cloud Native技术主管David Dymko准确解释了Kubernetes是什么,并分享了有关容器协调器内部工作的详细信息。

Kubernetes已成为用于自动化容器化应用程序的部署,扩展和管理的主流开源编排工具。Kubernetes最初由Google的团队设计并于2014年发布,现已由Cloud Native Computing Foundation正式维护。Kubernetes已迅速成为容器编排的黄金标准,原因有以下几个:广泛的社区支持,与云无关的事实(种类...请参阅以下有关插件的更多信息),并且它提供了生产级编排。

以下是Kubernetes的概念,工作原理,常见的Kubernetes术语以及开发人员如何使用Kubernetes进行构建和扩展的详细信息。

什么是Kubernetes?

Kubernetes源自希腊语中的“舵手”(舵手像集装箱船一样操纵船的人),它解释了Kubernetes(或K8s)的标志性符号为何是轮毂。Kubernetes是一个开放源代码的容器编排工具,它使开发人员可以快速,轻松地部署,扩展和管理容器化的应用程序。

这是另一种思考方式:Kubernetes是一种工具,可让您管理所有云计算,将它们视为1个巨型资源池而不是多个实例。Kubernetes不会让多个服务器运行各种CPU和内存资源(您可能没有使用这些服务器来充分利用CPU能力和内存池的全部容量),而是会尝试使用您所购买的资源来优化所有计算资源的分配。充分地

由于一些关键差异 因素,Kubernetes成为粉丝的最爱

  • Kubernetes实现自我修复和可伸缩性
    假设我们部署了一个容器,并且始终希望它运行2个实例。Kubernetes将监视并确保始终有2个正在运行。如果要崩溃,它将启动一个新实例以确保所需的2状态正在运行。

    有了可伸缩性,如果我们决定总是要运行5个实例而不是2个实例,那么在几次按键操作中就可以运行该实例的5个副本而不是2个实例。仅当有足够的工作程序节点资源来支持此工作时,这才有可能...但是,如果您拥有集群自动伸缩器,则它将在需要时自动部署新的工作程序节点。

  • Kubernetes的垃圾箱打包
    允许定义容器需要多少CPU和RAM。Kubernetes将确保容器具有请求的可用资源,然后将选择适当的工作程序节点。由于您不会浪费CPU /内存,因此可以降低成本。
  • Kubernetes的负载平衡
    如果您正在运行应用程序的多个容器,则Kubernetes将在这些容器之间分配流量。
  • Kubernetes服务发现
    部署容器时,可以通过称为服务的Kubernetes类型公开它们,其行为类似于DNS。这使您的容器可以轻松地相互通信。

Kubernetes如何工作?

Kubernetes通过部署包含控制平面的主节点来工作。控制平面具有各种组件,例如:

  • ETCD:这是一个包含所有集群配置的键/值存储
  • Kube Scheduler:这将检查您所请求的配置并确定最佳位置
  • Kube控制器管理器:控制器监视集群中的状态,并努力确保您定义的所需状态是当前状态。
  • API服务器:这是集群的核心。控制平面内和控制平面外的所有组件均与API服务器通信。

虽然控制平面的作用就像操作的大脑,但工作节点是您部署应用程序的地方。然后,工作程序节点与运行在工作程序节点本身上的一些组件通信回控制平面。

  • Kubelet:这被认为是“节点代理”,它将工作程序节点注册到控制平面,并且还管理其给定节点上的Pod。
  • Kube代理:这是一个在每个工作节点上运行的网络代理,并管理整个群集中的网络配置。
  • 容器运行时:您的集群使用哪个容器运行时取决于云提供商。流行的运行时是ContainerD

Kubernetes插件

由于Kubernetes与云无关,因此每个提供商都负责提供两个核心插件。为了获得正在运行的云的全部好处,这些至关重要:

当你部署Vultr神鹰(一terraform模块,规定一个Kubernetes集群与Vultr CCM和CSI),所有这些插件都已经建立。换句话说,您的集群很容易成为Vultr就绪的。

其他需要考虑的Kubernetes插件:

与我们分享:您觉得哪些Kubernetes插件最有用?向我们发送@Vultr来分享您的K8s故事。

常见的Kubernetes术语定义

在使用Kubernetes进行运行之前,需要了解一些关键术语:

  • Kubernetes集群:一组运行容器化应用程序的节点。
  • Kubernetes运算符:Kubernetes的扩展,可让您构建自己的自定义资源。
  • Kubernetes节点:取决于群集的虚拟或物理工作节点。
  • Kubernetes容器:Kubernetes中最小,最基本的可部署对象。吊舱可容纳容器。吊舱可以容纳1个或多个容器。
  • Kubernetes机密:可让您存储和管理敏感信息,例如密码,OAuth令牌和ssh密钥。
  • Kubernetes服务:如果您希望公开部署(一个或多个)以便从集群内部(或外部)访问,则使用
  • Kubectl: Kubernetes命令行工具,可让您针对Kubernetes集群运行命令
  • Minikube: 一种工具,可让您在本地运行Kubernetes

开发人员如何使用Kubernetes?

随着崛起微服务,Kubernetes已经普及上升为它允许开发者轻松地构建分布式应用程序。微服务提供了一种构建和部署应用程序的方式。无需构建单个大型“整体”应用程序,而是构建小型的“小规模”应用程序,它们可以很好地完成一件事和一件事。然后,您将有多个可以协同工作但彼此独立的应用程序。由于这些组件彼此独立,因此您可以根据需要扩展某些应用程序。

例如:在黑色星期五期间,您可能希望启动更多POS系统实例来处理大量交易。在“传统”应用程序中,您将必须部署整个应用程序的多个实例,这可能很浪费。

与Kubernetes一样,CI / CD(连续集成/连续交付)也适用于微服务。您可以完全自动化应用程序部署。考虑以下示例:您可能具有CI / CD管道,该管道会将您的应用程序构建到容器中,然后更新Kubernetes配置以使用此最新容器,而不仅仅是将代码提交到存储库。

另一个示例涉及使用Kubernetes轻松调度批处理作业。在这种用例中,您可以安排工作负载在满足您需求的特定时间运行。使用Kubernetes,因为它们是容器,所以它将被部署,完成其工作然后被删除。您不必担心仅为该批处理作业使用专用实例,Kubernetes将确保您的作业在需要时运行。

总体而言,微服务设计有两个主要优点:

  1. 高效地管理云资源(潜在的成本节省)
  2. 独立缩放应用程序的特定部分

关于Vultr的Kubernetes引擎

准备开始使用Vultr Kubernetes进行构建了吗?一起获得K8和Vultr的所有好处。在此处访问Vultr插件以访问Terraform

加入Kubernetes对话

启动您的Vultr Kubernetes集群!部署Terraform Vultr Condor。浏览Terraform Vultr模块以获取更多资源。

告诉我们您的Kubernetes故事!我们很乐意听取您的意见。向我们发送@Vultr分享。

THE END