当前位置: 首页 > news >正文

【K8S】K8S架构及相关组件

K8s


文章目录

  • 1 K8S总体架构
  • 2 相关组件
    • 2.1 控制面板组件
    • 2.2 节点组件
    • 2.3 附加组件
  • 写在最后


1 K8S总体架构

K8S,全称Kubernetes,是一个开源的容器部署和管理平台,由Google开发,后捐献给云原生计算基金会(CNCF)。K8S提供了容器编排、容器运行时、以容器为中心的基础设施编排、负载平衡、自我修复机制和服务发现等功能。K8S的架构采用主从设备模型(Master-Slave架构),即由Master节点负责集群的调度、管理和运维,Slave节点作为集群中的运算工作负载节点。
在这里插入图片描述

  • 中央控制节点(Master Node): 位于集群的中心,包含API Server、Scheduler、Controller Manager和etcd等组件。这些组件协同工作,负责集群的管理、调度和状态监控。
  • 工作节点(Worker Node): 围绕在Master Node周围,每个Node节点上运行Kubelet、Kube-Proxy和容器运行时等组件。这些节点负责执行Master节点分配的任务,运行和管理容器实例。
  • Pod: Pod是Kubernetes中的最小调度单元,由一个或多个容器组成,这些容器共享存储和网络资源。Pod是Kubernetes生态系统中的核心管理单元。作为最小调度单元,分布在各个Node节点上,由容器组成,共享存储和网络资源。
  • 服务(Service): 为Pod提供稳定的网络接入点,实现服务发现和负载均衡。

2 相关组件

K8S的控制面板组件(Master)是集群的核心部分,负责整个集群的管理和调度。这些组件协同工作,确保了Kubernetes集群的稳定运行和高效管理。而K8S的节点组件主要包括Node节点上的组件,这些组件负责在Node节点上运行容器化应用,并与管理节点(Master节点)进行通信。
在这里插入图片描述

2.1 控制面板组件

  1. etcd
    ● 功能:etcd是一个高度可靠的分布式键值存储,用于存储集群配置信息的持久化存储。etcd保存了Kubernetes集群的所有状态数据,如Pods、Services等资源的定义和状态。当数据发生变化时,etcd会快速地通知Kubernetes相关组件。
    ● 特点:etcd是一个独立的服务组件,并不隶属于Kubernetes集群。在生产环境中,etcd通常以集群方式运行,以确保服务的可用性。
  2. kube-apiserver
    ● 功能:kube-apiserver是Kubernetes集群的API服务器,是集群的前端服务器,提供了HTTP/HTTPS RESTful API,即Kubernetes API。所有的请求都需要经过这个接口进行通信。它负责接收、校验并响应所有的REST请求,并将结果状态持久化存储在etcd中。
    ● 认证与授权:kube-apiserver支持多种身份验证机制,如基于令牌、证书和用户名/密码的身份验证。同时,它还使用RBAC(Role-Based Access Control)机制来管理Kubernetes资源的授权。
    ● 架构:kube-apiserver的架构是一个多层的系统,由HTTP Server提供HTTP(S)服务。所有的API请求都通过HTTP(S)进行传输,并由kube-apiserver处理。
  3. kube-controller-manager
    ● 功能:kube-controller-manager是Kubernetes集群中的控制器管理器,负责管理集群中所有的控制器(controller)。这些控制器包括节点控制器(Node Controller)、副本控制器(Replication Controller)等。它们不断地监听集群状态变化,并根据期望状态和实际状态的差异来进行调谐。
    ● 架构:从逻辑上讲,每个控制器都是一个单独的进程,但为了降低复杂性,它们都被编译到同一个可执行文件,并在同一个进程中运行。
  4. cloud-controller-manager(可选)
    ● 功能:cloud-controller-manager用于管理与特定云平台相关的控制器。它的作用是将云平台的功能封装成Kubernetes的API,以便与其他组件进行交互。
  5. kube-scheduler
    ● 功能:kube-scheduler是Kubernetes集群的默认调度器,负责将新创建的Pod调度到合适的节点上。调度决策考虑的因素包括单个Pod及Pods集合的资源需求、软硬件及策略约束、亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限等。
    ● 调度算法:kube-scheduler通过Predicate(预选)和Priority(优选)两种调度算法来选择最合适的节点。Predicate用于过滤掉不满足条件的节点,Priority用于在剩余节点中选择优先级最高的节点。

