Kubernetes架构设计与组件

这篇具有很好参考价值的文章主要介绍了Kubernetes架构设计与组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kubernetes简述

简介:

  • 一套容器集群管理系统
  • 一个开源平台
  • 实现容器集群的自动化部署、自动扩缩容、维护等功能

两个核心角色:

  • Master:Master管理Node
  • Node:Node管理容器

Master

主要负责整个集群的管理控制。
通常Master会占用一台独立的服务器,基于高可用原因,也有可能是多台。

组成:

  • kube-apiserver
  • etcd
  • kube-scheduler
  • kube-controller-manager

kube-apiserver

为Kubernetes中各类资源对象提供了增删改查等HTTP REST接口。
于资源的任何操作,都需要经过API Server进程来处理。

访问API Server进程的3种方式:

  • REST Request的方式
  • 官方提供的客户端
  • 命令行工具kubectl

etcd

Kubernetes的“数据库”。
一种轻量级的分布式键值存储。
可以在单台Master服务器上配置,也可以配置到多台服务器。
保存集群中所有的配置和各个对象的状态信息

只有API Server进程才能直接访问和操作etcd。

kube-scheduler

kube-scheduler是Pod资源的调度器。
监听最近创建但还未分配Node的Pod资源,会为Pod自动分配相应的Node。

一个实例的运作原理:

  1. 通过API Server进程的Watch接口监听新建的Pod。
  2. 搜索所有满足Pod需求的Node列表。
  3. 执行Pod调度逻辑。
  4. 会将Pod绑定到目标Node上。

Pod:Kubernetes的最小可操作单元,一个Pod包含一个或多个容器。

kube-controller-manager

大部分功能是由控制器执行的。
为了方便使用和学习,控制器由多个功能模块组合到一起,合成一个进程。
这些功能模块原本应该是各个独立的进程。

功能模块:

  • Node控制器:Node出现故障时做出响应
  • Replication控制器:对系统中的每个ReplicationController对象维护正确数量的Pod
  • Endpoint控制器:生成和维护所有Endpoint对象的控制器
  • ServiceAccount及Token控制器:为新的命名空间创建默认账户和API访问令牌

Endpoint:用于监听Service和对应的Pod副本的变化。

kube-controller-manager所执行的各项操作也是基于API Server进程。

Node

Kubernetes集群中的各个工作节点。
Node由Master管理,提供运行容器所需的各种环境,对容器进行实际的控制,而这些容器会提供实际的应用服务。

组成:

  • kubelet
  • kube-proxy
  • 容器运行时

kubelet

每个Node上都运行的主要代理进程。
kubelet负责维护容器的生命周期。
也负责存储卷(volume)等资源的管理。
以PodSpec为单位来运行任务。
kubelet会定期向API Server进程报告自身状态,API Server进程将状态更新到etcd中。

PodSpec是一种描述Pod的YAML或JSON对象。

不是Kubernetes创建的容器将不属于kubelet的管理范围。

kube-proxy

主要用于管理Service的访问入口。

  1. 集群内的其他Pod到Service的访问。
  2. 从集群外访问Service。

容器运行时

负责运行容器的软件。

Kubernetes支持多种运行时,例如:

  • Docker
  • containerd
  • cri-o(Podman 原来是 CRI-O 项目的一部分)
  • rktlet

任何基于Kubernetes CRI(容器运行时接口)的实现都支持

Pod创建时各组件协作流程

  1. 使用kubectl创建Pod。
  2. kubectl命令将转换为对API Server的调用。
  3. API Server验证请求并将其保存到etcd中。
  4. etcd通知API Server新Pod产生。
  5. API Server调用调度器。
  6. 调度器决定在哪个节点运行Pod,并将其返回给API Server。
  7. API Server将对应节点保存到etcd中。
  8. etcd通知API Server。
  9. API Server在相应的节点中调用kubelet。
  10. kubelet与容器运行时API发生交互,与容器守护进程通信以创建容器。
  11. kubelet将Pod状态更新到API Server中。
  12. API Server把最新的状态保存到etcd中。

Kubernetes的核心对象

虽然底层为容器。
为了屏蔽底层的技术细节,
Kubernetes抽象出各种对象实例(概念),
用户操作对象实例,便可以操控容器。

Pod

Kubernetes处理的最基本单元。
容器本身并不会直接分配到主机上,而是会封装到名为Pod的对象中。

特性:

  • 一个Pod代表单个应用程序。
  • 一个Pod由一个或多个关系紧密的容器构成。
  • 一个Pod中的容器拥有同样的生命周期。
  • 一个Pod中的容器作为一个整体一起编排到Node上。
  • 一个Pod中的容器共享环境、存储卷和IP空间。

