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

【K8S系列】深入解析k8s 网络插件—kube-router

序言

做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记论点
  • 蓝色:用来标记论点

在现代容器化应用程序的世界中,容器编排平台Kubernetes已经成为标准。Kubernetes是一个分布式系统,为了支持复杂的应用和微服务架构,网络是Kubernetes集群中不可或缺的一部分。

能够管理和编排容器化应用程序,其中,监控是一个非常重要的方面,可以帮助用户了解集群的健康状态、性能和可用性。

在本文中,将详细介绍Kubernetes网络插件中的【kube-router】插件。

希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习,如果有什么建议,都可以留言和我交流

 专栏介绍

这是这篇文章所在的专栏,欢迎订阅:【深入解析k8s】专栏

简单介绍一下这个专栏要做的事:

  • 主要是深入解析每个知识点,帮助大家完全掌握k8s,以下是已更新的章节
  • 这是专栏介绍文章地址:【深入解析K8S专栏介绍】

1 基础介绍 

在Kubernetes中,网络插件也称为容器网络接口(Container Network Interface,CNI)插件,用于实现容器之间的通信和网络连接。以下是一些常见的Kubernetes网络插件:

  1. Flannel:Flannel是一个流行的CNI插件,它使用虚拟网络覆盖技术(overlay network)来连接不同节点上的容器。Flannel支持多种后端驱动,如VXLAN、UDP、Host-GW等。

  2. Calico:Calico是一个开源的网络和安全解决方案,它使用BGP协议来实现容器之间的路由。Calico支持灵活的网络策略和安全规则,可用于大规模部署。

  3. Weave Net:Weave Net是一个轻量级的CNI插件,通过创建虚拟网络设备和网络代理来连接不同节点上的容器。Weave Net支持overlay模式和直连模式,具有灵活性。

  4. Cilium:Cilium是面向Kubernetes的高性能网络和安全解决方案,利用eBPF(Extended Berkeley Packet Filter)技术来提供快速的容器间通信和网络策略实施。

  5. Canal:Canal是一个综合性的CNI插件,结合了Calico和Flannel的功能。它可以使用Flannel提供overlay网络,同时使用Calico的网络策略和安全性功能。

  6. Antrea:Antrea是一个基于Open vSwitch的CNI插件,专为Kubernetes网络和安全性而设计。它提供了高性能的网络连接和网络策略功能。

  7. kube-router:kube-router是一个开源的CNI插件,它结合了网络和服务代理功能。它支持BGP和IPIP协议,并具有负载均衡的特性。

这些是Kubernetes网络插件中的一些常见选项,每个插件都有其特定的优势和适用场景。选择合适的网络插件取决于你的需求、网络拓扑和性能要求等因素。

同时,Kubernetes社区也在不断发展和推出新的网络插件,以满足不断变化的需求。

2 kube-router 介绍

kube-router是一个开源的Kubernetes网络插件,旨在提供高性能、低延迟的网络服务。它采用了三层路由(Layer 3 Routing)的方式,以实现Kubernetes集群中的网络通信。

2.1 核心概念

kube-router的核心概念包括:

  1. BGP路由器:kube-router使用BGP(Border Gateway Protocol)来实现路由,这意味着它能够动态地适应集群中的节点变化。每个节点都被配置为BGP路由器,它们共享网络信息,确保容器之间的通信能够高效、可靠地进行。

  2. IPVS负载均衡:kube-router使用IPVS(IP Virtual Server)来实现负载均衡,以确保流量在容器之间均匀分配。这提供了高性能和可扩展性,特别适用于大规模Kubernetes集群。

  3. 网络策略:kube-router支持Kubernetes网络策略,允许管理员定义和控制哪些容器可以相互通信。这增强了集群的安全性。

2.2 三层路由

kube-router采用三层路由(Layer 3 Routing)的方式来实现Kubernetes集群中的网络通信。这种方式是与传统的二层(Layer 2)网络模型不同的,具有一些独特的优势和特征。下面详细介绍kube-router的三层路由方式:

  1. IP层路由:kube-router的核心思想是在IP层面上进行路由。在Kubernetes中,每个容器都分配了一个唯一的IP地址,这使得在IP层进行路由变得更加直观和高效。kube-router利用这些IP地址来实现容器之间的通信和流量控制。

  2. BGP(Border Gateway Protocol)路由协议:kube-router使用BGP作为其主要路由协议。BGP是一种广泛用于互联网路由的协议,它具有高度可扩展性和弹性。每个Kubernetes节点都配置为一个BGP路由器,它们通过BGP协议来交换路由信息。这意味着当新的节点加入集群或现有节点离开集群时,路由信息会自动更新,无需手动配置路由表。

  3. 动态路由:由于BGP的特性,kube-router实现了动态路由。这意味着当新的容器创建或删除时,路由表会相应地更新,以反映集群中的实际网络拓扑。这种自动化的路由管理使得Kubernetes集群的维护和扩展变得更加容易,无需手动干预。

  4. 高性能和负载均衡:kube-router利用Linux内核中的IPVS(IP Virtual Server)来实现负载均衡。IPVS是一种高性能的负载均衡技术,能够有效地将流量分发到多个容器之间,从而提供了高吞吐量和低延迟的网络性能。这对于处理大量的容器流量非常重要,特别是在大规模Kubernetes集群中。

  5. 网络策略支持:kube-router还支持Kubernetes网络策略。网络策略允许管理员定义哪些容器可以与哪些其他容器通信,以及如何允许或拒绝流量。这提供了额外的安全性和细粒度的流量控制,以满足不同应用程序的需求。

总之,kube-router的三层路由方式是一种灵活且高性能的方法,用于管理Kubernetes集群的网络通信。

它利用IP层路由、BGP协议、动态路由和负载均衡等技术,为容器提供了可靠的网络连接,并具有良好的扩展性和自动化特性,使得管理和维护Kubernetes网络变得更加容易和可靠。

2.3 优缺点

优点

  1. 高性能:kube-router采用了IPVS和BGP等高性能技术,因此具有出色的网络性能,适用于大规模Kubernetes集群。

  2. 可扩展性:由于使用了BGP路由协议,kube-router在节点的动态扩展和缩减方面表现出色,无需手动配置路由信息。

  3. 网络策略支持:kube-router支持Kubernetes网络策略,允许细粒度的流量控制,提高了安全性。

  4. 开源社区支持:kube-router是一个开源项目,拥有活跃的社区,可以获得及时的技术支持和更新。

缺点

  1. 复杂性:kube-router的配置和部署相对较复杂,需要一定的Kubernetes网络知识。

  2. 维护成本:由于其高度自动化的特性,kube-router需要专业的维护,以确保顺畅运行。

2.4 使用场景

kube-router适用于需要高性能和可扩展性的Kubernetes集群,特别是那些运行大量容器的生产环境。以下是一些适用场景:

  1. 大规模集群:对于大型Kubernetes集群,kube-router的性能和自动化特性非常有用,可以管理大量容器的网络通信。

  2. 多云跨数据中心部署:kube-router支持多云和跨数据中心部署,使得跨多个地理位置的Kubernetes集群之间的通信变得简单。

  3. 安全敏感环境:由于支持Kubernetes网络策略,kube-router适用于需要强化网络安全的环境,可通过网络策略精确控制流量。

3 安装步骤

安装kube-router需要一定的Kubernetes集群知识,以下是简要的安装步骤:

  1. 创建Kubernetes集群

  2. 安装kube-router

  3. 配置BGP路由器

  4. 启用网络策略

  5. 验证安装

步骤 1:创建Kubernetes集群

可以选择不同的方法来创建Kubernetes集群,下面是使用kubeadm的示例:

  1. 安装kubeadm、kubelet和kubectl工具,以及Docker(或其他容器运行时)。

  2. 初始化Kubernetes控制平面节点(Master节点):

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

 安装网络插件,这里将使用kube-router。但在这一步,只需安装kubeadm和kubelet,并不需要具体的网络插件。

步骤 2:安装kube-router

接下来,您需要将kube-router安装到Kubernetes集群中。通常,您可以使用Helm Chart或YAML清单文件来完成此操作。以下是使用YAML清单文件的示例:

 1 从kube-router的GitHub仓库获取最新的清单文件:

git clone https://github.com/cloudnativelabs/kube-router.git
cd kube-router

2 部署kube-router到集群中:

kubectl apply -f kube-router-all-in-one.yaml

这将会创建kube-router的Pods和相关的Service。

步骤 3:配置BGP路由器

kube-router默认使用BGP路由协议来进行路由管理。需要配置BGP路由器的相关信息,包括AS号等。这些配置信息通常包含在YAML清单文件中,以供kube-router使用。

可以编辑kube-router的ConfigMap,将BGP路由器的配置信息添加到其中。例如,打开ConfigMap文件:

kubectl edit configmap kube-router-config -n kube-system

然后,添加或修改BGP配置信息,如下所示:

apiVersion: v1
data:kubeconfig: |<kubeconfig-data>bgpConfig: |<bgp-config-data>

步骤 4:启用网络策略(可选)

如果需要启用Kubernetes网络策略,可以创建网络策略对象。以下是一个简单的示例:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-internal-traffic
spec:podSelector:matchLabels:role: internalingress:- from:- podSelector:matchLabels:role: internal

使用kubectl apply将网络策略对象应用到集群中。

步骤 5:验证安装

最后,使用以下命令验证kube-router的安装是否成功,并确保它正常运行:

kubectl get pods -n kube-system

应该能够看到kube-router的Pods处于运行状态。如果一切正常,kube-router现在已经成功地集成到Kubernetes集群中,负责网络路由和通信。

4 拓展

什么是BGP

Border Gateway Protocol(BGP),中文译为边界网关协议,是互联网上广泛使用的一种路由协议。

BGP是一种路径矢量协议,主要用于在不同自治系统(AS,Autonomous System)之间交换路由信息,以决定数据包应该如何跨越互联网传输。以下是关于BGP路由协议的详细介绍:

1. 自治系统(AS)

  • 一个自治系统是一组网络、路由器和IP地址的集合,它们被视为一个单一的管理单位。AS内的路由器使用内部协议来决定如何路由内部流量,而BGP主要用于AS之间的路由决策。

2. BGP路由器

  • BGP路由器是配置了BGP协议的网络设备,用于交换路由信息并决定最佳路径。通常,大型互联网服务提供商和大型企业网络会运行BGP路由器。

3. 路由信息交换

  • BGP路由器之间通过TCP连接进行路由信息的交换。BGP路由器会定期向相邻路由器发送路由更新信息,这包括可达的IP前缀及其相关属性。

4. BGP路径选择

  • BGP使用一种复杂的路径选择算法来确定数据包的最佳路径。它考虑了多种因素,包括AS路径长度、前缀属性(如前缀长度、AS-PATH、NEXT-HOP等),以及各种策略、筛选条件等。

5. BGP属性

  • BGP路由表中的每个路由都附带一组属性,用于描述该路由的特性。常见的BGP属性包括:

    • AS-PATH:描述了数据包从源AS到目标AS的路径。
    • NEXT-HOP:指示数据包下一跳的IP地址。
    • 前缀长度:指定了可达前缀的子网掩码长度。
    • LOCAL-PREF:用于在AS内部选择最佳路径。
    • MED(Multi-Exit Discriminator):用于在同一AS的不同出口路由之间选择路径。

6. BGP策略

  • BGP允许网络管理员定义各种策略来控制路由信息的传播和选择。这些策略可以用于路由筛选、路由聚合、路由重分发等操作,以满足网络的特定需求。

7. BGP的用途

  • BGP主要用于连接不同自治系统,因此在互联网中起到关键作用。它允许不同的网络提供商协同工作,确保全球互联网的可达性和稳定性。

8. BGP的安全性

  • 由于BGP协议的开放性,它容易受到不同类型的攻击,如路由劫持和路由欺骗。为了增强BGP的安全性,网络社区正在积极推动BGP的改进和增强安全机制,如BGPsec(BGP Security)。

总之,BGP是互联网中最重要的路由协议之一,用于实现不同自治系统之间的路由交换和路径选择。

它的复杂性和灵活性使其成为互联网的骨干,并且需要经验丰富的网络管理员来配置和维护。

BGP的稳定性和可靠性对于互联网的正常运行至关重要,因此其安全性也备受关注和改进。

5 结论

kube-router是一个高性能、可扩展的Kubernetes网络插件,适用于大规模和安全敏感的生产环境。

虽然它的配置和部署可能有一定的复杂性,但它提供了出色的性能和自动化特性,可以大大简化Kubernetes集群的网络管理。

在选择网络插件时,考虑集群规模和性能需求,kube-router可能是一个非常好的选择。

相关文章:

【K8S系列】深入解析k8s 网络插件—kube-router

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记论点蓝色&#xff1a;用来标记论点 在现代容器化应用程序的世界中…...

Flutter的Platform介绍-跨平台开发,如何根据不同平台创建不同UI和行为

文章目录 Flutter跨平台概念介绍跨平台开发平台相关性Platform ChannelPlatform-specific UIPlatform Widgets 如何判断当前是什么平台实例 Platform 类介绍获取当前平台的名称检查当前平台其他属性 利用flutter设计跨Android和IOS平台应用的技巧1. 遵循平台的设计准则2. 使用平…...

gitlab docker部署,备份,恢复

本次安装在CentOS7下进行 1、安装yum 检查是否已经安装yum yum --version如果未安装 sudo yum install -y yum-utils添加镜像源&#xff1a; 国外镜像源&#xff1a;yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo阿里镜像源&am…...

腾讯云/阿里云国际站代理:阿里云、华为云和腾讯云“大展拳脚”,与国际巨头未来竞争焦点是AI计算?

国内云计算市场重新掀起的价格战&#xff0c;腾讯云国际站代理让竞争本就内卷的市场陷入白热化&#xff0c;中国云厂商深耕东南亚的意愿变强。2020年之后&#xff0c;上下游企业与中国云厂商抱团出海趋势明显。东软集团、用友网络等A股上市公司也在走向东南亚。 东南亚市场蛋糕…...

基于Java+SpringBoot+Vue企业OA管理系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

Java架构师系统架构设计性能评估

目录 1 导论2 架构评估基础系统性能衡量的基本指标2.1 系统性能的指标2.2 数据库指标2.3 并发用户数2.4 网络延迟2.4 系统吞吐量2.5 资源性能指标3 架构评估基础服务端性能测试3.1基准测试3.2 负载测试3.3 压力测试3.4 疲劳强度测试3.5 容量测试1 导论 本章的主要内容是掌握架构…...

Android可滑动的分时图以及常用动画

先看一下效果&#xff1a; 自定义View 其中顶部是模仿的股票数据分时图&#xff0c;以前也写过详细的文章传送门&#xff0c;只不过不支持左右滑动&#xff0c;这款是在那个基础上的修改 在说一下分时图的思路吧&#xff1a; 可以看作是一条条相连的直线首尾相接&#xff0c…...

软考系统架构师常考知识点整理(含案例分析、论文历年题目总结)

系统架构师常考知识点总结 计算机组成原理 1、同步/异步区分 CPU访问内存通常是同步方式 CPU与I/O接口交换信息通常是同步方式 CPU与PCI总线交换信息通常是同步方式 I/O接口与打印机交换信息则通常采用基于缓存池的异步方式, 2、双工通信方式 对端到端通信总线的信号传…...

Netty通信在中间件组件中的广泛使用-Dubbo3举例

Netty是一个高性能异步IO通信框架&#xff0c;封装了NIO&#xff0c;对各种bug做了很好的优化解决。所以很多中间件底层的通信都会使用Netty&#xff0c;比如说&#xff1a;Dubbo3&#xff0c;rocketmq&#xff0c;ElasticSearch等。 比方说&#xff0c;我们使用dubbo作为rpc跨…...

基于Java的在线拍卖系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技…...

Maven Pom

目录 Pom 父&#xff08;Super&#xff09;POM POM 标签大全详解 POM( Project Object Model&#xff0c;项目对象模型 ) 是 Maven 工程的基本工作单元&#xff0c;是一个XML文件&#xff0c;包含了项目的基本信息&#xff0c;用于描述项目如何构建&#xff0c;声明项目依赖…...

【运维日常】mongodb 集群生产实践

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

【MATLAB源码-第45期】基于matlab的16APSK调制解调仿真,使用卷积编码软判决。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 16APSK调制解调 16APSK (16-ary Amplitude Phase Shift Keying) 是一种相位调制技术&#xff0c;其基本思想是在恒定幅度的条件下&#xff0c;改变信号的相位&#xff0c;从而传送信息。 - 调制&#xff1a;在16APSK中&am…...

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 八)

其他状态管理概述 除了前面章节提到的组件状态管理和应用状态管理&#xff0c;ArkTS还提供了Watch和$$来为开发者提供更多功能&#xff1a; Watch用于监听状态变量的变化。$$运算符&#xff1a;给内置组件提供TS变量的引用&#xff0c;使得TS变量和内置组件的内部状态保持同步…...

SQL按照id集合顺序返回

SQL按照id集合顺序返回 一、需求二、SQL三、MyBatis编写四、FIELD函数五、环境 一、需求 sql这样的 SELECT id, name FROM is_parent_viewshop WHERE id IN (2350, 2396, 3768, 3718, 3692) 按照id顺序返回&#xff0c;sql如何写 二、SQL SELECT id, name FROM is_parent_vi…...

04训练——基于YOLO V8的自定义数据集训练——在windows环境下使用pycharm做训练-1总体步骤

在上文中,笔者介绍了使用google公司提供的免费GPU资源colab来对大量的自定义数据集进行模型训练。该方法虽然简单好用,但是存在以下几方面的短板问题: 一是需要通过虚拟服务器做为跳板机来访问,总体操作起来非常繁杂。 二是需要将大量的数据上传缓慢,管理和使用非常不友…...

iview表格 异步修改列数据卡顿 滚动条失效

使用表格row-key属性 将row-key属性设置为true <Table ref"table" border :row-key"true" :columns"tableColumns" :loading"loading":data"tableData"></Table>...

【Linux】常驻内核和虚拟内存的区别

常驻内存和虚拟内存是计算机内存管理的两个概念。 常驻内存指的是应用程序在运行时&#xff0c;所占用的内存空间不会随着应用程序的启动和关闭而有所变化&#xff0c;这种内存是常驻在计算机的物理内存中的。即使我们关闭了电脑&#xff0c;这些程序也会保持在内存中&#xf…...

Qt 串口接收包含汉字的数据,汉字乱码

通过串口显示打印的调试信息时&#xff0c;接受的中文无法识别&#xff0c;全部乱码&#xff0c;解决办法&#xff1a; QByteArray array m_serial->readAll(); QString array QString::fromLocal8Bit(arr)...

设计模式 - 结构型模式考点篇:适配器模式(类适配器、对象适配器、接口适配器)

目录 一、适配器模式 一句话概括结构式模式 1.1、适配器模式概述 1.2、案例 1.2.1、类适配器模式实现案例 1.2.2、对象适配器 1.2.3、接口适配器 1.3、优缺点&#xff08;对象适配器模式&#xff09; 1.4、应用场景 一、适配器模式 一句话概括结构式模式 教你将类和对…...

android Google官网 :支持不同的语言和文化 rtl / ltr : 本地化适配:RTL(right-to-left) 适配

参考 google官网&#xff1a; 支持不同的语言和文化 应用包含可能专门针对特定文化而设计的资源。例如&#xff0c;应用可以包含针对特定文化的字符串&#xff0c;这些字符串将转换为当前语言区域的语言。 将具有文化特异性的资源与应用的其他资源分开是一种很好的做法。And…...

Visual Studio Code配置C/C++开发环境

C/C开发中的IDE非常多&#xff0c;网上有推荐安装Visual Studio 2019/2020/2022。但是登录官方网址下载&#xff0c;此软件体积非常大(8G以上)&#xff0c;且企业版、专业版会收费。 因此&#xff0c;我们推荐大家可以尝试通过Visual Studio Code来配置C/C开发环境 环境准备 Mi…...

室内渲染的艺术:创造理想空间的视觉魔法!

在繁忙的生活中&#xff0c;我们常常渴望拥有一个属于自己的安静空间。这个空间可以是一间温馨的卧室&#xff0c;也可以是一间舒适的客厅&#xff0c;甚至可以是一个小小的书房。而这个空间的营造&#xff0c;离不开室内渲染。 室内渲染是一种艺术&#xff0c;它用色彩、光线…...

php发送get、post请求的6种方法简明总结?

这篇文章主要介绍php发送get、post请求的6种方法简明总结,分别为使用file_get_contents 、fopen、fsockopen、curl来发送GET和POST请求,需要的朋友可以参考下 方法1: 用file_get_contents 以get方式获取内容&#xff1a; <?php $urlhttp://www.51growup.com/; $html f…...

Go基础之变量和常量

Go基础之变量和常量 文章目录 Go基础之变量和常量一. 标识符、关键字、内置类型和函数1.1 标识符1.2 关键字1.3 保留字1.4 内置类型1.4.1 值类型&#xff1a;1.4.2 引用类型&#xff1a;(指针类型)1.5 内置函数1.6 内置接口error 二.Go变量命名规范2.1 采用驼峰体命名2.2 简单、…...

红队专题-Cobalt strike4.5二次开发

红队专题 招募六边形战士队员IDEA 自动换行原版CS反编译破解jar包反编译拔掉暗桩初始环境效果 stageless beacon http通信协议 过程分析上线&心跳get请求teamserver 处理请求 参考链接 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 …...

Java数据结构之Deque(双端队列)

一、Queue和Deque异同介绍 我们知道&#xff0c;Queue是队列&#xff0c;只能一头进&#xff0c;另一头出。 如果把条件放松一下&#xff0c;允许两头都进&#xff0c;两头都出&#xff0c;这种队列叫双端队列&#xff08;Double Ended Queue&#xff09;&#xff0c;学名Deq…...

flink以增量+全量的方式更新广播状态

背景 flink在实现本地内存和db同步配置表信息时&#xff0c;想要做到类似于增量(保证实时性) 全量(保证和DB数据一致)的效果&#xff0c;那么我们如何通过flink的广播状态外部定时器定时全量同步的方式来实现呢&#xff1f; 实现增量全量的效果 package wikiedits.schedule…...

Java:org.apache.commons.io包的工具类:IOUtils、FileUtils、FilenameUtils

文档 https://commons.apache.org/proper/commons-io/https://central.sonatype.com/artifact/commons-io/commons-io/2.14.0/jar 工具类 IOUtils io工具类FileUtils 文件操作工具类FilenameUtils 文件名工具类 依赖 <dependency><groupId>commons-io</gro…...

【JavaEE】文件操作

文章目录 前言什么是文件树型结构组织和目录文件路径文件类型文件权限Java中的文件操作File 类的常见属性File 类常见构造方法File 类常用方法 前言 文件是我们日常生活中使用非常广泛的&#xff0c;我们使用任何一个程序都离不开文件操作&#xff0c;这个文件不仅仅指平时可以…...