Kubernetes的简介

99 阅读7分钟

鉴于DevOps理念的广泛采用,能够快速开发、扩展和安全的基础设施正变得越来越重要,并成为一种规范。Kubernetes被称为k8s,最初由谷歌创建,现已发展成为控制部署在容器中的应用程序的事实标准。

越来越多的开发者使用Kubernetes来改善他们的工作流程,并尽量减少管理基础设施的时间。这个软件开发教程讲述了Kubernetes,它的特点和好处,控制平面,以及它的组件。

你可以通过阅读我们的文章了解更多关于DevOps和DevSecOps工具的信息。最佳DevOps和DevSecOps工具

什么是Kubernetes?

Kubernetes平台可以自动进行容器的部署、扩展和管理。你可以把你的代码和依赖关系打包在一个容器中,以方便横向扩展、可移植性和弹性。

然而,手动管理容器可能是困难的,因为它们的性质是短暂的--一旦你启动了一个容器,当你的程序崩溃或有人杀死它时,它就会自动消失。Kubernetes解决了这个问题,它在自己的集群上运行你的应用程序,以确保它始终保持运行,即使在途中某个地方出现错误。

Kubernetes,通常被称为K8s,是一个开源的、事实上的容器编排引擎,也是一个与云无关的容器编排平台。它能自动进行容器的扩展、部署和管理 容器是执行虚拟化应用程序的系统。

你不仅可以将Kubernetes与Docker一起使用,还可以与其他容器运行机制一起使用。它将容器化应用程序的调度、控制和管理抽象为集群资源。Kubernetes允许你安装、执行和管理云原生应用程序,如Node.js、Web服务和移动应用程序。

有兴趣了解更多关于Docker的信息?我们的姐妹网站TechRepublic有一个很棒的Docker Cheat Sheet,很好地涵盖了这个主题。

什么是容器?

容器允许开发人员和程序员将每个应用程序分离到其进程中,使你能够更有效地运行它们。容器化的工作负载由可以独立执行的应用程序代码、库、服务和数据库组成。Kubernetes通过自动化应用容器的部署、扩展和管理,使编码人员能够运行和管理容器化工作负载。

容器的使用有助于软件的打包和分发。容器只是你的应用程序的一个打包版本;程序员将需要一个管理单元来扩展这些容器。还需要管理这些容器的更新和回滚,以确保它们始终是最新的。

Kubernetes的特点和优势是什么?

下面列出了Kubernetes对开发者和软件开发团队的特点和好处:

  • 自动部署:Kubernetes能够在你的应用程序的生命周期中实现一致的、声明式的自动化。它允许你自动部署、扩展、管理和管理容器化的应用程序。它还有助于提高你的运营和开发团队的效率。
  • 负载平衡:Kubernetes最常见的应用之一是将传入的流量负载统一分配给所有容器和服务。这有助于减轻单个容器的压力,同时毫不费力地处理大量的流量。
  • 简化的DevOps:Kubernetes接受了GitOps的概念,其中git仓库作为应用程序部署的主要真相来源。如果当前的部署和git历史不同,Kubernetes将立即更新部署以反映当前的git状态。
    ,你只需要用所需的修改更新git历史,Kubernetes将自动更新你的应用程序。有了Kubernetes,分配和取消资源是很直接的;你不需要手动设置另一台计算机。你现在要做的就是使用Kubernetes接口再提供一个节点,就可以了。
  • 简化部署:Kubernetes大大简化了开发、发布和部署过程:它允许容器集成,并简化了对来自几个供应商的存储资源的访问管理。
  • 提高生产力:使用Kubernetes最显著的好处之一是能够更快地构建应用程序。Kubernetes使你能够快速建立自助式平台即服务的应用程序,其中包含一个硬件抽象层。该层允许开发人员快速推出变化,并使用Kubernetes引擎将所有节点作为一个实体进行管理。
  • 降低成本:此外,Kubernetes可以帮助你降低基础设施成本。Kubernetes可以帮助企业节省时间和金钱,同时通过动态和智能的容器管理在许多环境中保持可扩展性。
    资源分配可以自动调整以满足应用程序的需求。由于原生的自动缩放逻辑(HPA、VPA),以及与云供应商的集成,可以动态配置资源,因此减少了对基础设施的低级手动操作。
  • 可扩展性:Kubernetes本质上是可扩展的--它可以在几十个节点上轻松地处理数百万的请求和数十万的容器。
  • 安全性:Kubernetes在构建时考虑到了安全问题,并有内置的安全功能,如日志、访问控制和审计。
  • 持续交付:持续交付处理的是交付应用程序,使其24/7可用,并尽量减少停机时间。通过持续交付,你可以在几乎没有人工干预的情况下部署新版本的应用程序,然后在需要时自动扩展这些应用程序。Kubernetes可以快速托管现代分布式云托管的应用程序,并解决许多CI/CD问题。

什么是Kubernetes控制平面?

Kubernetes控制平面也被称为主节点,它负责管理工作节点。它确保了系统的运行和正常运作。对于管理员和用户来说,它是管理集群节点的一个主要联络点。

控制平面管理机器集群,并确保每个节点是健康的,与它的同伴沟通,并拥有在它上面运行的工作负载的最新信息。Kubernetes控制平面是任何Kubernetes集群的核心,它处理集群中资源的调度和管理,并负责维护对象(例如,pod、服务)的状态。

控制平面的核心功能包括:

  • 调度:确定哪些节点应该运行哪些容器
  • 复制控制器:根据其他pod的资源需求或外部请求(如来自API的请求),在必要时协调自动扩大或缩小pod的规模
  • 状态集控制器:管理持久化卷和持久化卷要求(PVC)。

Kubernetes控制平面由以下组件组成:

  • etcd- 在Kubernetes集群中,这个组件存储配置数据,并使所有节点都能访问。
  • kube-controller-manager- 这是一个监控集群状态的组件。
  • kube-apiserver- 这代表了一个基于REST的接口,管理和控制所有管理和操作活动。API服务器负责接受来自客户端的传入请求,然后将这些请求转发给相关的服务端点。它还充当客户端请求和工作节点之间的中介,用于工作负载的调度。
  • kube-scheduler- 调度器负责调度集群工作负载,并根据资源可用性、优先级或其他因素确定在任何特定时间哪些pod应该在哪些节点上运行。
  • Kubelet- Kubelet通过命令行接口(CLI)接收来自其主站的指令,例如何时启动或终止新的pod;然后通过与Docker容器直接通信将这些指令转为行动。

关于Kubernetes和容器化编程的最终想法

近年来,容器的使用迅速增加,需要一种高效和标准化的方法来管理这些类型的应用程序。Kubernetes被开发为一个框架,用于自动化容器化应用程序的部署、扩展、管理和维护。

它已迅速成为交付和管理容器化工作负载和服务的首选解决方案。Kubernetes有一个庞大且快速扩展的生态系统,为部署、扩展和管理容器化应用和服务提供了丰富的功能。通过Kubernetes,你可以以声明的方式构建、部署和扩展复杂的应用程序,比传统方法快得多。