注意:用户不应自行管理Pod,因为Pod并没有提供应用程序通常会用到的一些特性,如复杂的生命周期管理及动态伸缩。

控制器

Pod由控制器来管理。
在控制器中定义Pod的部署方式(如有多少个副本、需要在哪种Node上运行等)。

根据不同的业务场景,Kubernetes提供了多种控制器:

  • ReplicationController和ReplicaSet控制器
  • Deployment控制器
  • StatefulSet控制器
  • DaemonSet控制器
  • Job控制器和CronJob控制器

ReplicationController和ReplicaSet控制器

ReplicationController和ReplicaSet控制器功能类似。

相同功能:

  • 定义Pod模板
  • 保证在集群中部署的Pod数量与配置中的Pod数量一致。

ReplicationController更多的功能:

  • 执行滚动更新,将一组Pod逐个切换到最新版本。

ReplicaSet更多的功能:

  • Pod识别功能。
  • 副本筛选功能。

都没有的功能:

  • 更细粒度的生命周期管理功能。

Deployment控制器

基于ReplicaSet控制器。
有部分功能和ReplicationController相似。
最常用的工作负载对象之一。

优势:

  • 增加了更灵活的生命周期管理功能。
  • 管理应用程序不同版本之间的切换。
  • 自动维护事件历史记录及自动撤销功能。

Deployment控制器可能是使用频率最高的对象。

StatefulSet控制器

提供了排序和唯一性保证的特殊Pod控制器。
部署顺序、持久数据或固定网络等相关的特殊需求时使用。

可以通过Pod转移持久性数据卷。即使删除了Pod,这些卷也依然存在,以防止数据意外丢失。

虽然各个Pod的定义是一样的,但是因为其数据的不同,所以提供的服务是有差异的。

  • 分布式存储系统。
  • 服务端会话,不同会话的Pod提供的服务也不尽相同。

主要用于有状态的应用(例如,数据库)。

DaemonSet控制器

在集群的各个节点上运行单一的Pod副本。
非常适合部署那些为节点本身提供服务或执行维护的Pod。

  • 日志收集和转发、监控
  • 运行以增加节点本身功能为目的的服务

用于提供基本服务的,并且每个节点都需要。

可以绕过某些用于阻止控制器将Pod分配给某些主机的调度限制。
例如:原本Master服务器不可用于常规的Pod调度,但DaemonSet控制器可以越过基于Pod的限制,确保基础服务的运行。

Job控制器和CronJob控制器

Job控制器:

  • 基于特定任务而运行。
  • 运行任务的容器完成工作后,Job就会成功退出。
  • 适合执行一次性的任务。

CronJob控制器:

  • 在Job控制器的基础上增加了时间调度。
  • 在给定的时间点运行一个任务。
  • 也可以周期性地在给定时间点运行一个任务。

服务与存储

Service组件和Ingress

Service组件:

  • 内部负载均衡器中的一种组件。
  • 将相同功能的Pod在逻辑上组合到一起,让它们表现得如同一个单一的实体。
  • 通过Service组件可以发布服务。
  • 跟踪并路由到所有指定类型的后端容器。

    当需要给另一个应用程序或外部用户提供某些Pod的访问权限时,就可以配置一个Service组件。

Ingress:

  • 通过Ingress来整合Service组件。
  • 充当多个Service组件的统一入口。
  • 支持将路由规则合并到单个资源中。

    通过同一域名或IP地址下不同的路径来访问不同的Service组件。

存储卷和持久存储卷

存储卷(volume):

  • 允许Pod中的所有容器共享数据。
  • 在Pod终止之前一直保持可用。
  • Pod中的容器故障不会影响对共享文件的访问。
  • Pod终止后,共享的存储卷会被销毁。

持久存储卷(persistent volume):

  • 允许管理员为集群配置存储资源。
  • 用户可以为正在运行的Pod请求和声明存储资源。
  • 可预防节点级的故障。
  • 分配比本地更多的可用存储空间。

持久存储卷的Pod一旦使用完毕,存储卷的回收策略将决定是保留存储卷(直到手动删除),还是立即删除数据。

资源划分

命名空间

对Kubernetes集群资源进行划分。
实现多租户的资源隔离。

逻辑划分

标签和注解

标签(label):一种语义化标记。

附加到Kubernetes对象上,对它们进行标记或划分。
针对不同的实例进行管理或路由,可以用标签来进行选择。
每种基于控制器的对象都可以使用标签来识别需要操作的Pod。
Service组件也可以使用标签来确定应该将请求路由到哪些后端Pod。

每个单元可以拥有多个标签。
每个单元对于每个键只能拥有一个值。

键值对形式。标签的使用更像是对资源进行划分细类。

注解(annotation)也是一种类似的机制。

将任意键值信息附加到某一对象中。
可以包含少量结构化数据。

向对象添加更多元数据的一种方式,但并不用于筛选。文章来源地址https://www.toymoban.com/news/detail-480562.html

到了这里,关于Kubernetes架构设计与组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes(K8s)的核心组件简介

    Kubernetes(简称 K8s)是一个开源的,用于自动化部署、扩展和管理容器化应用程序的平台。在这篇文章中,我们将深入研究 Kubernetes 的核心组件及其功能。 一、Master 组件 1. API Server:Kubernetes 的主要管理组件。所有的管理任务都是通过 API Server 进行的。它是 Kubernetes 的前端,

    2024年02月15日
    浏览(47)
  • Kubernetes架构与组件详解

    Kubernetes是由Google开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序的平台。Kubernetes充分利用了云计算和容器化技术,可以大幅简化应用程序的开发、部署和运行过程。 Kubernetes的优势主要包括以下几点: 高可用性 :Kubernetes可以在多个地理位置和云平台上运

    2024年02月05日
    浏览(44)
  • Kubernetes集群架构与组件介绍

    个人博客 1.kubelet 该组件运行在每个Kubernetes节点上,用于管理节点。用来接收、处理、上报kube-apiserver组件下发的任务。 主要负责所在节点上的Pod资源对象的管理,例如Pod资源对象的创建、修改、监控、删除、驱逐及Pod生命周期管理等。 kubelet组件会定期监控所在节点的资源

    2024年02月07日
    浏览(51)
  • Kubernetes基础概念及架构和组件

    目录 一、kubernetes简介 1、kubernetes的介绍与作用 2、为什么要用K8S? 二、kubernetes特性 1、自我修复 2、弹性伸缩  3、服务发现和负载均衡 4、自动发布(滚动发布/更新)和回滚 5、集中化配置管理和密钥管理 6、存储编排 7、任务批量处理运行 三、kubernetes集群架构与核心组件

    2024年02月07日
    浏览(38)
  • Kubernetes 架构原则和对象设计

    云计算平台的分类¶ 以Openstack为典型的虚拟化平台 虚拟机构建和业务代码部署分离。 可变的基础架构使后续维护风险变大。 以谷歌borg为典型的基于进程的作业调度平台 技术的迭代引发borg的换代需求。 早期的隔离依靠chrootjail实现,一些不合理的设计需要在新产品中改进。

    2024年02月06日
    浏览(46)
  • 【解读Kubernetes架构】全面指南,带你掌握Kubernetes的设计原理与构成!

    本文关于 Kubernetes 架构的综合指南旨在通过插图详细解释每个 Kubernetes 组件。 了解 Kubernetes 的架构。 掌握 Kubernetes 的基本概念。 了解 Kubernetes 架构组件。 探索连接这些组件的工作流。 以下 Kubernetes 架构图显示了 Kubernetes 集群的所有组件以及外部系统如何连接到 Kubernetes 集

    2024年04月12日
    浏览(40)
  • 软件架构设计(二) 软件架构风格其他风格简介

    架构师备战(四)-软件架构设计(二) 软件架构风格其他风格简介 架构风格其实是很重要的知识,我们先了解了基本的五种架构风格, 我们之前也提到除了这五种风格之外, 还有一些没有收录在这几种风格之内的, 这次会去做一个探索。 概念 当软件被用来操作一个物理系统时,软件

    2024年02月10日
    浏览(46)
  • 本文将从云原生的概念、背景知识、Kubernetes架构及核心组件、应用场景、案例研究等方面深入剖析云原生课程的相关知识点

    作者:禅与计算机程序设计艺术 2020年,技术快速发展,云计算火爆。云原生领域也随之蓬勃发展。云原生已经成为大势所趋,大量企业都在逐渐转型云原生应用架构。国内外云服务厂商也纷纷推出基于Kubernetes的服务平台,而Kubernetes又是云原生开源技术体系的一部分。为了帮

    2024年02月07日
    浏览(66)
  • 架构设计内容分享(一百三十六):Spring AI 项目简介

    目录 1、概览 2、Spring AI 的主要概念 2.1、高级的 Prompt 和 AiResponse 3、Spring AI 入门 4、Spring AI 实践 4.1、在 Spring Boot 中注入 AiClient 4.2、使用 PromptTemplate 配置查询 5、Error 处理 6、总结 Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Spri

    2024年02月22日
    浏览(49)
  • 【微服务】------架构设计及常用组件

    前言 在当今迅猛发展的软件开发领域,微服务架构已经成为构建灵活、可扩展系统的关键方法之一。本文将带领读者深入了解微服务架构的核心思想,并介绍构建这一架构所需的常用组件,为各位开发者提供全面的指导和洞察力。 BigDiagram 我们从一张大图来展示微服务架构的

    2024年04月14日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包