关于K8s的Pod的详解(一)

news/2024/5/9 14:08:31

关于K8s的Pod的详解(一)

    • Pod和API server的通信
    • 加快Pod启动
    • 更改Pod的资源
    • Pod 的持久卷的单个访问模式
    • Pod 拓扑分布约束
    • Pod 拓扑分布中的最小域数

Pod 作为k8s创建,调度,管理的基本单位。由上级的Controller对Node上安装的Kubelet发送指令对Pod进行管理,因此我们需要详细了解关于Pod。

其中最为基本的操作就是Pod的创建,删除,调度,查看!

对于Pod的创建,相关联的就有,对Pod的资源分配,资源限制;对Pod的创建调度,基于Pod的高可用性,将Pod调度到不同数据中心的Node节点;以及对Pod应用的数据存储

image-20230716155927766

Pod和API server的通信

节点与控制面板通信:

所有从节点(或运行于其上的 Pod)发出的 API 调用都终止于 API 服务器。Kubernetes 采用的是中心辐射型(Hub-and-Spoke)API 模式。

想要连接到 API 服务器的 Pod 可以使用服务账号安全地进行连接。 当 Pod 被实例化时,Kubernetes 自动把公共根证书和一个有效的持有者令牌注入到 Pod 里。 kubernetes 服务(位于 default 名字空间中)配置了一个虚拟 IP 地址, 用于(通过 kube-proxy)转发请求到 API 服务器的 HTTPS 末端。

从控制面(API 服务器)到节点有两种主要的通信路径

1.API 服务器到集群中每个节点上运行的 kubelet 进程

2.从 API 服务器通过它的代理功能连接到任何节点、Pod 或者服务。

API 服务器到 kubelet

从 API 服务器到 kubelet 的连接用于:

  • 获取 Pod 日志。
  • 挂接(通过 kubectl)到运行中的 Pod。
  • 提供 kubelet 的端口转发功能。

API 服务器到节点、Pod 和服务

从 API 服务器到节点、Pod 或服务的连接默认为纯 HTTP 方式,因此既没有认证,也没有加密。

这些连接可通过给 API URL 中的节点、Pod 或服务名称添加前缀 https: 来运行在安全的 HTTPS 连接上。 不过这些连接既不会验证 HTTPS 末端提供的证书,也不会提供客户端证书

因此,虽然连接是加密的,仍无法提供任何完整性保证。 这些连接 目前还不能安全地 在非受信网络或公共网络上运行。

SSH 隧道

Kubernetes 支持使用 SSH 隧道来保护从控制面到节点的通信路径。 在这种配置下,API 服务器建立一个到集群中各节点的 SSH 隧道(连接到在 22 端口监听的 SSH 服务器) 并通过这个隧道传输所有到 kubelet、节点、Pod 或服务的请求。 这一隧道保证通信不会被暴露到集群节点所运行的网络之外。

加快Pod启动

k8s 1.27版本加入的特性

镜像拉取默认是串行作业,kubelet 一次只发送一个镜像拉取请求, 其他的镜像需要等待正在处理的拉取请求完成。

可以启用镜像拉取的并行作业设置

serializeImagePulls 默认为true,设置为false	# kubelet 中配置

为防止因拉取镜像导致的服务器过载,可设置并行拉取数量

maxParallelImagePulls  n 	# kubelet 中配置

提高了 kubelet 默认 API 每秒查询限值

在多个Pod创建时,需要大带宽访问 kube-apiserver。如在突然扩缩情况,kubelet 需要同步 Pod 状态并准备 ConfigMap、Secret 或卷。

v1.27之前版本,kubeAPIQPS 的默认值为 5,kubeAPIBurst 的默认值为 10;以前在具有 50 个以上 Pod 的节点中,我们经常在 Pod 启动期间在 kubelet 上遇到 volume mount timeout

v1.27版本将kubeAPIQPS的默认值提高到了 50 kubeAPIBurst` 的默认值提高到了100

事件驱动的容器状态更新

Kubernetes 为 kubelet 提供了2种方法来检测 Pod 的生命周期事件

基于事件的 机制已进阶至 Beta,但默认被禁用

必要时提高 Pod 资源限值

某些 Pod 在启动过程中可能会耗用大量的 CPU 或内存。 如果 CPU 限值较低,则可能会显著降低 Pod 启动过程的速度。

Kubernetes v1.22 引入了一个名为 MemoryQoS 的特性门控

memoryThrottlingFactor		# 默认值最初为 0.8,Kubernetes v1.27 中更改为 0.9

减小该因子(将为容器 cgroup 设置较低的上限)会增加了回收压力。 提高此因子将减少回收压力。

更改Pod的资源

如果 Pod 设置了 CPU 或内存资源,更改资源值会导致 Pod 重新启动。这对于运行的负载来说是一个破坏性的操作。

v1.27 中,alpha 特性,允许用户调整分配给 Pod 的 CPU 和内存资源大小,而无需重新启动容器。

这也意味着 Pod 定义中的 resource 字段不能再被视为 Pod 实际资源的指标。监控程序必须 查看 Pod 状态中的新字段来获取实际资源状况。

用户可以控制在资 源调整时容器的行为:

restartPolicy

Pod 状态中添加了新字段 resize:显示上次请求待处理的调整状态

resize的值:

  • Proposed:此值表示请求调整已被确认,并且请求已被验证和记录。
  • InProgress:此值表示节点已接受调整请求,并正在将其应用于 Pod 的容器。
  • Deferred:此值意味着在此时无法批准请求的调整,节点将继续重试。 当其他 Pod 退出并释放节点资源时,调整可能会被真正实施。
  • Infeasible:此值是一种信号,表示节点无法承接所请求的调整值。 如果所请求的调整超过节点可分配给 Pod 的最大资源,则可能会发生这种情况。

应用场景

  • 正在运行的 Pod 资源限制或者请求过多或过少。
  • 一些过度预配资源的 Pod 调度到某个节点,会导致资源利用率较低的集群上因为 CPU 或内存不足而无法调度 Pod。
  • 驱逐某些需要较多资源的有状态 Pod 是一项成本较高或破坏性的操作。 这种场景下,缩小节点中的其他优先级较低的 Pod 的资源,或者移走这些 Pod 的成本更低。

使用特性功能,需要配合启用“特性门控”-InPlacePodVerticalScaling

root@vbuild:~/go/src/k8s.io/kubernetes# FEATURE_GATES=InPlacePodVerticalScaling=true ./hack/local-up-cluster.sh

Pod 的持久卷的单个访问模式

k8s v1.22 中引入的一种新的访问模式, 适用于 PersistentVolume(PVs) 和 PersistentVolumeClaim(PVCs)

什么是持久卷的单个访问模式(ReadWriteOncePod)?

此访问模式使你能够将存储卷访问限制在集群中的单个 Pod 上,确保一次只有一个 Pod 可以写入存储卷。

应用场景:对需要单一写入者访问存储的有状态工作负载。

在 v1.27 及更高版本的集群中将默认启用该功能

如何开始使用 ReadWriteOncePod?

ReadWriteOncePod 仅支持 CSI 卷。 在使用此功能之前,你需要将以下 CSI Sidecars更新至以下版本或更高版本:

  • csi-provisioner:v3.0.0+
  • csi-attacher:v3.3.0+
  • csi-resizer:v1.3.0+

要开始使用 ReadWriteOncePod,请创建具有 ReadWriteOncePod 访问模式的 PVC:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: single-writer-only
spec:accessModes:- ReadWriteOncePod #仅允许一个容器访问且独占写入权限。resources:requests:storage: 1Gi

Pod 拓扑分布约束

为实现高可用并提升资源利用率,可以使用 拓扑分布约束(Topology Spread Constraints) 来控制 Pod 在集群内故障域之间的分布, 例如区域(Region)、可用区(Zone)、节点和其他用户自定义拓扑域

假设你有一个最多包含二十个节点的集群,你想要运行一个自动扩缩的 工作负载(k8s上运行的应用程序),请问要使用多少个副本?

答案可能是最少 2 个 Pod,最多 15 个 Pod。

考虑一个问题:当只有2个Pod时,如果这两个Pod正好都生成在一个Node节点上,如果该Node节点出现宕机现象,则产生单点故障问题!

考虑另一个问题:假设你有 3 个节点,每个节点运行 5 个 Pod。这些节点有足够的容量能够运行许多副本; 但与这个工作负载互动的客户端分散在三个不同的数据中心(或基础设施可用区),网络延迟可能会高于自己的预期, 由于在不同的可用区之间发送网络流量会产生一些网络成本

通过 topologySpreadConstraints字段进行配置

---
apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:# 配置一个拓扑分布约束topologySpreadConstraints:- maxSkew: <integer>minDomains: <integer> # 可选;自从 v1.25 开始成为 BetatopologyKey: <string>whenUnsatisfiable: <string>labelSelector: <object>matchLabelKeys: <list> # 可选;自从 v1.27 开始成为 BetanodeAffinityPolicy: [Honor|Ignore] # 可选;自从 v1.26 开始成为 BetanodeTaintsPolicy: [Honor|Ignore] # 可选;自从 v1.26 开始成为 Beta### 其他 Pod 字段置于此处

更多信息可以通过kubectl explain Pod.spec.topologySpreadConstraints命令获取,或者参阅 Pod API 调度

部分字段含义

  • maxSkew 描述这些 Pod 可能被均匀分布的程度。你必须指定此字段且该数值必须大于零。 其语义将随着 whenUnsatisfiable 的值发生变化:
    • 如果你选择 whenUnsatisfiable: DoNotSchedule,则 maxSkew 定义目标拓扑中匹配 Pod 的数量与 全局最小值(符合条件的域中匹配的最小 Pod 数量,如果符合条件的域数量小于 MinDomains 则为零) 之间的最大允许差值。例如,如果你有 3 个可用区,分别有 2、2 和 1 个匹配的 Pod,则 MaxSkew 设为 1, 且全局最小值为 1。
    • 如果你选择 whenUnsatisfiable: ScheduleAnyway,则该调度器会更为偏向能够降低偏差值的拓扑域。
  • minDomains 表示符合条件的域的最小数量。此字段是可选的。域是拓扑的一个特定实例。 符合条件的域是其节点与节点选择器匹配的域。

    说明:

    minDomains 字段是一个 Beta 字段,在 1.25 中默认被禁用。 你可以通过启用 MinDomainsInPodTopologySpread 特性门控来启用该字段。

    • 指定的 minDomains 值必须大于 0。你可以结合 whenUnsatisfiable: DoNotSchedule 仅指定 minDomains
    • 当符合条件的、拓扑键匹配的域的数量小于 minDomains 时,拓扑分布将“全局最小值”(global minimum)设为 0, 然后进行 skew 计算。“全局最小值” 是一个符合条件的域中匹配 Pod 的最小数量, 如果符合条件的域的数量小于 minDomains,则全局最小值为零。
    • 当符合条件的拓扑键匹配域的个数等于或大于 minDomains 时,该值对调度没有影响。
    • 如果你未指定 minDomains,则约束行为类似于 minDomains 等于 1。
  • topologyKey 是节点标签的键。如果节点使用此键标记并且具有相同的标签值, 则将这些节点视为处于同一拓扑域中。我们将拓扑域中(即键值对)的每个实例称为一个域。 调度器将尝试在每个拓扑域中放置数量均衡的 Pod。 另外,我们将符合条件的域定义为其节点满足 nodeAffinityPolicy 和 nodeTaintsPolicy 要求的域。
  • whenUnsatisfiable 指示如果 Pod 不满足分布约束时如何处理:
    • DoNotSchedule(默认)告诉调度器不要调度。
    • ScheduleAnyway 告诉调度器仍然继续调度,只是根据如何能将偏差最小化来对节点进行排序。
  • labelSelector 用于查找匹配的 Pod。匹配此标签的 Pod 将被统计,以确定相应拓扑域中 Pod 的数量。 有关详细信息,请参考标签选择算符。
  • matchLabelKeys 是一个 Pod 标签键的列表,用于选择需要计算分布方式的 Pod 集合。 这些键用于从 Pod 标签中查找值,这些键值标签与 labelSelector 进行逻辑与运算,以选择一组已有的 Pod, 通过这些 Pod 计算新来 Pod 的分布方式。matchLabelKeyslabelSelector 中禁止存在相同的键。 未设置 labelSelector 时无法设置 matchLabelKeys。Pod 标签中不存在的键将被忽略。 null 或空列表意味着仅与 labelSelector 匹配。

借助 matchLabelKeys,你无需在变更 Pod 修订版本时更新 pod.spec。 控制器或 Operator 只需要将不同修订版的标签键设为不同的值。 调度器将根据 matchLabelKeys 自动确定取值。例如,如果你正在配置一个 Deployment, 则你可以使用由 Deployment 控制器自动添加的、以 pod-template-hash 为键的标签来区分同一个 Deployment 的不同修订版。

 topologySpreadConstraints:- maxSkew: 1topologyKey: kubernetes.io/hostnamewhenUnsatisfiable: DoNotSchedulelabelSelector:matchLabels:app: foomatchLabelKeys:- pod-template-hash

说明:

matchLabelKeys 字段是 1.27 中默认启用的一个 Beta 级别字段。 你可以通过禁用 MatchLabelKeysInPodTopologySpread 特性门控来禁用此字段。

  • nodeAffinityPolicy 表示我们在计算 Pod 拓扑分布偏差时将如何处理 Pod 的 nodeAffinity/nodeSelector。 选项为:

    • Honor:只有与 nodeAffinity/nodeSelector 匹配的节点才会包括到计算中。
    • Ignore:nodeAffinity/nodeSelector 被忽略。所有节点均包括到计算中。

    如果此值为 nil,此行为等同于 Honor 策略。

说明:

nodeAffinityPolicy 是 1.26 中默认启用的一个 Beta 级别字段。 你可以通过禁用 NodeInclusionPolicyInPodTopologySpread 特性门控来禁用此字段。

  • nodeTaintsPolicy 表示我们在计算 Pod 拓扑分布偏差时将如何处理节点污点。选项为:

    • Honor:包括不带污点的节点以及污点被新 Pod 所容忍的节点。
    • Ignore:节点污点被忽略。包括所有节点。

    如果此值为 null,此行为等同于 Ignore 策略。

说明:

nodeTaintsPolicy 是一个 Beta 级别字段,在 1.26 版本默认启用。 你可以通过禁用 NodeInclusionPolicyInPodTopologySpread 特性门控来禁用此字段。

Pod 拓扑分布中的最小域数

k8s v1.25 在 topologySpreadConstraints 中引入了两个新字段 nodeAffinityPolicynodeTaintPolicy 来定义节点

该特性在 v1.25 中作为 Alpha 引入。默认被禁用,因此如果要在 v1.25 中使用此特性, 则必须显式启用特性门控 NodeInclusionPolicyInPodTopologySpread。 在接下来的 v1.26 版本中,相关特性进阶至 Beta 并默认被启用。

apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:# 配置拓扑分布约束topologySpreadConstraints:- maxSkew: <integer># ...nodeAffinityPolicy: [Honor|Ignore]nodeTaintsPolicy: [Honor|Ignore]# 在此处添加其他 Pod 字段

nodeAffinityPolicy 字段指示 Kubernetes 如何处理 Pod 的 nodeAffinitynodeSelector 以计算 Pod 拓扑分布。

如果是 Honor,则 kube-scheduler 在计算分布偏差时会过滤掉不匹配 nodeAffinity/nodeSelector 的节点。

如果是 Ignore,则会包括所有节点,不会管它们是否与 Pod 的 nodeAffinity/nodeSelector 匹配。

为了向后兼容,nodeAffinityPolicy 默认为 Honor

nodeTaintsPolicy 字段定义 Kubernetes 计算 Pod 拓扑分布时如何对待节点污点。

如果是 Honor,则只有配置了污点的节点上的传入 Pod 带有容忍标签时该节点才会被包括在分布偏差的计算中。

如果是 Ignore,则在计算分布偏差时 kube-scheduler 根本不会考虑节点污点, 因此带有未容忍污点的 Pod 的节点也会被包括进去。

为了向后兼容,nodeTaintsPolicy 默认为 Ignore

Kubernetes v1.25 引入了一个名为 matchLabelKeys 的新字段到 topologySpreadConstraints 中。matchLabelKeys 是一个 Pod 标签键列表, 用于选择计算分布方式的 Pod。这些键用于查找 Pod 被调度时的标签值, 这些键值标签与 labelSelector 进行逻辑与运算,为新增 Pod 计算分布方式选择现有 Pod 组。

借助 matchLabelKeys,你无需在修订版变化时更新 pod.spec。 控制器或 Operator 管理滚动升级时只需针对不同修订版为相同的标签键设置不同的值即可。 调度程序将基于 matchLabelKeys 自动完成赋值。例如,如果你正配置 Deployment, 则可以使用由 Deployment 控制器自动添加的 pod-template-hash 的标签键来区分单个 Deployment 中的不同修订版。

topologySpreadConstraints:- maxSkew: 1topologyKey: kubernetes.io/hostnamewhenUnsatisfiable: DoNotSchedulelabelSelector:matchLabels:app: foomatchLabelKeys:- pod-template-hash

参考:Kubernetes 1.27:关于加快 Pod 启动的进展

Kubernetes 1.27: 原地调整 Pod 资源 (alpha)

Kubernetes 1.27:持久卷的单个 Pod 访问模式升级到 Beta

Kubernetes 1.27:更多精细粒度的 Pod 拓扑分布策略进阶至 Beta

Pod 拓扑分布约束


http://www.mrgr.cn/p/86060706

相关文章

云安全攻防(二)之 云原生安全

云原生安全 什么是云原生安全&#xff1f;云原生安全包含两层含义&#xff1a;面向云原生环境的安全和具有云原生特征的安全 面向云原生环境的安全 面向云原生环境的安全的目标是防护云原生环境中的基础设施、编排系统和微服务系统的安全。这类安全机制不一定会具有云原生的…

基于SaaS模式的Java基层卫生健康云HIS系统源码【运维管理+运营管理+综合监管】

云HIS综合管理平台 一、模板管理 模板分为两种&#xff1a;病历模板和报表模板。模板管理是运营管理的核心组成部分&#xff0c;是基层卫生健康云中各医疗机构定制电子病历和报表的地方&#xff0c;各医疗机构可根据自身特点特色定制电子病历和报表&#xff0c;制作的电子病历…

Web-1-网站工作流程介绍

我们学习web开发&#xff0c;首先要知道什么是Web&#xff1f; Web: 全球广域网&#xff0c;也称为万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站 比如我展示的这京东&#xff0c;淘宝唯品会都叫做网站&#xff0c;那么现在大家想一下&#xff0c;你还知道什…

论文笔记:Adjusting for Autocorrelated Errors in Neural Networks for Time Series

2021 NIPS 原来的时间序列预测任务是根据预测论文提出用一阶自回归误差预测 一阶差分&#xff0c;类似于ResNet的残差思路&#xff1f;记为pred&#xff0c;最终的预测结果

解决PicGo上传图片失败错误信息和上传图片失败包404错误以及Typora怎么一键导入本地图片到PicGo

&#x1f600;前言 解决PicGo上传图片失败错误信息和上传图片失败包404错误以及Typora怎么一键导入本地图片到PicGo &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#x…

beego通过gorm访问mysql数据库

一、下载golang 二、解压下载包到C盘 三、配置golang系统环境变量 四、进入新建的工作目录C:\project下载并安装beego 五、将新生成的bee.exe所在的路径c:\project\bin加入到系统变量path里面 六、下载并安装mysql 例如在上图中&#xff0c; 选“No thanks,just start my down…

【unity之IMGUI实践】单例模式管理数据存储【二】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

自动化运维工具—Ansible概述

Ansible是什么&#xff1f; Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、…

无涯教程-jQuery - Dropable移动函数

Drop-able 功能可与JqueryUI中的交互一起使用。此功能可在任何DOM元素上启用可放置功能。 Drop able - 语法 $( "#droppable" ).droppable(); Drop able - 示例 以下是一个简单的示例&#xff0c;显示了drop-able的用法- <html><head><title>…

爬虫小白-如何调试列表页链接与详情链接不一样并三种方式js逆向解决AES-ECB

目录 一、网站分析二、定位监听三、熟悉AES-ECB四、调试分析五、node运行js六、Python执行js 一、网站分析 三年前的案例&#xff0c;我的原始文章网站 &#xff0c;如图我们直接点击标题进入到详情页&#xff0c;链接会发生跳转&#xff0c;且与我们在详情看到的链接&#xf…

左神算法之中级提升班(8)

目录 【案例1】 【题目描述】 【思路解析】 【代码实现】 【案例2】 【题目描述】 【思路解析】 【代码实现】 【案例3】 【题目描述】 【思路解析】 【案例4】 【题目描述】 【思路解析】 【代码实现】 【案例5】 【题目描述】 【子序列概念】 【思路解析1 经典…

[NLP]LLaMA与LLamMA2解读

摘要 Meta最近提出了LLaMA(开放和高效的基础语言模型)模型参数包括从7B到65B等多个版本。最值得注意的是&#xff0c;LLaMA-13B的性能优于GPT-3&#xff0c;而体积却小了10倍以上&#xff0c;LLaMA-65B与Chinchilla-70B和PaLM-540B具有竞争性。 一、引言 一般而言&#xff0…

020 - STM32学习笔记 - Fatfs文件系统(二) - 移植与测试

020 - STM32学习笔记 - Fatfs文件系统&#xff08;二&#xff09; - 移植与测试 上节学习了FatFs文件系统的相关知识&#xff0c;这节内容继续学习在STM32上如何移植FatFs文件系统&#xff0c;并且实现文件的创建、读、写与删除等功能。各位看官觉得还行的话点点赞&#xff0c…

Python时间处理:探索time模块

日常工作中&#xff0c;经常涉及到一些时间的转换操作&#xff0c;比如某些业务针对时间的操作要转成不同的时区&#xff0c;有的要转换格式入库&#xff0c;有的需要跟时间对比等等&#xff0c;接下来我们一起来看一下python里面是怎么去处理时间的。 time模块简单介绍 Python…

几百本常用计算机开发语言电子书链接

GitHub - XiangLinPro/IT_book: 本项目收藏这些年来看过或者听过的一些不错的常用的上千本书籍&#xff0c;没准你想找的书就在这里呢&#xff0c;包含了互联网行业大多数书籍和面试经验题目等等。有人工智能系列&#xff08;常用深度学习框架TensorFlow、pytorch、keras。NLP、…

[STL]详解list模拟实现

[STL]list模拟实现 文章目录 [STL]list模拟实现1. 整体结构总览2. 成员变量解析3. 默认成员函数构造函数1迭代器区间构造函数拷贝构造函数赋值运算符重载析构函数 4. 迭代器及相关函数迭代器整体结构总览迭代器的模拟实现begin函数和end函数begin函数和end函数const版本 5. 数据…

心法利器[93] | 谈校招:技术面

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会&#xff0c;与大家一起成长。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2022年新一版的文章合集已经发布&#xff0c;累计已经60w字了&#xff0c;获取方式看这里&…

eda、gnm、anm究竟是个啥?

安装prody pip install prody -i https://pypi.tuna.tsinghua.edu.cn/simpleeda、anm、gnm eda(essential dynamics analysis) 另一个名字PCA(Principal Component Analysis) 或 NMA(Normal Mode Analysis)。 eda分析可以帮助人们理解生物大分子基本的运动模式和构象变化。…

【Linux】自动化构建工具-make/Makefile详解

前言 大家好吖&#xff0c;欢迎来到 YY 滴 Linux系列 &#xff0c;热烈欢迎&#xff01;本章主要内容面向接触过Linux的老铁&#xff0c;主要内容含 欢迎订阅 YY 滴Linux专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 订阅专栏阅读&#xff1a;YY的《…