01.Kubernetes 概述

news2025/3/13 13:56:12

Kubernetes 概述

  • Kubernetes 概述
    • 1. Kubernetes系统组件、集群及工作机制
      • 1.1 Kubernetes 集群的节点类型
      • 1.2 Kubernetes 集群架构
        • 1.2.1 API Server
        • 1.2.2 Cluster Store (etcd)
        • 1.2.3 Controller Manager
        • 1.2.4 Scheduler
        • 1.2.5 Kubelet
        • 1.2.6 Kube Proxy
      • 1.3 Kubernetes Add-ons
      • 1.4 Pod 和应用
        • 1.4.1 为什么要设计 Service 资源?
        • 1.4.2 Pod 和工作负载型控制器
        • 1.4.3 部署并访问应用
      • 1.5 Kubernetes 网络基础
        • 1.5.1 Kubernetes 网络模型
        • 1.5.2 Kubernetes 集群中的通信流量

Kubernetes 概述

Kubernetes 适用于所有编排语言,且解决更广泛的 MSA 的问题

Kubernetes 还支持配置环境、设置资源约束、RBAC、管理应用程序生命周期、启用自动扩展和自我修复等, 自带反脆弱能力

1. Kubernetes系统组件、集群及工作机制

1.1 Kubernetes 集群的节点类型

由 Master 和 Worker 两类节点组成:

  • Master:控制节点
  • Worker:工作节点

运行逻辑

  • Kubernetes 将所有工作节点的资源集结在一起形成一台更加强大的“服务器”,称为 Kuernetes 集群
  • 计算和存储接口通过 Master 之上的 API Server 暴露
  • 客户端通过 API 提交应用程序的运行请求,而后由 Master 通过调度算法将其自动指派至某特定的工作节点以 Pod 对象的形式运行
  • Master 会自动处理因工作节点的添加、故障或移除等变动对 Pod 的影响

1.2 Kubernetes 集群架构

Kubernetes 属于典型的 Server-Client 形式的二层架构

  • Master 主要由 API Server、Controller-Manager 和 Scheduler 三个组件,以及一个用于集群状态存储的 Etcd 存储服务组成,它们构成整个集群的控制平面
  • 而每个 Node 节点则主要包含 Kubelet、Kube Proxy 及容器运行时(docker是最为常用的实现)三个组件,它们承载运行各类应用容器
1.2.1 API Server
  • 整个集群的 API 网关,相关应用程序为 kube-apiserver
  • 基于 http/https 协议以 REST 风格提供,几乎所有功能全部抽象为“资源”及相关的“对象”
  • 声明式 API,用于只需要声明对象的“终态”,具体的业务逻辑由各资源相关的 Controller 负责完成
  • 无状态,数据存储于 etcd 中
1.2.2 Cluster Store (etcd)
  • 集群状态数据存储系统,通常指的就是 etcd
  • 仅会同 API Server 交互
1.2.3 Controller Manager
  • 负责实现客户端通过 API 提交的终态声明,相应应用程序为 kube-controller-manager
  • 由相关代码通过一系列步骤驱动 API 对象的“实际状态”接近或等同“期望状态”
1.2.4 Scheduler
  • 调度器,负责为 Pod 挑选出(评估这一刻)最合适的运行节点
  • 相关程序为 kube-scheduler
1.2.5 Kubelet
  • Kubernetes 集群于每个 Worker 节点上的代理,相应程序为 kubelet
  • 接收并执行 Master 发来的指令,管理由 Scheduler 绑定至当前节点上的 Pod 对象的容器
    • 通过 API Server 接收 Pod 资源定义,或从节点本地目录中加载静态 Pod 配置
    • 借助于兼容 CRI 的容器运行时管理和监控 Pod 相关的容器
1.2.6 Kube Proxy
  • 运行于每个 Worker 节点上,专用于负责将 Service 资源的定义转为节点本地的实现
    • iptables 模式:将 Service 资源的定义转为适配当前节点视角的 iptables 规则
    • ipvs 模式:将 Service 资源的定义转为适配当前节点视角的 ipvs 和少量 iptables 规则
  • 是打通 Pod 网络在 Service 网络的关键所在

1.3 Kubernetes Add-ons

负责扩展 Kubernetes 集群的功能的应用程序,通常以 Pod 形式托管运行于 Kubernetes 集群之上

