您的位置:首页 > 娱乐 > 八卦 > 橙子建站app_太原网络项目_微信营销系统_武汉seo优化服务

橙子建站app_太原网络项目_微信营销系统_武汉seo优化服务

2024/12/22 17:33:32 来源:https://blog.csdn.net/Karoku/article/details/144427931  浏览:    关键词:橙子建站app_太原网络项目_微信营销系统_武汉seo优化服务
橙子建站app_太原网络项目_微信营销系统_武汉seo优化服务

文章目录

  • Kubernetes 容器编排系统
    • 背景与发展
    • Kubernetes 基本概念
    • Kubernetes 集群架构与组件
      • Kubernetes 核心组件
        • Master 组件
        • 配置存储中心
        • Node 组件
    • Kubernetes核心概念
      • 1. Pod
      • 2. Pod控制器
      • 3. Label与Label选择器
      • 4. Service
      • 5. Ingress
      • 6. Volume
      • 7. Name与Namespace
    • K8S创建Pod资源对象的工作流程
    • 总结

Kubernetes 容器编排系统

背景与发展

更高级的容器编排工具:

工具名称描述所属公司/组织
docker-swarmDocker旗下的容器跨主机编排工具,是实现在多机上Docker容器及其管理调度的工具Docker
mesos + marathonmesos:分布式资源管理框架,可以对集群中的多台主机的硬件资源进行统一调度和管理
marathon:mesos的容器编排框架,用来调度和运行容器服务
Apache
kubernetesGoogle旗下的容器跨主机编排工具,已经成为当前容器编排工具的事实标准Google

物理机时代
物理机存在诸多局限,如部署慢、成本高、资源浪费以及扩展和迁移困难。每台物理服务器需要单独安装操作系统和应用程序环境,配置繁琐且硬件资源利用率低。
虚拟机时代
虚拟机(如VMware)通过虚拟化技术解决了物理机的部分问题。虚拟机可以在物理机上快速部署,实现资源池化,提高资源利用率,并通过资源隔离确保虚拟机之间的独立性。然而,虚拟机仍需安装完整的操作系统,导致资源消耗较大。
容器化时代
容器化技术(如Docker)进一步解决了虚拟机的缺点。容器共享主机操作系统内核,无需安装完整的操作系统,从而实现了更高效的资源利用。容器具有一致的运行环境,启动速度快,且镜像体积小,便于分发和管理。然而,单机上的容器编排存在诸多挑战,如节点管理、负载均衡、自动化运维等。

Kubernetes 基本概念

全称与缩写
全称为 Kubernetes (K12345678S)(简称K8s)是一个用于自动部署、扩展和管理容器化应用程序的开源系统。K8s的名字来源于希腊语的舵手或飞行员,寓意着它作为容器集群的“领航者”。

由来与发展
K8s起源于Google的Borg系统(博格系统,google内部使用的大规模容器编排工具),后经GO语言重写并捐献给云原生计算基金会(CNCF)开源。随着容器的广泛使用,K8s已成为容器编排工具的事实标准。

作用与特点
K8s是一个生态极其丰富的容器编排框架工具,负责自动化运维管理多个容器化程序。它提供了自动化管理、弹性伸缩、高可用性、负载均衡和跨平台支持等特点,大大提高了应用部署和管理的效率。

Kubernetes 集群架构与组件

主从设备模型
K8s采用主从设备模型(Master-Slave架构),其中Master节点负责集群的调度、管理和运维,而Worker Node节点则负责运行工作负载。
Master组件

  • API Server:集群的统一入口,负责处理RESTful API请求。
  • Scheduler:负责根据调度算法将Pod调度到合适的Node上。
  • Controller Manager:负责集群内各种资源的自动化管理,如ReplicaSet、Deployment等。
  • etcd:一个高可用的分布式键值数据库,用于存储集群的配置信息和状态。

Worker Node组件

  • kubelet:Node的代理,负责监听API Server的指令并执行相应的操作。
  • kube-proxy:实现Service的负载均衡和内部通信。
  • Docker(或其他容器运行时):负责容器的创建和管理。

其他组件

  • Addon:K8s的扩展组件,如DNS、Ingress Controller、Dashboard等。

在这里插入图片描述

Kubernetes 核心组件

Master 组件

1. Kube-apiserver

  • 功能
    • 暴露 Kubernetes API,作为集群的统一入口。
    • 处理所有资源请求或调用操作,通过 HTTP Restful API 提供服务。
    • 验证请求的合法性,并将请求转发给相应的控制器进行处理。
    • 存储资源对象的状态到 Etcd 中。
  • 工作原理
    1. 监听特定端口,接收来自客户端的 HTTP 请求。
    2. 对请求进行认证和授权。
    3. 验证请求中的数据格式和内容。
    4. 将请求信息存储到 Etcd 中,并更新集群状态。
    5. 提供其他模块之间的数据交互和通信的枢纽。