2.2 节点组件

  1. kubelet:在每个节点上运行的代理,负责管理该节点上的容器、Pod 和容器相关的资源。是节点与主节点通信的桥梁,执行主节点下发的指令。
  2. kube-proxy:网络代理,负责实现 Kubernetes 服务的网络抽象和负载均衡。它将对服务的访问转发到后端的一组 Pod 上。提供服务的网络访问能力,确保服务的可靠性和可扩展性。
  3. 容器运行时(Container Runtime):负责在节点上运行容器的运行时环境。Kubernetes 支持多种容器运行时,如 Docker、containerd、CRI-O 等。是容器化应用运行的基础,提供容器的创建、运行和管理能力。

2.3 附加组件

  • kube-dns/coredns:DNS 服务,负责为 Pod 提供 DNS 解析服务,使得在集群内部可以使用域名来访问其他服务。
  • Ingress Controller:负责将外部流量引入到集群内部的服务,并执行负载均衡、SSL 终止等功能。
  • Monitoring and Logging:用于监控和日志记录集群中的应用程序和基础设施,如 Prometheus、EFK Stack 等。
  • Cluster Autoscaler:自动扩展集群节点数量,根据负载情况自动增加或减少节点数量以满足需求。
  • Horizontal Pod Autoscaler:自动扩展 Pod 的副本数量,根据 CPU 使用率或自定义指标调整 Pod 的数量。

写在最后

本文已被专栏 Kubernetes 收录,欢迎 点击订阅专栏
 以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PHP反序列化POP链构造:理解与利用
  • IT运维岗适用的6本证书
  • 如何在前后端分离项目中,使用Spring Security
  • 英特尔凌动® P5300 和 P5700 处理器使企业能够优化现代网络基础架构、安全加速器和存储设备之间的性能和成本平衡。
  • leetcode:1822. 数组元素积的符号(python3解法)
  • JMeter 性能测试工具入门与实践
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(七)卡尔曼滤波器三:卡尔曼滤波器公式推导【转载】
  • Zookeeper的监听机制
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • 从理论到实践网络编程模型:(BIO、NIO、AIO)同步与异步模型的原理与应用 (五)
  • shell脚本编程实践(五)
  • 刷完Armbian的盒子后根目录空间太小解决方案
  • 高阶数据结构——LRU Cache
  • pod详解 list-watch机制 预选优选策略 如何指定节点调度pod
  • 10.1 使用ansible部署 redis-exporter
  • Android 控件背景颜色处理
  • css的样式优先级
  • exif信息对照
  • isset在php5.6-和php7.0+的一些差异
  • nfs客户端进程变D,延伸linux的lock
  • opencv python Meanshift 和 Camshift
  • ReactNative开发常用的三方模块
  • Redis的resp协议
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 你真的知道 == 和 equals 的区别吗?
  • 驱动程序原理
  • 使用 QuickBI 搭建酷炫可视化分析
  • 自定义函数
  • 阿里云ACE认证之理解CDN技术
  • 组复制官方翻译九、Group Replication Technical Details
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (备份) esp32 GPIO
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)linux使用docker容器运行mysql
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (四)库存超卖案例实战——优化redis分布式锁
  • (算法)Travel Information Center
  • (转)3D模板阴影原理
  • (转)iOS字体
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • ./configure,make,make install的作用
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Net Memory Profiler的使用举例
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .netcore 获取appsettings
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @JoinTable会自动删除关联表的数据
  • @RequestBody与@RequestParam:Spring MVC中的参数接收差异解析