必选插件

  • Network Plugin:网络插件,经由 CNI 接口,负责为 Pod 提供专用的通信网络,有多种实现
    • CoreOS Flannel
    • ProjectCalico
  • Cluster DNS:集群 DNS 服务器,负责服务注册、发现和名称解析,当下的实现是 CoreDNS

重要插件

  • Ingress Controller:Ingress 控制器,负责为 Ingress 资源提供具体的实现,实现 http/https 协议的七层路由和流量调度,有多种实现,例如 Ingress-Nginx、Contour 等
  • Metrics Server:Node 和 Pod 等相关组件的核心指标数据收集器,它接受实时查询,但不存储指标数据
  • Kubernetes Dashboard/Kuboard/Rainbond:基于 Web 的UI
  • Prometheus:指标监控系统
  • ELK/PLG:集中式日志系统
  • OpenELB:适用于非云端部署的 Kubernetes 环境的负载均衡器,可利用 BGP 和 ECMP 协议达到性能最优和高可用性

1.4 Pod 和应用

Kubernetes 本质上是“以应用为中心”的现代应用基础设施,Pod 是其运行应用及应用调度的最小逻辑 单元

在设计上,仅应该将具有“超亲密”关系的应用分别以不同容器的形式运行于同一 Pod 内部

  • 本质上是共享 Network、IPC 和 UTS 名称空间以及存储资源的容器集
    • 可将其想象成一台物理机或虚拟机,各容器就是该主机上的进程
    • 各容器共享网络协议栈、网络设备、路由、IP地址和端口等,但 Mount、PID和 USER 仍隔离
    • 每个 Pod 上还可附加一个“存储卷(Volume)”作为该“主机”的外部存储,独立于 Pod 的生命周期,可由 Pod 内的各容器共享
  • 模拟“不可变基础设施”,删除后可通过资源清单重建
    • 具有动态性,可容忍误删除或主机故障等异常
    • 存储卷可以确保数据能超越 Pod 的生命周期
1.4.1 为什么要设计 Service 资源?

Pod 具有动态性,其 IP 地址也会在基于配置清单重构后重新进行分配,因而需要服务发现机制的支撑

Kubernetes 使用 Service 资源和 DNS 服务(CoreDNS)进行服务发现

  • Service 能够为一组提供了相同服务的 Pod 提供负载均衡机制,其 IP 地址(Service IP,也称为 Cluster IP)即为客 户端流量入口
  • 一个 Service 对象存在于集群中的各节点之上,不会因个别节点故障而丢失,可为 Pod 提供固定的前端入口
  • Service 使用标签选择器(Label Selector)筛选并匹配 Pod 对象上的标签(Label),从而发现Pod
    • 仅具有符合其标签选择器筛选条件的标签的 Pod 才可由 Service 对象作为后端端点使用
1.4.2 Pod 和工作负载型控制器

Pod 是运行应用的原子单元,其生命周期管理和健康状态监测由 kubelet 负责完成,而诸如更新、扩缩 容和重建等应用编排功能需要由专用的控制器实现,这类控制器即工作负载型控制器

  • ReplicaSet和 Deployment
  • DaemonSet
  • StatefulSet
  • Job和CronJob

工作负载型控制器也通过标签选择器筛选 Pod 标签从而完成关联

工作负载型控制器的工作重心

  • 确保选定的 Pod 精确符合期望的数量
    • 数量不足时依据 Pod 模板创建,超出时销毁多余的对象
  • 按配置定义进行扩容和缩容
  • 依照策略和配置进行应用更新
1.4.3 部署并访问应用

部署应用

  • 依照编排需求,选定合适类型的工作负载型控制器
  • 创建工作负载型控制器对象,由其确保运行合适数量的 Pod 对象
  • 创建 Service 对象,为该组 Pod 对象提供固定的访问入口

请求访问 Service 对象上的服务

  • 集群内部的通信流量也称为东西向流量,客户端也是集群上的 Pod 对象;
  • Service 同集群外部的客户端之间的通信流量称为南北向流量,客户端是集群外部的进程;
    • 另外,集群上的 Pod 也可能会与集群外部的服务进程通信

1.5 Kubernetes 网络基础

1.5.1 Kubernetes 网络模型

Kubernetes 集群上会存在三个分别用于节点、Pod 和 Service 的网络

  • 于 worker 上完成交汇
  • 由节点内核中的路由模块,以及 iptables/netfilter 和 ipvs 等完成网络间的流量转发

