Linux基础知识:轻松理解Kubernetes

发布时间: 2024-01-22 09:48:26 阅读量: 8 订阅数: 16
# 1. Linux基础知识概述 ## 1.1 Linux操作系统简介 Linux操作系统是一种开源的、基于Unix的操作系统。它于1991年由Linus Torvalds开发,并且得到了全球各地的开发者的广泛参与和支持,因此形成了一个庞大的开源社区。Linux操作系统具有稳定性强、安全性高、可定制性强等特点,在服务器领域得到广泛应用。 ## 1.2 Linux发行版介绍 为了满足不同用户的需求,Linux发行版在Linux内核基础上进一步打包和定制,提供了不同的功能和用户界面。常见的Linux发行版有Ubuntu、CentOS、Debian等。 ## 1.3 Linux常用命令及概念 ### 1.3.1 文件和目录管理 在Linux系统中,文件和目录的管理是非常重要的。常用命令包括: - `ls`:列出当前目录下的文件和目录 - `cd`:切换目录 - `pwd`:显示当前所在的目录 - `mkdir`:创建目录 - `rm`:删除文件或目录 - `cp`:复制文件或目录 - `mv`:移动文件或目录 ### 1.3.2 用户和权限管理 Linux系统是一个多用户的操作系统,因此用户和权限的管理相对复杂。常用命令包括: - `useradd`:添加用户 - `passwd`:设置用户密码 - `chown`:修改文件或目录的所有者 - `chmod`:修改文件或目录的权限 ### 1.3.3 网络管理 在Linux系统中,网络管理是非常重要的。常用命令包括: - `ifconfig`:查看和配置网络接口 - `ping`:测试网络连接 - `ss`:显示网络连接和进程 - `netstat`:显示网络状态信息 以上只是Linux常用命令的一小部分,请在实际使用中根据需要进行学习和掌握。 通过本章的介绍,我们对Linux操作系统有了初步的了解,包括其简介、常见的发行版以及常用命令和概念。在后续的章节中,我们将进一步学习容器技术和Kubernetes相关知识。 # 2. 容器技术基础 ### 2.1 什么是容器化 容器化是一种虚拟化技术,可以将应用程序及其依赖项捆绑在一起,以便在不同的环境中运行。它提供了一个隔离的运行环境,使应用程序在任何地方都能以相同的方式运行,无论是开发、测试还是生产环境。 容器与传统虚拟机的不同之处在于,容器共享主机操作系统的内核,因此更加轻量级和快速。容器在创建时会自动打包所需的库、框架和配置文件,使其可以在不同的系统上以相同的方式运行。 ### 2.2 Docker简介与基本使用 Docker是目前最流行的容器化平台之一。它提供了一个简单易用的API,使开发者可以轻松地构建、部署和运行容器。 以下是使用Docker的基本步骤: 1. 安装Docker:根据操作系统的不同,选择合适的安装方法并进行安装。 2. 镜像与容器:Docker使用镜像来创建容器。镜像是一个打包了应用程序及其依赖项的文件,可以用来创建新的容器。可以通过Docker Hub或者本地构建来获取镜像。 3. 运行容器:使用`docker run`命令来运行容器。例如,可以运行一个基于Ubuntu的容器,并在其中执行命令: ```shell docker run -it ubuntu:latest bash ``` 上述命令中,`-it`选项表示以交互式方式进入容器,`ubuntu:latest`表示使用最新版本的Ubuntu镜像,`bash`表示在容器中执行Bash命令。 4. 构建镜像:可以使用Dockerfile来定义一个镜像的构建过程。Dockerfile是一个文本文件,包含了一系列构建指令,例如安装软件包、复制文件等。通过使用`docker build`命令来构建镜像。 以下是一个简单的Dockerfile示例: ```dockerfile FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 上述Dockerfile首先基于最新版本的Ubuntu镜像创建一个新的镜像,然后安装了Nginx,并复制了一个自定义的`index.html`文件到Nginx的默认网页目录中。最后,指定了容器的默认启动命令。 ### 2.3 容器与虚拟机的对比 容器和虚拟机都可以实现资源隔离和应用程序的部署,但二者有以下几个主要区别: - 轻量性:容器共享主机操作系统的内核,因此更加轻量级,启动速度更快。而虚拟机则需要额外的操作系统和虚拟化管理软件,因此更加庞大和臃肿。 - 隔离性:容器通过命名空间和控制组等机制实现资源隔离,但仍然共享主机的操作系统内核。虚拟机则通过完全虚拟化或硬件辅助虚拟化实现虚拟化层与宿主机完全隔离的环境。 - 灵活性:容器可以动态伸缩和快速部署,能够更好地适应微服务架构中频繁变更的需求。虚拟机则需要较长的启动和关闭时间,适用于稳定的服务。 - 资源利用率:由于容器共享主机操作系统的内核,相同硬件条件下可以运行更多的容器实例。虚拟机需要额外的操作系统和虚拟化管理软件,因此资源利用率相对较低。 总结:容器化技术提供了一种轻量级和灵活的应用程序部署方式,与虚拟机相比具有更快的启动速度、更高的资源利用率和更好的可伸缩性。Docker作为最流行的容器化平台之一,为开发者提供了简单易用的构建、部署和运行容器的工具和API。 # 3. 理解Kubernetes ### 3.1 什么是Kubernetes Kubernetes(常简称为K8s)是一个开源的容器编排平台,用于自动化部署、扩展和操作应用程序容器。它最初由Google开发,后来成为Cloud Native Computing Foundation(CNCF)的一部分,提供了一种灵活且可扩展的方式来管理容器化应用程序。 Kubernetes的主要目标是帮助用户简化容器化应用程序的部署和管理。它可以自动化处理应用程序的部署、伸缩、负载均衡、故障恢复等操作,从而减轻了运维人员的负担。通过Kubernetes,用户可以快速、可靠地部署和管理应用程序,并且可以确保应用程序在不同环境中具有一致的行为。 ### 3.2 Kubernetes的核心概念 Kubernetes包含了一些核心概念,这些概念是理解和使用Kubernetes的基础。下面是一些重要的核心概念: #### 3.2.1 Pod Pod是Kubernetes中最小的可调度单位。它是一个或多个紧密关联的容器的组合,这些容器共享网络和存储资源。Pod可以被认为是一组在同一主机上运行的容器的逻辑主机。 #### 3.2.2 ReplicaSet ReplicaSet是用于定义Pod副本数量和监控的对象。它通过监控实际运行的Pod数量,确保始终达到指定的副本数量。 #### 3.2.3 Deployment Deployment是用于定义应用程序的声明式配置对象。它提供了简化的方式来创建和管理Pod副本,并支持滚动更新和回滚操作。 #### 3.2.4 Service Service是用于暴露Pod或一组Pod的网络服务的抽象。它将一组具有相同标签的Pod打包在一起,并为它们分配一个唯一的虚拟IP地址,从而可以通过该IP地址和端口访问这些Pod。 ### 3.3 Kubernetes的优势和应用场景 Kubernetes具有许多优势和广泛的应用场景。下面是一些典型的优势和应用场景: #### 3.3.1 自动化和可伸缩性 Kubernetes提供了自动化、弹性和自适应调度的功能。它可以根据实际负载情况自动调整应用程序的副本数量,并在需要时自动扩展集群规模,从而实现更大规模的应用程序部署。 #### 3.3.2 多环境支持 Kubernetes可以在各种环境中部署和管理应用程序,包括物理机、虚拟机和公有云等。这使得用户能够在不同的环境中灵活地部署应用程序,以满足不同的需求。 #### 3.3.3 持续交付和滚动更新 Kubernetes通过提供滚动更新和回滚的功能,使得应用程序的持续交付变得更加简单和可靠。用户可以轻松地进行应用程序版本的升级和回滚,而不会影响到正在运行的应用程序。 #### 3.3.4 弹性和高可用性 Kubernetes具有自动故障恢复和负载均衡的功能。它可以在节点故障或容器故障的情况下自动重启或迁移Pod,从而确保应用程序的高可用性。 总之,Kubernetes是一个强大的容器编排平台,可以帮助用户简化容器化应用程序的部署、管理和扩展。它提供了丰富的功能和灵活的架构,适用于各种规模的应用程序部署,并且可以在多种环境中无缝运行。 # 4. Kubernetes架构与组件 Kubernetes是一个用于自动化容器化应用程序部署、扩展和管理的开源平台。了解Kubernetes的架构和组件是学习和使用Kubernetes的基础。本章将介绍Kubernetes集群架构概述、Master节点和Worker节点的角色以及Kubernetes核心组件的作用。 ### 4.1 Kubernetes集群架构概述 Kubernetes集群由一组具有不同角色的节点组成,这些节点共同工作以便管理和运行容器化应用程序。一个典型的Kubernetes集群包括Master节点和若干个Worker节点。 Master节点是Kubernetes集群的控制中心,负责管理整个集群的各种操作,如调度容器、监控集群状态、管理各种资源等。它包含以下组件: - kube-apiserver: 提供Kubernetes API的接口,接收并处理来自用户和其他组件的请求。 - kube-controller-manager: 监控集群状态,根据需要进行自动化操作,如启动和停止容器、调度、扩展等。 - kube-scheduler: 负责为新的容器任务选择合适的Worker节点进行部署。 Worker节点是真正运行容器的节点,它们被Master节点管理和控制。Worker节点包含以下组件: - kubelet: 在节点上运行,负责处理Master节点发送的命令和控制信息,并确保容器在节点上正确运行。 - kube-proxy: 在节点上运行,负责为集群中的服务提供负载均衡和网络代理功能。 - 容器运行时(如Docker): 负责管理和运行容器。 ### 4.2 Master节点和Worker节点 Master节点是Kubernetes集群的控制中心。它接收和处理从用户或其他组件发送的请求,并根据需要管理和操作集群中的资源。一个Kubernetes集群通常只有一个Master节点。 Worker节点是负责实际运行容器的节点。它们接收Master节点发送的命令和控制信息,并确保容器在节点上正常运行。 Master节点和Worker节点之间通过网络进行通信,Master节点控制和监控Worker节点上的容器状态,并负责调度和管理容器的运行。 ### 4.3 Kubernetes核心组件介绍 Kubernetes包含多个核心组件,它们协同工作以实现容器的自动化管理和部署。以下是一些重要的核心组件: - **kube-apiserver**: 提供Kubernetes API的接口,是Master节点的入口,接收并处理来自用户和其他组件的请求。 - **kube-controller-manager**: 监控集群状态,负责自动化操作,如启动和停止容器、调度、扩展等。 - **kube-scheduler**: 负责为新的容器任务选择合适的Worker节点进行部署。 - **kubelet**: 在每个Worker节点上运行,负责处理Master节点发送的命令和控制信息,并确保容器在节点上正确运行。 - **kube-proxy**: 在每个Worker节点上运行,负责为集群中的服务提供负载均衡和网络代理功能。 - **容器运行时(如Docker)**: Kubernetes支持多种容器运行时,其中最常用的是Docker。容器运行时负责管理和运行容器。 有了这些核心组件的协同工作,Kubernetes能够实现高效的容器管理和部署,从而提供强大的应用扩展性和高可用性。 # 5. 使用Kubernetes 在本章中,我们将学习如何安装、配置和使用Kubernetes集群来管理和部署容器应用程序。 #### 5.1 安装与配置Kubernetes集群 首先,我们需要安装和配置Kubernetes集群。下面是一些步骤: 1. 安装Docker和Kubernetes控制平面组件: ```bash $ sudo apt-get update $ sudo apt-get install docker-ce kubelet kubeadm kubectl ``` 2. 初始化Master节点: ```bash $ sudo kubeadm init ``` 3. 配置kubectl命令行工具: ```bash $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 4. 安装网络插件: ```bash $ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` 5. 加入Worker节点: ```bash $ sudo kubeadm join <Master节点IP>:<Master节点端口> --token <token> --discovery-token-ca-cert-hash <hash> ``` #### 5.2 使用kubectl管理集群 一旦集群安装完毕,我们可以使用kubectl命令行工具来管理和操作集群。 一些常用的kubectl命令示例: - 查看集群节点信息: ```bash $ kubectl get nodes ``` - 查看所有运行中的Pods: ```bash $ kubectl get pods ``` - 部署一个应用: ```bash $ kubectl create deployment <应用名称> --image=<镜像名称> ``` - 暴露一个服务: ```bash $ kubectl expose deployment <应用名称> --port=<端口号> --type=LoadBalancer ``` - 扩展一个部署: ```bash $ kubectl scale deployment <部署名称> --replicas=<副本数量> ``` #### 5.3 部署容器应用到Kubernetes集群 现在,我们已经拥有一个工作正常的Kubernetes集群,并且使用kubectl命令行工具管理该集群。 下面是一个简单的示例,以部署一个Web应用为例: 1. 创建一个Web应用的Deployment: ```bash $ kubectl create deployment webapp --image=nginx ``` 2. 暴露该Web应用的服务: ```bash $ kubectl expose deployment webapp --port=80 --type=LoadBalancer ``` 3. 查看该应用的服务地址: ```bash $ kubectl get services ``` 可以通过访问服务地址来访问部署在Kubernetes集群上的Web应用。 这只是一个简单的例子,实际上,Kubernetes可以管理和部署各种规模和类型的应用程序,具体根据您的需求来进行配置。 在下一章中,我们将讨论Kubernetes的可伸缩性和高可用性。 # 6. Kubernetes可伸缩性与高可用性 Kubernetes作为一款开源的容器编排引擎,除了能够为用户提供容器化应用的部署和管理服务外,还具备良好的可伸缩性和高可用性。本章将深入探讨Kubernetes的可伸缩性与高可用性相关的知识点和实际操作。 #### 6.1 Kubernetes的可伸缩性介绍 Kubernetes集群可伸缩性是指集群系统可以根据负载情况进行自动水平扩展和收缩的能力。Kubernetes通过控制器和调度器来实现这一特性,允许用户根据应用负载的变化自动增加或减少Pod实例,从而确保应用始终具备足够的资源满足需求,提高集群的利用率。 ##### 6.1.1 水平Pod自动伸缩(Horizontal Pod Autoscaler,HPA) 在Kubernetes中,可以通过Horizontal Pod Autoscaler来自动调整Pod实例的数量,具体的做法是根据所设置的CPU利用率或自定义的指标,当达到阈值时自动增加或减少Pod的数量,以确保应用程序能够获得足够的资源。 ```yaml apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: myapp-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: myapp minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 80 ``` 上述代码中,定义了一个Horizontal Pod Autoscaler对象,它会自动监测Deployment中Pod的CPU利用率,当利用率超过80%时,会增加Pod的数量,但不超过10个,同时保证不会少于2个Pod运行。 #### 6.2 基于Kubernetes的应用扩展 Kubernetes通过ReplicaSet和Deployment等资源对象来支持应用的水平扩展和收缩。通过合理设置这些对象的参数,可以实现对部署的应用进行动态伸缩,以适应不同负载下的需求。 ##### 6.2.1 使用Deployment实现应用扩展 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: myapp:latest ports: - containerPort: 8080 ``` 上述Deployment描述了一个名为myapp的应用部署,其中replicas字段指定了需要创建的Pod副本数量为3。当负载增加时,Kubernetes会自动增加Pod实例数量以应对请求,而当负载减少时,系统也会自动收缩Pod实例数量,实现动态扩展。 #### 6.3 保证Kubernetes集群的高可用性 Kubernetes高可用性是指系统能够在面对节点故障或其他异常情况时,依然能够保持持续的工作能力,不影响集群的正常运行。为了实现高可用性,Kubernetes提供了多种机制和组件来保证整个集群的稳定性。 ##### 6.3.1 使用ReplicationController和ReplicaSet实现高可用性 ReplicationController和ReplicaSet可以确保Pod实例的高可用性,并在节点故障时自动对失效的Pod进行恢复。 ```yaml apiVersion: v1 kind: ReplicationController metadata: name: myapp-rc spec: replicas: 3 selector: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: myapp:latest ports: - containerPort: 8080 ``` 上述ReplicationController描述了对名为myapp的应用进行管理,通过指定replicas为3,系统会自动保证始终有3个Pod实例在运行,从而保持系统的高可用性。 ### 总结 本章详细介绍了Kubernetes的可伸缩性与高可用性相关的知识,包括水平Pod自动伸缩、基于Kubernetes的应用扩展以及保证Kubernetes集群的高可用性的方法和实践。通过合理的配置和管理,可以使Kubernetes集群在面对不同负载和异常情况时保持稳定和高效运行。

