k8s基础架构介绍

k8s基础架构介绍

k8s 是对容器进行编排的一种工具。通过k8s可以实现对容器的编排、部署、更新等

学习k8s之前,先了解相关的一些使用和配置k8s的一些工具。

k8s的常用工具

在 kubernetes 中,主要有三个日常使用的工具,这些工具使用 kube 前缀命名,这三个工具如下:

kubeadm

用来初始化集群的指令,能够创建集群,并且添加新的节点。可用其它部署工具替代。

具体功能有:

  1. 初始化集群:在控制平面节点(Master 节点)上运行 kubeadm init,自动生成集群所需的证书、配置文件和核心组件(如 API Server、Controller Manager、Scheduler 等)。

  2. ​加入节点:生成 kubeadm join 命令,将工作节点(Worker 节点)添加到集群。

  3. 升级集群:支持 Kubernetes 版本的升级(如 kubeadm upgrade)。

  4. 重置集群:通过 kubeadm reset 清理集群状态。

kubelet:

​运行在每个节点(Master 和 Worker)上的代理,直接与容器运行时(如 Docker、containerd)交互,负责与API-server通信,管理节点上的 Pod 和容器生命周期。具体功能包括

  1. ​启动/停止容器:根据 Kubernetes API Server 的指令,创建或终止 Pod 中的容器。

  2. 监控容器的运行状态,并向 API Server 报告节点和 Pod 的健康状态。

  3. 挂载存储卷:按需挂载 Pod 所需的存储卷(如 Persistent Volume)。

  4. ​执行探针:运行 livenessProbereadinessProbe 检查容器状态。

kubectl

kubectl:用k8s中的命令行工具,与 kubernetes API-Server 通讯,是我们操作集群的客户端。具体功能有

  1. 创建、删除、更新、查看集群中的资源(如 kubectl create, kubectl delete

  2. ​调试集群:查看 Pod 日志(kubectl logs)、进入容器终端(kubectl exec)、检查资源状态(kubectl describe)。

  3. 通过 YAML 文件声明式管理资源(如 kubectl apply -f deployment.yaml)。

那么我们操纵集群中的节点是怎么办到的呢,其实就是用户通过 kubectl 向 API Server 发送指令,API Server 再将指令传递给 kubelet 执行。

讲完常用的工具,接下来,我们就可以一起看一下k8s的架构了。

k8s 架构

一个 kubernetes 集群是由一组被称为节点的机器或虚拟机组成,节点有 master、worker 两种类型。一个集群中至少有一个 master 节点,在没有 worker 节点的情况下, Pod 也可以部署到 master 节点上。如果集群中的节点数量非常多,则可考虑扩展 master 节点,使用多个 master 节点控制集群。

k8s中的master节点组成了控制平面,worker节点组成了数据平面。

控制平面

控制平面由master节点组成。一个maser节点中通常由5个组件,包括

  1. ​kube-apiserver:集群的“入口”,提供 REST API,接收用户请求(如 kubectl 命令)。

  2. etcd:分布式键值存储数据库,保存集群的所有配置和状态数据。

  3. kube-scheduler:调度 Pod 到合适的节点上运行。

  4. kube-controller-manager:运行各种控制器(如 Deployment、Node 控制器),确保集群处于期望状态。

  5. ​cloud-controller-manager​(可选):与云平台(如 AWS、GCP)交互,实现云原生功能。

数据平面

数据平面是 Kubernetes 集群中实际承载工作负载的核心层,由一组 ​工作节点(Worker Node)​ 构成,负责运行用户应用(Pod)并处理计算、存储、网络等实际任务。

每个worker节点中,都必须有:

kubelet:节点代理,管理本节点上 Pod 的生命周期(创建、终止、重启容器)、监控容器状态(如 CPU/内存使用率),并向控制平面报告节点和 Pod 的健康状态、挂载存储卷(Volume)、执行容器探针(Liveness/Readiness Probe)等。

kube-proxy:节点网络代理,维护 Kubernetes 服务的网络规则,确保 Pod 跨节点通信时,流量能正确转发到目标端点(Endpoint)、实现 Service 的负载均衡和网络流量路由(通过 iptables 或 IPVS 规则)。

k8s部署一个pod的完整流程

当用户通过 kubectl createkubectl apply 提交资源声明(如 Deployment、Pod)时,集群会按以下步骤协调资源:

  1. 用户提交指令

    kubectl 将 YAML 文件内容转换为 API 请求,发送至 ​API Server。

  2. ​API Server 处理请求

    API Server 对请求进行身份认证(Authentication)、权限校验(Authorization)并将资源定义(如 Pod 规格)持久化到 ​etcd 数据库。

  3. ​调度决策(Scheduler)

    调度器监听 API Server 的未调度 Pod 事件,执行以下逻辑:
    过滤满足 Pod 资源需求的节点(如 CPU/内存/GPU)。
    根据策略(亲和性、污点容忍、拓扑分布等)为 Pod 选择最优节点。

  4. 节点执行(kubelet)

    目标节点的 ​kubelet 检测到新 Pod 调度到本节点后:

    • 从镜像仓库拉取容器镜像(若本地不存在)。
    • 调用容器运行时创建容器,挂载存储卷。
    • 启动容器并执行探针检查。
    • 持续监控容器状态,并上报至 API Server。
  5. ​状态反馈与协调(Controller Manager)​

    ​控制器(如 Deployment Controller)​ 持续监听 Pod 状态,若Pod 异常终止,触发重启或重建(根据重启策略),若期望副本数与实际不符,触发扩缩容操作。

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

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

相关文章

兴达易控Profinet 转 ModbusTCP跨网段通信模块

Profinet 转 ModbusTCP/跨网段通信模块 Profinet转ModbusTCP/跨网段通信模块,作为现代工业自动化系统中不可或缺的重要组件,正日益受到广泛关注和应用。 这种模块的核心功能是将Profinet网络协议转换为Modbus TCP协议,实现不同网络之间的无缝…

创新技术引领软件供应链安全,助力数字中国建设

编者按 随着数字化转型的加速,针对软件供应链的攻击事件呈快速增长态势,目前已成为网络空间安全的焦点。如何将安全嵌入到软件开发到运营的全流程,实现防护技术的自动化、一体化、智能化,成为技术领域追逐的热点。 悬镜安全作为…

某大厂自动化工程师面试题

一些大厂的自动化工程师面试题汇总: 基础知识类 请解释什么是PLC(可编程逻辑控制器)?什么是PID控制?它在自动化系统中的作用是什么?请描述一下工业4.0的基本概念。编程与控制系统类 你熟悉哪些PLC编程语言?请举例说明。如何在SCADA系统中实现数据采集和监控?请解释一下…

Java 大视界 -- 基于 Java 的大数据分布式数据库架构设计与实践(125)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

cursor中使用prettier-code formatter插件方法

cursor的"扩展"中搜索"prettier-code formatter",然后安装 点击cursor编辑器右上角“更多操作”,然后打开“配置编辑器” 按照图片进行操作,进入到editor在editor中,找“格式化“,把Format On Sav…

OSPF-2 邻接建立关系

上一期我们说了OSPF的邻居建立关系以及OSPF邻居关系建立中建立失败的因素以及相关实验案例 这一期我们来说说OSPF的邻接关系建立时需要交互哪些报文以及失败因素及原因和相关实验案例 一、概述 在运行了OSPF的网络当中为了交互链路状态信息和路由信息,互相之间需要建立邻接关…

问deepseek: 如何处理CGNS网格文件里,多个zone之间的链接数据

在CGNS文件中,多个zone之间的链接数据通常通过ZoneGridConnectivity节点处理。以下是处理步骤: 1. 确定链接类型 首先,明确zone之间的链接类型,常见的有: 1-to-1连接:两个zone的边界点一一对应。** Over…

什么是SEO泛目(什么是SEO站群)

SEO泛目录与站群策略:提升网站优化的双剑合璧 在当今竞争激烈的互联网环境中,SEO优化已成为企业提升网站流量和品牌曝光的重要手段。而在众多SEO策略中,泛目录和站群因其独特的技术优势和效果,逐渐成为SEO从业者的热门选择。本文…

conda、pip、npm、yarn换国内源

conda源 # conda源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes# 换回conda的默认源 conda config --remove-key channels pip源 # pip源# 永久换源 pip config set global.index-url https://…

Jetson Orin NX jupyter lab的安装和使用

主要是为了梳理一下整个过程,其实步骤很简单,但容易出错。 注意,实际只有两个文件需要写入,一个是jupyter_lab_config.py,一个是jupyter.service。 配置文件的名字要写对,如果总是copy网上的代码&#xff0…

【清华大学第七版】DeepSeek赋能家庭教育的实操案例(批改作文+辅助语文/数学/科学学习+制定学习计划)

我用夸克网盘分享了「DeepSeek完整资料合集」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan.quark.cn/s/621259e4af15 近日,清华大学发布了《…

hive 中的各种参数,一般在哪里修改

在实际工作中,Hive 参数的配置和修改可以通过多种方式进行,具体取决于使用场景和需求。以下是常见的参数配置方式和适用场景: 1. 在 Hive CLI 或 Beeline 中临时设置 适用场景: 临时修改参数,仅对当前会话生效。 使用方法: 在 Hi…

Opencv之掩码实现图片抠图

掩码实现图片抠图 目录 掩码实现图片抠图1 掩码1.1 概念1.2 创建掩码1.3抠图思路 2 代码测试 1 掩码 1.1 概念 掩码(Mask)是一种用于指定图像处理操作区域的工具。掩码通常是一个与图像尺寸相同的二值图像,其中像素值为0表示不处理&#xff…

QT编程之JSON处理

一、核心类库及功能 Qt 提供了一套完整的 JSON 处理类库(位于 QtCore 模块),支持解析和生成 JSON 数据: ‌QJsonDocument‌:表示完整的 JSON 文档,支持从 QJsonObject 或 QJsonArray 初始化‌。‌QJsonOb…

在虚拟环境里面配置Linux系统

Linux系统有很多版本,常用的有Ubantu乌班图,和CentOS 不同的版本在使用的时候,有部分执行方式的不同 安装的流程都一样 首先,想要安装Ubantu,要去它的官网,找下载连接,然后下载iso后缀的安装…

CentOS7下安装MongoDB

步骤 1:创建 MongoDB Yum 仓库文件 你需要创建一个 MongoDB 的 Yum 仓库配置文件,以便从官方源下载 MongoDB。打开终端并使用以下命令创建并编辑该文件: sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo 在打开的文件中,输入以下…

机器视觉工程师如何学习C#通讯

建议大家可以提前测试,真实模拟现场的情况,或者采用虚拟串口,虚拟网口频繁测试通讯的稳定性,以后有现场需要,可以快速布局到现场。 机器视觉工程师学习C#通讯协议需要结合工业场景需求,掌握基础协议原理、常…

40.动态规划13

回文子串 class Solution { public:int countSubstrings(string s) {int ns.size();vector<vector<int>> dp(n,vector<int>(n,0));int res0;for(int i0;i<n;i){for(int ji;j>0;j--){if(ij){dp[i][j]1;res;}else{if(s[i]s[j]){if(abs(i-j)<2){dp[i]…

基于ssm的一家运动鞋店的产品推广网站的设计

项目简介 一家运动鞋店实现了以下功能&#xff1a; 实现了用户在线选择试题并完成答题&#xff0c;在线查看考核分数。管理员管理收货地址管理、购物车管理、字典管理、留言版管理、新闻信息管理、产品管理、产品收藏管理、产品评价管理、产品订单管理、单页数据管理、用户管…

3.14学习总结

今天完成了几道关于二叉树的算法题 关于二叉树的最小最大深度和数据流中的第k大元素&#xff0c;用到优先队列&#xff0c;学习了有关java的基础知识&#xff0c;学习了双指针法。