节点网络

  • 集群节点间的通信网络,并负责打通与集群外部端点间的通信
  • 网络及各节点地址需要于 Kubernetes 部署前完成配置,非由 Kubernetes 管理,因而,需要由管理员手动进行, 或借助于主机虚拟化管理程序进行

Pod 网络

为集群上的 Pod 对象提供的网络

虚拟网络,需要经由 CNI 网络插件实现,例如 Flannel、Calico、Cilium 等

Service网络

  • 在部署 Kubernetes 集群时指定,各 Service 对象使用的地址将从该网络中分配
  • Service 对象的 IP 地址存在于其相关的 iptables 或 ipvs 规则中
  • 由 Kubernetes 集群自行管理
1.5.2 Kubernetes 集群中的通信流量

Kubernetes 网络中主要存在 4 种类型的通信流量

  • 同一 Pod 内的容器间通信
  • Pod 间的通信
  • Pod 与 Service 间的通信
  • 集群外部流量与 Service 间的通信

Pod 网络需要借助于第三方兼容 CNI 规范的网络插件完成,这些插件需要满足以下功能要求

  • 所有 Pod 间均可不经 NAT 机制而直接通信
  • 所有节点均可不经 NAT 机制直接与所有 Pod 通信
  • 所有 Pod 对象都位于同一平面网络中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2314337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM垃圾回收面试题及原理

1. 对象什么时候可以被垃圾器回收 如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾,如果定位了垃圾,则有可能会被垃圾回收器回收 如果要定位什么是垃圾,有两种方式来确定 引用计数法可达性分析算法 1.1 …

Flutter 小技巧之通过 MediaQuery 优化 App 性能

许久没更新小技巧系列,温故知新,在两年半前的《 MediaQuery 和 build 优化你不知道的秘密》 我们聊过了在 Flutter 内 MediaQuery 对应 rebuild 机制,由于 MediaQuery 在 MaterialApp 内,并且还是一个 InheritedWidget &#xff0…

SpringBoot基础Kafka示例

这里将生产者和消费者放在一个应用中 使用的Boot3.4.3 引入Kafka依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency>yml配置 spring:application:name: kafka-1#kafka…

Spring 的三种注入方式?

1. 实例的注入方式 首先来看看 Spring 中的实例该如何注入&#xff0c;总结起来&#xff0c;无非三种&#xff1a; 属性注入 set 方法注入 构造方法注入 我们分别来看下。 1.1 属性注入 属性注入是大家最为常见也是使用最多的一种注入方式了&#xff0c;代码如下&#x…

STM32第一天建立工程

新建一个工程 1&#xff1a;新建一个文件&#xff0c;添加文件 a:DOC工程说明 》doc说明文档 b&#xff1a;Libraries固件库 》cmsis内核文件 &#xff08;一般这就是stm32内核文件&#xff09; 》FWLIB外设文件 &#xff08;这种就是stm32外设文件不全&#xff09; 》start…

搭建本地化笔记AI:用Copilot+deepseek+nomic-embed-text构建本地智能知识系统

安装Ollama https://ollama.com/ 下载模型 下载大语言模型 根据自己电脑的配置选择模型的大小 ollama run deepseek-r1:8b 下载向量处理模型 创建向量数据库时需要使用Embedding模型对文本进行向量化处理 ollama pull nomic-embed-text 查看安装的模型 ollama listNAME …

【蓝桥杯单片机】第十一届省赛

一、真题 二、创建工程 1.在C盘以外的盘新建文件夹&#xff0c;并在文件夹里面创建两个文件夹Driver 和Project 2.打开keil软件&#xff0c;在新建工程并选择刚刚建好的project文件夹&#xff0c;以准考证号命名 3.选择对应的芯片型号 4.选择否&#xff0c;即不创建启动文件 …

【存储中间件】Neo4J图数据库超详细教程(一):相关介绍、特点及优势、数据模型、软件安装

文章目录 Neo4J超详细教程一、Neo4J相关介绍1.为什么需要图数据库方案1&#xff1a;Google方案2&#xff1a;Facebook 2.特点和优势3.什么是Neo4j4.Neo4j数据模型图论基础属性图模型Neo4j的构建元素 5.软件安装 个人主页&#xff1a;道友老李 欢迎加入社区&#xff1a;道友老李…

xxl-job部署在docker-destop,实现定时发送预警信息给指定邮箱

XXL-JOB XXL-JOB是一个分布式任务调度平台&#xff08;XXL是作者徐雪里姓名拼音的首字母&#xff09;&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 源码仓库地址&#xff1a;https://github.com/xuxueli/xxl-job 源码结构&#xff1a; 系统架构 在xxl-j…