相关推荐

Davider_Wu

资深技术专家
13年毕业于湖南大学计算机硕士,资深技术专家,拥有丰富的工作经验和专业技能。曾在多家知名互联网公司担任云计算和服务器应用方面的技术负责人。
专栏简介
该专栏《K8S、Linux-k8s负载均衡-Service详解》详细介绍了Kubernetes(简称K8S)平台以及其负载均衡-Service的相关知识。专栏内的文章包括《Kubernetes初探:入门指南》、《Linux基础知识:轻松理解Kubernetes》、《Kubernetes基础架构详解》、《Kubernetes中的容器概念及应用》等。其中特别详细的解析了Service的概念与应用,包括负载均衡算法解析、Service在Kubernetes中的内部工作原理、ClusterIP模式详解、NodePort模式的实际应用、LoadBalancer应用与实践等。此外,还介绍了Ingress的使用与配置、多种负载均衡方案的比较、Service的监控与告警、Service的自动伸缩与调度以及Service Mesh技术在Kubernetes中的应用。通过该专栏,读者可以全面了解Kubernetes平台及其负载均衡-Service的核心概念和实际应用,加深对Kubernetes的理解和掌握。
最低0.47元/天 解锁专栏
买1年送3个月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
C知道 免费提问 ( 生成式Al产品 )

