Kubernetes 简介 | 什么是 Kubernetes

介绍

欢迎来到 Kubernetes 课程介绍。 Kubernetes,也称为 k8s 或者 库贝,是业界最流行的容器编排工具,是 Google 制造的产品。 本 Kubernetes 教程包含有关 Kubernetes 的系列文章。 在第一部分,我们将讨论什么是 Kubernetes 以及 Kubernetes 的基本概念。

本课程面向绝对初学者,您无需具备任何先决知识即可学习此技术。 我们将引导您了解所有 Kubernetes 基础知识,以使您了解这些概念。

在开始使用 Kubernetes 之前,让我们对 Docker 和容器有一个基本的了解。

什么是 Docker?

码头工人 允许您在容器中捆绑和运行应用程序,容器是一个松散隔离的环境。 由于隔离和安全,您可以在单个主机上操作多个容器。

为了在同一个操作系统上运行多个容器,Docker 利用操作系统内核中的资源隔离。 通常人们将 Docker 与虚拟机 (VM) 进行比较。

另一方面,虚拟机在物理硬件资源的抽象层之上将整个操作系统与可执行代码封装在一起。

什么是容器?

一种 容器 image 是一个可立即运行的软件包,其中包括程序需要执行的所有内容,包括代码和它需要的任何运行时、应用程序和系统库以及任何重要设置的默认值。

应用程序使用容器与底层主机架构分离。 如下图所示,我们可以利用底层机器在 Docker 引擎之上拥有多个容器。 这有助于在各种操作系统或 Cloud 情景。

图1

容器通过更轻松地扩展和部署应用程序来帮助企业实现现代化。 然而,通过构建全新的基础设施环境,容器带来了额外的问题和复杂性。

大型和小型软件组织每天都在部署数千个容器实例,这对它们的管理构成了可扩展性挑战。 那么,他们是如何做到的呢?

什么是容器编排?

  • 容器编排与容器生命周期的管理有关,尤其是在大型动态环境中。 软件团队使用容器编排来控制和自动化容器管理的各种任务。
  • 容器编排适用于使用容器的任何环境。 它可以帮助您在多个环境中部署相同的程序,而无需重新编写它。

容器编排工具

容器编排 技术提供了控制容器和微服务架构的框架。 容器生命周期管理可以通过各种容器编排解决方案来完成。 Kubernetes、Docker Swarm 和 Apache Mesos 是三种常见的解决方案/工具。

Docker Swarm 是 Docker 原生工具,非常容易设置和配置。 Kubernetes 需要许多手动干预来配置其组件,例如 , 绒布码头引擎.

与其他工具相比,Kubernetes 凭借其各种优势和功能在行业中占据主导地位。

什么是 Kubernetes?

Kubernetes 是一种开源容器编排技术,最初由 Google 开发,用于自动化容器化应用程序的部署、扩展和管理。

Kubernetes 使部署和管理微服务架构应用程序变得简单。 它通过在集群之上形成一个抽象层来实现这一点,允许开发团队顺利部署应用程序,而 Kubernetes 主要处理以下任务:

  • 控制和管理应用程序对资源的使用。
  • 自动在应用程序的许多实例之间负载平衡请求。
  • 监控资源使用和资源限制以自动阻止应用程序消耗过多的资源并再次恢复它们。
  • 如果主机资源耗尽或主机死机,将应用程序实例从一台主机转移到另一台主机是一个可行的选择。
  • 将新主机添加到集群时,会自动使额外资源可以访问。

为什么市场推荐 Kubernetes

Kubernetes,第一个 Cloud 本国的 Cloud 基金会 (CNCF) 倡议和谷歌基金会,是继 Linux 之后发展最快的开源软件项目。

