k8s简介

Kubernetes 的架构

Kubernetes 遵循客户端-服务器架构,其中主服务器安装在一台机器上,节点安装在单独的 Linux 机器上。它遵循主从模型,使用主服务器管理跨多个 Kubernetes 节点的 Docker 容器。主服务器及其控制的节点(工作节点)构成“Kubernetes 集群”。开发人员可以在 Kubernetes 主服务器的帮助下在 Docker 容器中部署应用程序。 

Kubernetes 的关键组件

1. Kubernetes-主节点组件

Kubernetes Master 负责管理整个集群,协调集群内的所有活动,并与工作节点通信以保持 Kubernetes 和应用程序运行。这是所有管理任务的入口点。当我们在系统上安装 Kubernetes 时,我们将安装 Kubernetes Master 的四个主要组件。Kubernetes Master 节点的组件包括: 

API 服务器

API 服务器是用于控制集群的所有 REST 命令的入口点。所有管理任务均由主节点内的 API 服务器完成。如果我们想在 Kubernetes 中创建、删除、更新或显示对象,则必须通过此 API 服务器。API 服务器验证和配置 API 对象(例如端口、服务、复制、控制器和部署),并负责为每个操作公开 API。我们可以使用名为kubectl的工具与这些 API 进行交互。'kubectl ' 是一个非常小的 go 语言二进制文件,它基本上与 API 服务器对话以执行我们从命令行发出的任何操作。它是一个用于针对 Kubernetes 集群运行命令的命令行界面 

Scheduler

它是主节点中负责分配工作负载的服务。它负责跟踪每个工作节点的工作负载利用率,然后将工作负载放在可用资源上并可以接受工作负载。调度程序负责根据您在配置文件中提到的约束在可用节点之间调度 pod,并相应地调度这些 pod。调度程序负责工作负载利用率并将 pod 分配给新节点。 

Controller Manager

也称为控制器。它是一个在非终止循环中运行的守护进程,负责收集信息并将其发送到 API 服务器。它通过执行生活方式功能(例如命名空间创建和生命周期事件垃圾收集、终止 pod 垃圾收集、级联删除垃圾收集、节点垃圾收集等)来管理 Kubernetes 集群。基本上,控制器监视集群的期望状态,如果集群的当前状态不符合期望状态,则控制循环采取纠正步骤以确保当前状态与期望状态相同。关键控制器是复制控制器、端点控制器、命名空间控制器和服务帐户控制器。因此,通过这种方式,控制器负责整个集群的整体运行状况,确保节点始终处于启动和运行状态,并且正确的 pod 正在运行,如规范文件中所述。 

ETC

它是一个分布式键值轻量级数据库。在 Kubernetes 中,它是一个中央数据库,用于存储任何时间点的当前集群状态,还用于存储配置详细信息,例如子网、配置映射等。它是用 Go 编程语言编写的。

2. Kubernetes-工作节点组件

Kubernetes Worker 节点包含管理容器之间的网络、与主节点通信以及为计划的容器分配资源所需的所有服务。Kubernetes Worker 节点的组件包括: 

Kubelet

它是一个主节点代理,与主节点通信并在集群内的每个工作节点上执行。它通过 API 服务器获取 pod 规范并执行与 pod 关联的容器,并确保 pod 中描述的容器正在运行且健康。如果 kubelet 注意到在工作节点上运行的 pod 存在任何问题,它会尝试在同一节点上重新启动 pod。如果问题出在工作节点本身,则 Kubernetes 主节点会检测到节点故障并决定在另一个健康节点上重新创建 pod。

Kube-Proxy

它是 Kubernetes 集群中的核心网络组件。它负责维护整个网络配置。Kube-Proxy 维护所有节点、pod 和容器的分布式网络,并将服务暴露给外界。它充当单个工作节点上服务的网络代理和负载均衡器,并管理 TCP 和 UDP 数据包的网络路由。它会监听 API 服务器以了解每个服务端点的创建和删除,因此它会为每个服务端点设置路由,以便您可以访问它。 

Pods

pod 是一组部署在同一主机上的容器。借助 pod,我们可以将多个依赖容器部署在一起,这样它就可以充当这些容器的包装器,这样我们就可以通过 pod 来交互和管理这些容器。 

Docker

Docker 是一个容器化平台,用于将您的应用程序及其所有依赖项以容器的形式打包在一起,以确保您的应用程序在任何环境中都能无缝运行,无论是开发、测试还是生产。Docker 是一种旨在使使用容器创建、部署和运行应用程序变得更加容易的工具。Docker 是世界领先的软件容器平台。它由一家名为 Dot cloud 的公司于 2013 年推出。它是用 Go 语言编写的。Docker 推出仅六年,但社区已经从虚拟机转向它。Docker 旨在使开发人员和系统管理员都受益,使其成为许多 DevOps 工具链的一部分。开发人员可以编写代码而不必担心测试和生产环境。系统管理员不必担心基础设施,因为 Docker 可以轻松扩展和缩减系统数量。Docker 在软件开发周期的部署阶段发挥作用。

 

 

Kubernetes 的应用

  • 微服务架构:Kubernetes 非常适合管理微服务架构,它将复杂的应用程序分解为可以独立部署和管理的更小的模块化组件。
  • 云原生开发:Kubernetes 是云原生开发的关键组件,它涉及构建旨在在云基础设施上运行的应用程序并利用云的可扩展性、灵活性和弹性。
  • 持续集成和交付:Kubernetes 与 CI/CD 管道很好地集成,从而更容易自动化部署过程并以最少的停机时间推出应用程序的新版本。
  • 混合和多云部署:Kubernetes 在不同的云提供商、内部数据中心甚至开发人员笔记本电脑之间提供一致的部署和管理体验,从而更容易构建和管理混合和多云部署。
  • 高性能计算:Kubernetes 可用于管理高性能计算工作负载,例如科学模拟、机器学习和大数据处理。
  • 边缘计算:Kubernetes 也用于边缘计算应用程序,可用于管理在边缘设备(如物联网设备或网络设备)上运行的容器化应用程序。

 

posted @ 2024-06-04 09:42  wongchaofan  阅读(4)  评论(0编辑  收藏  举报