最新推荐

Spring WebSockets实现实时通信的技术解决方案

![Spring WebSockets实现实时通信的技术解决方案](https://img-blog.csdnimg.cn/fc20ab1f70d24591bef9991ede68c636.png) # 1. 实时通信技术概述** 实时通信技术是一种允许应用程序在用户之间进行即时双向通信的技术。它通过在客户端和服务器之间建立持久连接来实现,从而允许实时交换消息、数据和事件。实时通信技术广泛应用于各种场景,如即时消息、在线游戏、协作工具和金融交易。 # 2. Spring WebSockets基础 ### 2.1 Spring WebSockets框架简介 Spring WebSocke

高级正则表达式技巧在日志分析与过滤中的运用

![正则表达式实战技巧](https://img-blog.csdnimg.cn/20210523194044657.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ2MDkzNTc1,size_16,color_FFFFFF,t_70) # 1. 高级正则表达式概述** 高级正则表达式是正则表达式标准中更高级的功能,它提供了强大的模式匹配和文本处理能力。这些功能包括分组、捕获、贪婪和懒惰匹配、回溯和性能优化。通过掌握这些高

adb命令实战:备份与还原应用设置及数据

![ADB命令大全](https://img-blog.csdnimg.cn/20200420145333700.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h0dDU4Mg==,size_16,color_FFFFFF,t_70) # 1. adb命令简介和安装 ### 1.1 adb命令简介 adb(Android Debug Bridge)是一个命令行工具,用于与连接到计算机的Android设备进行通信。它允许开发者调试、

遗传算法未来发展趋势展望与展示

![遗传算法未来发展趋势展望与展示](https://img-blog.csdnimg.cn/direct/7a0823568cfc4fb4b445bbd82b621a49.png) # 1.1 遗传算法简介 遗传算法(GA)是一种受进化论启发的优化算法,它模拟自然选择和遗传过程,以解决复杂优化问题。GA 的基本原理包括: * **种群:**一组候选解决方案,称为染色体。 * **适应度函数:**评估每个染色体的质量的函数。 * **选择:**根据适应度选择较好的染色体进行繁殖。 * **交叉:**将两个染色体的一部分交换,产生新的染色体。 * **变异:**随机改变染色体,引入多样性。

实现实时机器学习系统:Kafka与TensorFlow集成

![实现实时机器学习系统:Kafka与TensorFlow集成](https://img-blog.csdnimg.cn/1fbe29b1b571438595408851f1b206ee.png) # 1. 机器学习系统概述** 机器学习系统是一种能够从数据中学习并做出预测的计算机系统。它利用算法和统计模型来识别模式、做出决策并预测未来事件。机器学习系统广泛应用于各种领域,包括计算机视觉、自然语言处理和预测分析。 机器学习系统通常包括以下组件: * **数据采集和预处理:**收集和准备数据以用于训练和推理。 * **模型训练:**使用数据训练机器学习模型,使其能够识别模式和做出预测。 *

TensorFlow 时间序列分析实践:预测与模式识别任务

![TensorFlow 时间序列分析实践:预测与模式识别任务](https://img-blog.csdnimg.cn/img_convert/4115e38b9db8ef1d7e54bab903219183.png) # 2.1 时间序列数据特性 时间序列数据是按时间顺序排列的数据点序列,具有以下特性: - **平稳性:** 时间序列数据的均值和方差在一段时间内保持相对稳定。 - **自相关性:** 时间序列中的数据点之间存在相关性,相邻数据点之间的相关性通常较高。 # 2. 时间序列预测基础 ### 2.1 时间序列数据特性 时间序列数据是指在时间轴上按时间顺序排列的数据。它具

numpy中数据安全与隐私保护探索

![numpy中数据安全与隐私保护探索](https://img-blog.csdnimg.cn/direct/b2cacadad834408fbffa4593556e43cd.png) # 1. Numpy数据安全概述** 数据安全是保护数据免受未经授权的访问、使用、披露、破坏、修改或销毁的关键。对于像Numpy这样的科学计算库来说,数据安全至关重要,因为它处理着大量的敏感数据,例如医疗记录、财务信息和研究数据。 本章概述了Numpy数据安全的概念和重要性,包括数据安全威胁、数据安全目标和Numpy数据安全最佳实践的概述。通过了解这些基础知识,我们可以为后续章节中更深入的讨论奠定基础。

Selenium与人工智能结合:图像识别自动化测试

# 1. Selenium简介** Selenium是一个用于Web应用程序自动化的开源测试框架。它支持多种编程语言,包括Java、Python、C#和Ruby。Selenium通过模拟用户交互来工作,例如单击按钮、输入文本和验证元素的存在。 Selenium提供了一系列功能,包括: * **浏览器支持:**支持所有主要浏览器,包括Chrome、Firefox、Edge和Safari。 * **语言绑定:**支持多种编程语言,使开发人员可以轻松集成Selenium到他们的项目中。 * **元素定位:**提供多种元素定位策略,包括ID、名称、CSS选择器和XPath。 * **断言:**允

TensorFlow 在大规模数据处理中的优化方案

![TensorFlow 在大规模数据处理中的优化方案](https://img-blog.csdnimg.cn/img_convert/1614e96aad3702a60c8b11c041e003f9.png) # 1. TensorFlow简介** TensorFlow是一个开源机器学习库,由谷歌开发。它提供了一系列工具和API,用于构建和训练深度学习模型。TensorFlow以其高性能、可扩展性和灵活性而闻名,使其成为大规模数据处理的理想选择。 TensorFlow使用数据流图来表示计算,其中节点表示操作,边表示数据流。这种图表示使TensorFlow能够有效地优化计算,并支持分布式

ffmpeg优化与性能调优的实用技巧

![ffmpeg优化与性能调优的实用技巧](https://img-blog.csdnimg.cn/20190410174141432.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21venVzaGl4aW5fMQ==,size_16,color_FFFFFF,t_70) # 1. ffmpeg概述 ffmpeg是一个强大的多媒体框架,用于视频和音频处理。它提供了一系列命令行工具,用于转码、流式传输、编辑和分析多媒体文件。ffmpe