为什么今天有这么多企业依赖 Kubernetes 来满足他们的容器编排需求? 这有很多原因:

  • 便携性和灵活性: Kubernetes 的适应性极强,因为它可以在广泛的基础设施和环境设置上运行。 大多数其他编排器没有这种灵活性。 它们被锁定在特定的运行时或基础架构中。
  • 开源: CNCF 负责 Kubernetes,这是一个完全开源的、社区驱动的项目。 它拥有许多重要的企业赞助商,但没有一家公司“拥有”该平台或单独控制其发展方式。
  • 多云兼容性: Kubernetes 可以将工作负载托管在单个云上,也可以将工作负载分布在多个云上。 Kubernetes 还可以轻松地将其环境从一个云扩展到另一个云。 虽然其他编排器可能支持多云架构,但 Kubernetes 在多云适应性方面可以说是超越了。
  • 标记领导者: 几乎每个人都使用 Kubernetes。 根据 REDHAT 的一项调查,Kubernetes 被客户广泛使用 (88%),尤其是在生产环境中 (74%)。

Kubernetes 架构

Kubernetes 是一个 example 一个架构良好的分布式系统。 它将集群中的所有机器都视为单个资源池的一部分。

Kubernetes 与任何其他复杂的分布式系统一样,有两层: 头节点工作节点.

头节点 或者 主节点 由控制平面和工作节点应用程序组成。 Kubernetes 集群由头节点和工作节点的集合组成。

图 2

Kubernetes 引入了很多术语来描述应用程序的结构。 我们将通过每个学期。

Kubernetes 组件

Master/Head 节点和 Worker 节点由其自己的组件组成,可确保 Orchestration 顺利运行。

控制平面

控制平面是管理员和用户管理不同节点的地方。 它通过 HTTP 调用或连接到系统并运行命令行脚本来接收命令。 顾名思义,它规范了 Kubernetes 与您的应用程序的交互方式。

API 服务器

API 服务器为 Kubernetes 集群提供了一个 REST 接口。 pod、服务和其他对象上的所有活动都是通过与提供的端点对话以编程方式执行的。

调度器

调度器负责将任务分配给各个节点。 它监控资源容量并保证工作节点的性能保持在可接受的范围内。

控制器管理器

Kubernetes 控制器管理器是管理 Kubernetes 核心控制循环的服务。 它负责确保集群的共享状态正常运行。

Kubernetes 使用 etcd(分布式键值存储)来共享有关集群整体状态的信息。

节点

节点是运行 POD 的物理或虚拟机器。 控制平面管理集群中的每个节点,节点由运行 POD 所需的服务组成。

豆荚

Kubernetes pod 是 Kubernetes 以最小规模管理的容器集合。 Pod 有一个 IP 地址,分配给 Pod 中的所有容器。 Pod 中容器的内存和存储资源是共享的。 当应用程序只有一个进程时,Pod 也可以有一个容器。

库贝莱特

Kubelet 是一个工作节点组件。 它的工作是跟踪 pod 及其容器。 它关注用 YAML 或 JSON 编写的 pod 规范。 Kubelet 检查 pod 规格并确定 pod 是否健康。

Kube-代理

Kube-proxy 是一个网络代理和负载均衡器,充当每个节点和 api-server 之间的连接。 它在集群中的每个节点上运行,并允许您从内部和外部连接到 pod。

库贝尔

Kubectl 是 Kubernetes 的 CLI 工具。 它用于部署应用程序、监控和控制集群资源以及查看日志。

从用户的角度来看,kubectl 是您的 Kubernetes 控制面板。 它使您能够执行所有 Kubernetes 操作。 从技术角度来看,Kubectl 是 Kubernetes API 的客户端。

结论

在本文中,我们已经了解了容器编排的基本概念和 Kubernetes 的架构。 在我们即将发表的文章中,我们将了解 Kubernetes 的重要关键特性和单节点 Kubernetes 安装。

阅读下一篇:

  • Kubernetes 功能详解
  • 如何在 CentOS Linux 中使用 Minikube 安装 Kubernetes
  • 在 RHEL、CentOS、AlmaLinux、Rocky Linux 中使用 Kubeadm 安装 Kubernetes 集群
  • 如何在 Linux 中创建和管理 Kubernetes Pod

资源: