Kubernetes控制平面组件:Kubelet 之 Static 静态 Pod
云原生学习路线导航页(持续更新中)
- kubernetes学习系列快捷链接
- Kubernetes架构原则和对象设计(一)
- Kubernetes架构原则和对象设计(二)
- Kubernetes架构原则和对象设计(三)
- Kubernetes控制平面组件:etcd(一)
- Kubernetes控制平面组件:etcd(二)
- Kubernetes控制平面组件:API Server详解(一)
- Kubernetes控制平面组件:API Server详解(二)
- Kubernetes控制平面组件:调度器Scheduler(一)
- Kubernetes控制平面组件:调度器Scheduler(二)
- Kubernetes控制平面组件:Controller Manager 之 内置Controller详解
- Kubernetes控制平面组件:Controller Manager 之 NamespaceController 全方位讲解
本文是 kubernetes 控制面组件 kubelet 系列文章,本篇主要讲解 静态static pod 相关内容,包括static pod概念、特性、只受kubelet管理的实现原理、与普通pod的对比、典型应用场景、注意事项等,最后还演示了如何创建一个static pod
- 希望大家多多 点赞 关注 评论 收藏,作者会更有动力继续编写技术文章
1.静态 Pod 是什么?
- 静态 Pod 是由 kubelet 直接管理 的 Pod,其定义文件存放在节点本地的特定目录中(如
/etc/kubernetes/manifests
)。 - kubelet 监控该目录,并根据其中的 YAML 文件自动创建、更新或删除 Pod。
- 静态 Pod 不经过 Kubernetes API Server 调度,而是由 kubelet 自主管理,通常用于部署集群核心组件(如
kube-apiserver
、kube-scheduler
等)。
2.静态 Pod 的核心特性
2.1.独立于控制平面
- 不依赖 API Server:即使 Kubernetes 控制平面(如 API Server)未运行,kubelet 仍能通过静态 Pod 启动关键组件。
- 本地配置管理:Pod 的定义文件直接存储在节点上,修改后由 kubelet 自动同步。
2.2.镜像 Pod(Mirror Pod)
- API Server 可见性:kubelet 会为每个静态 Pod 在 API Server 中创建一个对应的 镜像 Pod,但其状态是只读的。
- static pod为什么只受kubelet的管理?
- kubelet会为每一个static pod,添加如下标识,使其成为一个镜像 mirror Pod
- 镜像pod可以让apiserver只读到pod的状态,但是当apiserver尝试更新 mirror pod时,会被kubelet立刻改回去
metadata:annotations:kubernetes.io/config.source: file # 标识来源为本地文件kubernetes.io/config.hash: <hash> # 文件内容哈希值kubernetes.io/config.mirror: <hash> # 标识为镜像 Pod
2.3.高可用性
- 自举能力:在集群初始化阶段,静态 Pod 用于启动控制平面组件(如 API Server),从而完成集群自举。
- 故障恢复:若 kubelet 重启,会重新加载静态 Pod 配置并恢复容器。
3.静态 Pod 的配置与管理
3.1.配置目录
- 默认目录:
/etc/kubernetes/manifests
(可通过 kubelet 参数--pod-manifest-path
修改)。# kubelet -h | grep pod-manifest-path--pod-manifest-path string Path to the directory containing static pod files to run, or the path to a single static pod file. Files starting with dots will be ignored. (DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)
- 文件格式:标准的 Pod YAML 文件(无需包含
apiVersion
或kind
,但 kubelet 会自动处理)。
3.2.操作流程
- 创建静态 Pod:
# 将 Pod 定义文件放入配置目录 sudo cp my-static-pod.yaml /etc/kubernetes/manifests/
- kubelet 自动检测:
- kubelet 监控目录变动,创建 Pod 并生成镜像 Pod。
- 查看运行状态:
# 查看本地运行的 Pod(需在节点上执行) crictl pods# 查看 API Server 中的镜像 Pod kubectl get pods -n <namespace>
3.3.更新与删除
- 更新:直接修改配置文件 → kubelet 自动重启 Pod。
- 删除:从配置目录中删除文件 → kubelet 终止 Pod 并删除镜像 Pod。
4.静态 Pod vs. 普通 Pod
特性 | 静态 Pod | 普通 Pod |
---|---|---|
管理方式 | kubelet 直接管理本地文件 | API Server 调度和管理 |
依赖项 | 无需 API Server | 依赖 API Server 和控制平面组件 |
配置变更 | 修改节点本地文件 | 通过 kubectl 或 API 调用 |
高可用性 | 适合关键组件(如控制平面) | 适合普通工作负载 |
可见性 | 通过镜像 Pod 在 API Server 中可见 | 直接通过 API Server 管理 |
5.静态 Pod 的典型应用场景
5.1.自举 Kubernetes 控制平面
- 场景:在集群初始化时,kubelet 通过静态 Pod 启动
kube-apiserver
、kube-controller-manager
、kube-scheduler
等组件。 - 优势:无需依赖已运行的 API Server,实现“鸡生蛋,蛋生鸡”的引导过程。
5.2.运行节点级关键服务
- 场景:部署日志收集器(如 Fluentd)、监控代理(如 Node Exporter)等需在每台节点运行的组件。
- 优势:避免依赖集群调度器,确保服务始终运行。
5.3.隔离关键组件
- 场景:在控制平面节点上,通过静态 Pod 运行 etcd,避免因 API Server 故障导致 etcd 不可用。
- 优势:组件独立于 Kubernetes 控制平面,提升稳定性。
6.注意事项与常见问题
6.1.配置文件权限
- 目录权限:确保 kubelet 有权限读取配置目录(通常为
root:root
,权限644
)。 - 文件格式:YAML 文件必须语法正确,否则 kubelet 会忽略或报错。
6.2.镜像 Pod 的管理
- 禁止直接操作:
不要通过kubectl delete
或kubectl edit
操作镜像 Pod,kubelet 会立即重建它们。 - 状态同步延迟:
若镜像 Pod 状态与实际 Pod 不一致,检查 kubelet 日志:journalctl -u kubelet | grep "SyncLoop"
6.3.与 DaemonSet 的区别
- DaemonSet:由 API Server 管理,确保每个节点运行一个 Pod 副本。
- 静态 Pod:由 kubelet 直接管理,无需 API Server 参与,适合更底层的组件。
6.4.常见错误
- Pod 无法启动:
- 检查 YAML 文件语法(如缩进错误)。
- 查看容器日志:
crictl logs <container-id>
。
- 镜像 Pod 未生成:
- 确认 kubelet 的
--pod-manifest-path
参数配置正确。 - 检查 kubelet 是否正常运行:
systemctl status kubelet
。
- 确认 kubelet 的
7.示例:创建一个静态 Pod
7.1.定义文件 nginx-static-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: static-nginxlabels:app: nginx
spec:containers:- name: nginximage: nginx:latestports:- containerPort: 80
7.2.部署到配置目录
sudo cp nginx-static-pod.yaml /etc/kubernetes/manifests/
7.3.验证运行状态
# 在节点上查看运行的 Pod
crictl pods# 在集群中查看镜像 Pod(名称格式为 static-nginx-<node-name>)
kubectl get pods --all-namespaces | grep static-nginx
8.总结
- 静态 Pod 是 kubelet 直接管理的特殊 Pod,适用于运行集群核心组件或节点级服务。
- 其通过本地配置文件实现独立于 API Server 的管理,结合镜像 Pod 机制在集群中可见。合理使用静态 Pod 可提升关键组件的可靠性和集群自举能力。
相关文章:
Kubernetes控制平面组件:Kubelet 之 Static 静态 Pod
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
Django 项目的 models 目录中,__init__.py 文件的作用
在 Django 项目的models/init.py文件中,这些导入语句的主要作用是将各个模型类从不同的模块中导入到models包的命名空间中。这样做有以下几个目的: 简化导入路径 当你需要在项目的其他地方使用这些模型时,可以直接从models包导入,…...
学习日志04 java
PTA上的练习复盘 java01 编程题作业感悟: 可以用ai指导自己怎么调试,但是不要把调代码这过程里面的精华交给ai,就是自己去修正错误不能让ai代劳!~~~ 1 scanner.close() Scanner *** new Scanner(System.in); ***.close(); …...
vue-pdf-embed预览PDF
一、vue-pdf-embed 链接:Yarn 1、安装插件 npm install vue-pdf-embed 2、文件中引入(分页效果已实现,样式请自行修改) <template><div class"download-pdf-preview" style"height: 450px; border:1…...
C++GO语言微服务之Dockerfile docker-compose
目录 01 01-知识点概述 02 02-dockerfile复习 03 03-环境变量ENV的使用 04 04-WORKDIR的使用 05 05-USER和ARG的使用 06 06-ONBUILD的使用 07 07-dockerfile的缓存相关的参数 08 08-dockerfile的编写 09 09-测试-没成功-好像是网不行 01 10-docker-compose介绍 02 11…...
【漫话机器学习系列】255.独立同分布(Independent and Identically Distributed,简称 IID)
深入理解独立同分布(IID):机器学习与统计学的基石 在机器学习、深度学习、统计建模等领域,我们经常会遇到一个重要假设:独立同分布(Independent and Identically Distributed,简称 IID…...
树莓派4 yolo 11l.pt性能优化后的版本
树莓派4 使用 Picamera2 拍摄图像,然后通过 YOLO11l.pt 进行目标检测,并在实时视频流中显示结果。但当前的代码在运行时可能会比较卡顿,主要原因包括: picam2.capture_array() 是一个较慢的操作;YOLO 推理可能耗时较长…...
AD22 快速定义PCB板框与DXF导入定义
自行定义板框 1. 初步评估:选中所有的器件,选中‘在矩形区域排列’ 将元件放好后,可以再将元件紧凑一下 2. 设置原点,并在下方选中机械一层 从原点出发,点击快捷键PL 画框线 3. 对线条长度取整,且最好是5…...
LInux系统文件与目录管理(二)
提示:第二部分对第一部分收尾 文章目录 常见的命令如下一、文件查看命令1. more命令2.less命令3.head命令4.tail命令5.nl命令(了解)6.创建目录命令7.创建文件命令>: 覆盖重定向>>: 追加重定向 8.touch命令9.echo命令10.文件或目录复…...
Redisson在业务处理中失败后的应对策略:保障分布式系统的可靠性
分布式系统中的数据一致性与高可用性一直是开发者面临的难题。作为Redis官方推荐的Java客户端,Redisson凭借其强大的分布式能力成为解决这些问题的利器。但在实际业务场景中,网络抖动、资源竞争、节点故障等问题可能导致操作失败,本文将深入探…...
windows下docker 运行 ros2humble arm64
目前要想运行arm版ros humble 目前最好的解决方案是使用qemu模拟。 1.拉取 ubuntu22.04 docker pull ubuntu:22.04 --platformarm642.安装小鱼ros2 humble wget http://fishros.com/install -O fishros && . fishros3.安装eqmu docker run --rm --privileged multia…...
表的增删改查 -- 2
目录 3、查询(R) 3.7、条件查询:where 3.8、分页查询:limit 3.9、查询总结 4、修改(U) 5、删除(D) 3、查询(R) 3.7、条件查询:where selec…...
Linux系统管理与编程20:Apache
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 做好网络和yum配置,用前面dns规划的www的IP进行。 #!/bin/bash #----------------------------------------------------------- # File Name: myWeb.sh # Version: 1.0 # …...
dfs 第一次加训 详解 下
目录 P1706 全排列问题 思路 B3618 寻找团伙 思路 B3621 枚举元组 思路 B3622 枚举子集(递归实现指数型枚举) 思路 B3623 枚举排列(递归实现排列型枚举) B3625 迷宫寻路 思路 P6183 [USACO10MAR] The Rock Game S 总结…...
vue2/3 中使用 @vue-office/docx 在网页中预览(docx、excel、pdf)文件
1. 安装依赖: #docx文档预览组件npm install vue-office/docx vue-demi0.14.6#excel文档预览组件npm install vue-office/excel vue-demi0.14.6#pdf文档预览组件npm install vue-office/pdf vue-demi0.14.6 vue2.6版本或以下还需要额外安装 vue/composition-api …...
Excel表的导入与导出
Excel表的导入与导出 根据excel表来建立所需的数据库表格 <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.10.3</version></dependency><dependency><groupId>cn.hutool&…...
Redis 中常见的数据类型有哪些?
Redis 常见的数据类型包括 5 种基础类型(String、Hash、List、Set、Zset)和 3 种特殊类型(HyperLogLog、Bitmap、Geospatial)。以下是详细说明: 一、5 种基础数据类型 1. 字符串(String) 特点…...
消息队列如何保证消息可靠性(kafka以及RabbitMQ)
目录 RabbitMQ保证消息可靠性 生产者丢失消息 MQ丢失消息 消费端丢失了数据 Kakfa的消息可靠性 生产者的消息可靠性 Kakfa的消息可靠性 消费者的消息可靠性 RabbitMQ保证消息可靠性 生产者丢失消息 1.事务消息保证 生产者在发送消息之前,开启事务消息随后生…...
基于STM32、HAL库的BMP390L气压传感器 驱动程序设计
一、简介: BMP390L 是 Bosch Sensortec 生产的一款高精度气压传感器,专为需要精确测量气压和海拔高度的应用场景设计。BMP390L 具有更低的功耗、更高的精度和更快的响应速度。 二、硬件接口: BMP390L 引脚STM32L4XX 引脚说明VDD3.3V电源GNDGND地SCLPB6 (I2C1 SCL)I2C 时钟线…...
QMK键盘固件中LED锁定指示灯的配置与使用详解(实操部分+拓展)
QMK键盘固件中LED锁定指示灯的配置与使用详解 大家好!今天就跟大家一起探索QMK固件中LED锁定指示灯的配置与使用。无论你是键盘DIY新手还是老司机,相信这篇教程都能帮你解锁新技能! 一、基础配置:定义LED引脚 在QMK固件中配置LED锁定指示灯非常简单,只需在config.h文件…...
【日撸 Java 三百行】Day 12(顺序表(二))
目录 Day 12:顺序表(二) 一、顺序表的方法 1. 顺序查找 拓展:顺序查找中的哨兵思想 2. 插入 3. 删除 二、代码及测试 拓展: 小结 Day 12:顺序表(二) Task: 今天…...
Python爬虫实战:研究ajax异步渲染加密
一、引言 在当今数字化时代,数据已成为推动各行业发展的核心驱动力。网络爬虫作为一种高效的数据采集工具,能够从互联网上自动获取大量有价值的信息。然而,随着 Web 技术的不断发展,越来越多的网站采用了 AJAX(Asynchronous JavaScript and XML)异步渲染技术来提升用户体…...
Golang企业级商城高并发微服务实战
Golang企业级商城高并发微服务实战包含内容介绍: 从零开始讲了百万级单体高并发架构、千万级微服务架构,其中包含Rpc实现微服务、微服务的跨语言调用jsonrpc和protobuf、protobuf的安装、protobuf高级语法、protobuf结合Grpc实现微服务实战、微服务服务…...
从经典力扣题发掘DFS与记忆化搜索的本质 -从矩阵最长递增路径入手 一步步探究dfs思维优化与编程深度思考
1引子: DFS和递归法的一道经典例题矩阵最长递增子序列这个题写完之后脑袋产生了许多突发奇想: 1 第一个堆栈代码段这些底层C语言内部管理的工具它是怎么进行内存分配的?能不能深究? 2 第二个这个DFS和计划数组存储的思路到底抽象…...
我开源了一个免费在线工具!UIED Tools
UIED Tools - 免费在线工具集合 最近更新:修改了文档说明,优化了项目结构介绍 这是设计师转开发的第一个开源项目,bug和代码规范可能有些欠缺。 这是一个功能丰富的免费在线工具集合网站,集成了多种实用工具,包括 AI …...
geoserver发布arcgis瓦片地图服务(最新版本)
第一步:下载geoserver服务,进入bin目录启动 需要提前安装好JDK环境,1.8及以上版本 安装完成,页面访问端口,进入控制台界面,默认用户名密码admin/geoserver 第二步:下载地图 破解版全能电子地图下载器&…...
RN 鸿蒙混合开发实践(踩坑)
#三方框架# #React Native # 1 。环境配置; 安装 DevEco 开发工具; Node 版本16; hdc环境配置 hdc 是 OpenHarmony 为开发人员提供的用于调试的命令行工具,鸿蒙 React Native 工程使用 hdc 进行真机调试。hdc 工具通过 OpenHa…...
2025年阿里云ACP大数据分析师认证模拟试题(附答案解析)
这篇文章的内容是阿里云ACP大数据分析师认证考试的模拟试题。 所有模拟试题由AI自动生成,主要为了练习和巩固知识,并非所谓的 “题库”,考试中如果出现同样试题那真是纯属巧合。 1、ABC公司现有大量的图片和视频信息,以下哪种产…...
go语言实现IP归属地查询
效果: 实现代码main.go package mainimport ("encoding/json""fmt""io/ioutil""net/http""os" )type AreaData struct {Continent string json:"continent"Country string json:"country"ZipCode …...
Qt中解决UI线程阻塞导致弹窗无法显示的两种方法
在Qt应用程序开发中,我们经常会遇到这样的问题:当执行一个耗时操作时,整个界面会卡住,无法响应任何用户操作,甚至连一个简单的提示弹窗都无法正常显示。本文将介绍两种解决这个问题的方法,并通过完整的代码示例进行说明。 问题描述 先来看一个常见的错误示例: #inclu…...
位运算题目:黑板异或游戏
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:黑板异或游戏 出处:810. 黑板异或游戏 难度 8 级 题目描述 要求 给定一个整数数组 nums \texttt{nums} nums,表示写在黑板…...
LegoGPT,卡内基梅隆大学推出的乐高积木设计模型
LegoGPT 是由卡内基梅隆大学开发的一款创新性乐高积木设计模型,能够根据用户的文本提示生成结构稳固、可组装的乐高模型。该模型基于自回归语言模型和大规模乐高设计数据集进行训练,用户只需输入简单的文字描述,LegoGPT 就能逐步构建出物理稳…...
深度 |国产操作系统“破茧而出”:鸿蒙电脑填补自主生态空白
真心为国内能有像华为这样的技术型公司而自豪,一步步突围技术封锁。从这篇信息,可以给软件从业者一个启示:鸿蒙生态将是一个新的机会,值得好好把握。 鸿蒙电脑正成为中国电子信息技术新坐标。 超10亿鸿蒙生态设备、2800家鸿蒙智…...
【Python】Python常用数据类型判断方法详解
在Python编程中,准确判断数据类型是处理逻辑分支、类型转换和异常处理的基础。本文结合核心方法与实践场景,系统介绍type()、isinstance()等常用判断方式,并分析其适用性与最佳实践。 一、直接类型判断方法 type()函数 • 功能:返回对象的精确类型,适用于简单类型判断。 •…...
【美国将取消对能源之星支持 严重影响AI服务器】
1992年美国政府在共和党执政期间推出了影响深远的“能源之星”计划(Energy Star),很多人可能并不知道能源执行计划,但这个蓝色星星标签估计大多数人都不会陌生。能源之星计划从推出以来不止得到各类消费电子制造商认可,…...
《 C++ 点滴漫谈: 三十七 》左值?右值?完美转发?C++ 引用的真相超乎你想象!
摘要 本文全面系统地讲解了 C 中的引用机制,涵盖左值引用、右值引用、引用折叠、完美转发等核心概念,并深入探讨其底层实现原理及工程实践应用。通过详细的示例与对比,读者不仅能掌握引用的语法规则和使用技巧,还能理解引用在性能…...
【生产实践】Linux中/usr/bin、/usr/sbin与/usr/local的关系解析(2025年技术规范)
一、核心定位与功能划分 /usr/bin:用户级通用命令库 • 定位:存储系统预装的用户级可执行文件,这些命令通常由Linux发行版官方软件包管理器(如APT、YUM)安装,属于系统默认功能的一部分。 • 示例命令&#…...
数据可视化:用一张图讲好一个故事
在这个信息爆炸的时代,数据无处不在,但如何让复杂的数据变得通俗易懂?数据可视化就是一把神奇的钥匙。它不仅能将枯燥的数字转化为生动的图像,还能挖掘出数据背后隐藏的故事。然而,很多人对数据可视化的理解还停留在表…...
C++获取目录中所有图片路径的函数get_image_paths解析
本文将全面解析一个用于获取目录中图片路径的C函数get_image_paths,从基础语法到高级概念,涵盖C标准库、文件系统操作、异常处理等多个方面。 原始代码 std::vector<std::string> get_image_paths(const std::string& directory_path) {log_…...
物联网无线传感方向专业词汇解释
涡旋电磁波(VEMW):一种具有轨道角动量的电磁波,其特性在于能够在传播过程中携带额外的相位信息,从而增加通信系统的容量和灵活性。波前:波动传播过程中,同一时刻振动相位相同的所有点构成的几何曲面,代表波…...
【C语言指针超详解(五)】--回调函数,qsort函数的理解和使用,qsort函数的模拟实现
目录 一.回调函数 1.1--回调函数的概念 1.2--回调函数改造计算器程序 二.qsort函数的理解和使用 2.1--qsort函数的理解 2.2--使用qsort函数排序整型数据 2.3--使用qsort函数排序结构数据 三.qsort函数的模拟实现 🔥个人主页:草莓熊Lotso的个人主…...
【Linux网络】————HTTP协议详解
作者主页: 作者主页 本篇博客专栏:Linux 创作时间 :2025年5月11日 1. HTTP 协议介绍 基本介绍: http协议全称:超文本传输协议,适用于从万维网服务器传输超文本到本地的传送协议。HTTP是一种应用层协议…...
使用WinSW工具将exe注册为window服务
下载工具WinSW(工具在GitHub上 打不开就需要魔法VPN) 文件准备 将以下文件放在同一个目录(例如:WebSocketService 文件夹)中: WebScoket.exe WinSW-x64.exe WebScoketService.xml ← 服务配置文件 install_service.bat ←…...
远程命令执行RCE概述
远程命令执行RCE诞生于1997年,比SQL注入早1年,据说当时的程序员发现在网站里可以随意的删除网页,就像删除本地文件一样简单,但是这种场景相对不多,因此没有SQL注入广泛,早期的web攻击像现在的护网一样&…...
在 .NET 8 开发的WinForms 程序中展示程序版本号的几种方式
前言 欢迎关注dotnet研习社,今天我们讨论一个Winform开发中的一个常见的需求内容“关于程序的版本号显示”。 在 WinForms 桌面应用程序开发中,向用户显示当前程序的版本号是一个常见的需求,尤其是在产品发布、更新提示或技术支持场景中尤为…...
[特殊字符] Spring Cloud 微服务项目中 common 模块依赖导致网关启动失败的排查与解决
在进行微服务开发时,我们通常会抽取一个 common 公共模块,封装一些通用配置类、工具类、拦截器、常用组件依赖等,供多个微服务共享使用。 但近期在实际开发中,出现了一个典型问题:在 Gateway 网关模块中引入 common 后…...
Java SpringMVC 和 MyBatis 整合关键配置详解
目录 一、数据源配置二、MyBatis 工厂配置三、Mapper 扫描配置四、SpringMVC 配置五、整合示例实体类Mapper 接口Mapper XML 文件Service 类控制器JSP 页面六、总结在 Java Web 开发中,SpringMVC 和 MyBatis 是两个常用框架。SpringMVC 负责 Web 层的请求处理和视图渲染,MyBa…...
24.(vue3.x+vite)引入组件并动态挂载(mount)
示例截图 组件代码: <template><div><div>{{message }}</div>...
Linux 软件包|服务管理
rpm 指令备注rpm -qa查看已安装软件,可以结合grep过滤查找rpm -e firefox卸载firefoxrpm -ivh firefox-115.12.0-1.el7.centos.i686.rpm安装gcc(只能离线安装) yum 能够从指定的服务器自动下载 RPM 包并且安装 指令备注yum list列出所有可…...
前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)
前端实现本地文件上传与预览(PDF格式展示)不走后端接口 实现步骤 第一步:文件选择 使用前端原生input上传本地文件,或者是el-upload组件实现文件选择功能,核心在于文件渲染处理。(input只不过可以自定义样…...