2. Kube-controller-manager

  • 功能
    • 运行管理控制器,处理 K8S 集群中的常规任务。
    • 监控和管理集群中的各种资源,确保集群处于预期的工作状态。
  • 包含的控制器
    • Node Controller:负责节点故障发现和响应。
    • Replication Controller:确保 Pod 副本数始终保持预设值。
    • Endpoints Controller:填充端点对象,连接 Services 和 Pods。
    • Service Account & Token Controllers:为新的命名空间创建默认帐户和 API 访问令牌。
    • ResourceQuota Controller:确保资源对象不会超量占用系统资源。
    • Namespace Controller:管理 namespace 的生命周期。
    • Service Controller:K8S 集群与外部云平台之间的接口控制器。
  • 工作原理
    1. 通过 API Server 定期获取资源的状态信息。
    2. 根据资源的定义和当前状态,计算期望状态。
    3. 如果当前状态与期望状态不一致,采取相应的行动。

3. Kube-scheduler

  • 功能
    • 负责资源调度,将待调度的 Pod 分配到合适的节点上运行。
  • 调度策略
    • 预选策略(predicate):过滤不符合条件的节点。
    • 优选策略(priorities):优先级排序,选择优先级最高的节点。
  • 工作原理
    1. 从 API Server 获取尚未分配到节点的 Pod 信息。
    2. 根据 Pod 的资源需求和节点的可用资源,筛选出符合条件的节点。
    3. 为符合条件的节点计算优先级。
    4. 选择优先级最高的节点,并将 Pod 调度到该节点上。
配置存储中心

Etcd

  • 功能
    • K8S 的存储服务,保存集群的所有配置和状态信息。
    • 仅 API Server 具备读写权限,其他组件通过 API Server 接口读写数据。
  • 工作原理
    1. 以键值对的形式存储 K8S 集群的配置数据、资源对象的定义和状态等。
    2. 通过 Raft 一致性算法确保数据的一致性和可靠性。
    3. 在多个 Etcd 节点之间同步数据,实现高可用性。
Node 组件

1. Kubelet

  • 功能
    • Master 在 Node 节点上的 Agent 代理程序,管理 Pod 和容器的生命周期。
    • 将每个 Pod 转换成一组容器。
  • 工作原理
    1. 向 API Server 注册节点信息。
    2. 根据 API Server 的指令,启动、停止和监控 Pod 中的容器。
    3. 定期收集节点的资源使用情况,并上报给 API Server。

2. Kube-proxy

  • 功能
    • 实现 K8S 中的服务发现和负载均衡功能。
    • 在 node 节点上实现 Pod 网络代理,维护网络规则和四层负载均衡工作。
  • 工作原理
    1. 监听 API Server 中 service 和 endpoint 的变化情况。
    2. 根据 service 的定义,在节点上配置网络规则,实现请求的分发和负载均衡。
    3. 定期检查后端 Pod 的健康状况。

3. Container Runtime

  • 功能
    • 容器引擎,负责运行容器。
    • 常见的实现包括 Docker、Containerd 等。
  • 工作原理
    1. 根据 Pod 中容器的定义,从镜像仓库拉取所需的镜像。
    2. 创建和启动容器,并配置相应的网络和存储。
    3. 实现容器之间的资源隔离和限制。

Kubernetes核心概念

1. Pod

  • 定义:Pod是Kubernetes中最小的可部署的计算单元,它包含一个或多个容器,这些容器共享网络、存储等资源,并在同一台Node节点上运行。
  • 特点
    • 一个Pod可以运行多个容器,称为边车模式(SideCar),常用于日志收集、监控等辅助任务。
    • Pod内的容器可以通过localhost互相访问,并可以挂载Pod内的所有数据卷。
    • 不同的Pod之间不能通过localhost访问,也不能挂载其他Pod的数据卷。

2. Pod控制器

  • 定义:Pod控制器用于确保Pod按照用户的预期运行,包括副本数、生命周期、健康状态检查等。
  • 常用控制器
    • Deployment:无状态应用部署,用于管理和控制Pod和ReplicaSet。
    • ReplicaSet:确保预期的Pod副本数量,受Deployment控制。
    • DaemonSet:确保所有节点运行同一类Pod,常用于系统级后台任务。
    • StatefulSet:有状态应用部署,适用于需要稳定且唯一的网络标识符的应用。
    • Job:一次性任务,Pod完成任务后自动退出。
    • CronJob:周期性计划性任务。

3. Label与Label选择器

  • Label:用于分类管理资源对象,可以附加到Node、Pod、Service等资源上,通过key-value键值对定义。
  • Label选择器:用于查询和筛选拥有特定Label的资源对象,支持等值关系和集合关系选择器。

4. Service

  • 定义:Service是Kubernetes中用于访问一组Pod的抽象层,提供稳定的对外访问接口和负载均衡功能。
  • 特点
    • Service通过标签选择器定义作用于哪些Pod。
    • Service有固定的虚拟IP(Cluster IP),自动绑定后端Pod,实现流量转发和负载均衡。
    • Service支持多种流量调度模式,如iptables和ipvs。

5. Ingress

  • 定义:Ingress是Kubernetes集群的接入层,负责集群内外通讯,支持HTTP/HTTPS协议。
  • 特点
    • Ingress可以调度不同业务域、不同URL访问路径的业务流量。
    • Ingress通常与Service配合使用,实现外部访问集群内部服务。

6. Volume

  • 定义:Volume是Pod访问文件系统的抽象层,支持多种后端存储,如本地存储、NFS网络存储、云存储等。
  • 特点
    • Volume可以被挂载在Pod中一个或多个容器的指定路径下。
    • Volume提供了Pod间数据共享和持久化的能力。

7. Name与Namespace

  • Name:资源在Kubernetes中的唯一标识符,通常定义在资源的元数据(metadata)信息里。
  • Namespace:用于逻辑上隔离Kubernetes内的各种资源,不同Namespace内的资源名称可以相同,但相同Namespace内的同种资源名称必须唯一。
  • 常用Namespace
    • default:默认Namespace,未指定Namespace时使用的Namespace。
    • kube-system:Kubernetes系统创建的Namespace,用于存放系统级资源。
    • kube-public:Kubernetes自动创建的Namespace,用于存放整个集群范围内可见的资源。

K8S创建Pod资源对象的工作流程

  1. 用户通过客户端发送创建Pod的请求给apiserver
  2. apiserver接收到请求并验证后,会先将请求信息存入到etcd中,etc写入完成后,会发送创建Pod的事件给apiserver,再由apiserver转发给controller-manager
  3. controller-manager通过list-watch监听到apiserver发来的事件后,会根据请求信息中的资源配置创建Pod资源
  4. controller-manager创建好Pod资源后会通过apiserver将Pod资源的信息写入到etcd中,etc写入完成后,再发送事件给apiserver,再由apiserver转发给scheduler
  5. scheduler通过list-watch监听到apiserver发来的事件后,开始调度新创建的Pod,会先根据调度算法的预选策略过滤掉不符合条件的node节点,再根据优选策略选择优先级最高的node节点来调度Pod
  6. scheduler调度好Pod资源后会通过apiserver更新Pod资源的信息到etcd中,etc更新完成后,再发送事件给apiserver,再由apiserver转发node节点上的kubelet
  7. node节点上的kubelet通过list-watch监听到apiserver发来的事件后,会在node节点上调用容器引擎创建Pod及其容器,并管理它们的生命周期
  8. kubelet之后会定期收集Pod资源的状态并上报给apiserver
  9. 用户还可以通过apiserver在kube-proxy上创建service的网络规则,实现对Pod的网络代理和负载均衡

总结

K8S资源对象

资源对象描述
PodK8S能够创建和管理的最小单元,一个Pod里可以包含一个或多个容器,容器间共享网络、存储等资源
Deployment部署无状态应用,管理replicaset和Pod
StatefulSet部署有状态应用
DaemonSet在每个node节点上都部署同一类的Pod
Job一次性的部署短期任务的Pod
CronJob周期性的部署短期任务的Pod
Service在K8S集群内部,为通过标签选择器关联的一组Pod提供统一的访问入口和负载均衡
Ingress作为K8S集群外部的访问入口,支持七层代理转发
Volume存储卷,Pod中的容器可以挂载使用的文件系统

K8S资源配置字段

字段描述
apiversion指定资源对象使用的api版本
kind指定资源对象的类型
metadata指定资源对象的元数据信息
spec指定资源对象的配置属性
status资源对象在当前的运行状态

元数据信息配置字段

字段描述
name指定资源名称
namespace指定资源对象所在的命名空间。在同一个命名空间中,同类型资源的名称是唯一的
label指定资源使用的标签。可以给资源对象添加一个或多个键值对标签,再通过标签选择器进行资源的分组和过滤

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com