【QT】QScrollBar设置样式:圆角、隐藏箭头、上边距等

目录 0.简介 1.原理 2.具体代码 0.简介 环境&#xff1a;Ubuntu22.04、qtDesigner绘制UI 项目需要&#xff0c;按照UI修改滚动条样式&#xff0c;滚动条我使用的是QScrollBar&#xff0c;默认样式和修改之后的样式如下&#xff1a; 1.原理 2.具体代码 我是用qtDesigner绘制…

trae中文版AI搭建完整可用的项目框架

Trae 是由字节跳动推出的 AI 原生集成开发环境&#xff08;AI IDE&#xff09;&#xff0c;号称可以搭建完整项目&#xff0c;个人试用后体验确实比Cursor或cline更便捷&#xff0c;因为他多个文件关联准确率更高。 正式版的trae不支持大陆使用&#xff0c;不过目前已经推出了…

cfi网络安全 网络安全hcip

目录 RIP (路由信息协议) 算法 开销 版本 开销值的计算方式 RIPV1和RIPV2的区别 RIP的数据包 Request(请求)包 Reponse(应答)包 RIP的特征 周期更新 RIP的计时器 1&#xff0c;周期更新计时器 2&#xff0c;失效计时器 3&#xff0c;垃圾回收计时器 RIP的核心思…

Banana Pi 与瑞萨电子携手共同推动开源创新:BPI-AI2N

2025年3月11日&#xff0c; Banana Pi 开源硬件平台很高兴宣布&#xff0c;与全球知名半导体解决方案供应商瑞萨电子&#xff08;Renesas Electronics&#xff09;正式达成技术合作关系。此次合作标志着双方将在开源技术、嵌入式系统和物联网等领域展开深度合作&#xff0c;为全…

linux 命令 ls

ls 是 Linux 系统中用于列出目录内容的核心命令&#xff0c;几乎所有日常操作都会用到。以下是其详细用法和常见场景说明 1. 基础语法 ls [选项] [目录/文件] 不指定目录时&#xff0c;默认列出当前目录的内容。 可以指定文件或目录路径&#xff0c;支持通配符&#xff08;如…

C#-扩展方法-Linq

密封类 sealed&#xff0c;无法被继承 var 可以定义匿名对象 static void test1() {var t 1;t "jack";//报错&#xff0c;类型已经确定好了var s new{id 1,name "tom"};Console.WriteLine(s.id s.name); } 扩展方法 对现有类型做方法的扩展&am…

Go红队开发—web网络编程

文章目录 web网络编程Req快速请求 调试DevModeDebugLogTraceInfo瓶颈分析 控制请求与响应控制请求的字段内容控制调试打印的内容分开dump请求与响应部分请求体设置 作用范围级别设置参数查询URL 路径参数表单请求设置请求头设置 判断响应状态码解析数据SetSuccessResultgjson响…

轻量级模块化前端框架:快速构建强大的Web界面

轻量级模块化前端框架&#xff1a;快速构建强大的Web界面 在当今快节奏的Web开发环境中&#xff0c;选择一个高效且灵活的前端框架至关重要。UIkit 是一个轻量级的模块化前端框架&#xff0c;旨在帮助开发者快速构建功能强大且响应迅速的Web界面。 UIkit提供了丰富的组件和工…

qt+opengl 播放yuv视频

一、实现效果 二、pro文件 Qt widgets opengl 三、主要代码 #include "glwidget.h"GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent) {connect(&m_timer, &QTimer::timeout, this,[&](){this->update();});m_timer.start(1000/33); }v…

5G基本概念

作者:私语茶馆 1. 5G应用场景概述 1.1.5G应用场景 ITU域2015年定义了三大应用场景:eMBB(增强型移动宽带)、uRLLC(低时延高可靠通信)、mMTC(海量物联网通信); emBB:Enhanced Mobile Broadband ,移动互联网应用,是4G MBB(移动宽带)的升级,主要侧重于网络速率、带…

PH热榜 | 2025-03-12

1. Fluently 标语&#xff1a;开始说英语&#xff0c;就像说你的母语一样流利。 介绍&#xff1a;想象一下&#xff0c;有一个像人类一样的英语教练&#xff0c;全天候在线、价格却便宜15倍。这就是 Fluently &#x1f680; 纠正你的错误&#xff0c;提升你的词汇量、发音和语…