Skip to content

kubernetes начало [2025]

本视频由Артур Крюков讲解Kubernetes基础知识,介绍其组件、功能及应用场景,适合初学者入门。

Key Takeaways

  • Kubernetes是专为管理大量容器和微服务设计的容器编排器。
  • 单个或少量容器应用无需使用Kubernetes,可选择Docker或Docker Swarm等轻量方案。
  • Kubernetes核心组件协同工作,确保应用的高可用性、自动重启和水平扩展。
  • etcd数据库作为配置和状态存储的关键组件,保证集群数据的稳定和一致性。
  • 网络管理通过CNI插件实现,支持容器间通信和服务发现。

What the video covers

  • 介绍Kubernetes的定义、用途及为何需要使用容器编排器。
  • 讲解Kubernetes适用场景,强调只有多容器或微服务应用才需使用Kubernetes。
  • 详细说明Kubernetes的核心组件,包括Kubernetes API、etcd数据库、控制器、调度器、kubelet和kube-proxy。
  • 解释Kubernetes API的作用及其通过REST API与用户和应用程序交互。
  • 描述etcd作为键值数据库在集群中的重要性及其高可用性。
  • 介绍控制器的工作机制及其如何监控和响应Pod清单的变化。
  • 讲解调度器如何为Pod分配集群节点及其工作流程。
  • 说明kubelet在每个节点上运行,负责启动和管理容器。
  • 讨论Kubernetes网络架构,包括容器网络和服务网络,以及网络插件(CNI)的作用。
  • 强调Kubernetes集群的可扩展性和组件的动态管理能力。

Answers

Questions about this video

什么情况下需要使用Kubernetes?

当您的应用由多个容器组成,或者包含多个微服务时,需要使用Kubernetes来管理和编排这些容器。对于只有一两个容器的简单应用,使用Docker或Docker Swarm即可。

Kubernetes的核心组件有哪些?

核心组件包括Kubernetes API服务器、etcd数据库、控制器、调度器、kubelet和kube-proxy,这些组件协同工作以管理容器生命周期和集群状态。

etcd在Kubernetes中起什么作用?

etcd是一个高可用的键值数据库,用于存储Kubernetes集群的所有配置信息和状态数据,是集群数据的唯一真实来源。

Full Transcript — Download SRT & Markdown

00:00
Speaker A
你好!基本上,我决定在频道上整理我的视频,并像往常一样从头开始。正如我之前所说,我们为初学者创建了一个单独的播放列表,例如:“从头开始学习 Kubernetes [基础]”。我计划将此作为此播放列表中的第一个视频。现在我打算告诉你们关于 Kubernetes 的事情,它是什么,为什么、为了什么以及需要它做什么?以及它由什么组成。Kubernetes 的主要组件。
01:17
Speaker A
一个编排器,一个容器编排器。 也就是说,当 你有一个由许多容器组成的应用程序 ,或者你在容器中有许多应用程序 ,或者你在容器中有微服务时,你就需要 Kubernetes。 你看,关键词是容器,对吧? 因此,Kubernetes 被设计用于管理 容器。如果您的 应用程序是没有容器的整体,那么您就不需要 Kubernetes。 如果你有某种图形编辑器,那么 你就不需要 Kubernetes。该文档 告诉您 Kubernetes 允许您做什么、 为您提供什么,但坦率地说,在这个阶段 您很难理解 它是什么以及它是用来做什么的。因此,我会尝试 用我自己的话更简短地告诉你。 也就是说,Kubernetes的任务是启动和停止 容器。 Kubernetes 的作用是, 如果您的应用程序 突然停止工作,则重新启动它。 Kubernetes 的任务是,如果某个 集群节点(即某个服务器)物理死亡,则该 节点上的应用程序将在其他 服务器上重新启动。再次,如果您的应用程序突然 开始消耗大量资源,并且您 在配置 Kubernetes 时考虑到了这一点,那么 Kubernetes 可以水平扩展 相应的应用程序,也就是说,它可以启动
02:41
Speaker A
如果你开始学习某些应用程序,那么,你就开始学习任何东西了。从此文档开始。Kubernetes 有良好的文档。包括 Russified,也就是俄语。虽然并非所有内容都是俄语,但基本内容都有。那么,Kubernetes 到底是什么?其中有一个名为“文档”、“概念”、“概述”的部分,其中介绍了什么是 Kubernetes,并且一般都是在这里写的。所以我们不需要历史,你可以阅读历史。
03:50
Speaker A
或者您有一个、两个或三个 容器,那么您就不需要 Kubernetes。那里有足够的东西可以使用 docker、docker swarm 等,一些 轻量级的东西。这不需要部署 Kubernetes 集群。现在我们来讨论 一下 Kubernetes 组件。 文档中 还有 一个单独的部分称为“Kubernetes 组件”,但 说实话,我不太喜欢这里的描述方式。 现在我就告诉你一点。 我会自己画,但是 我们有什么,在哪里以及为什么? 那么,Kubernetes 的组件 叫什么名字,有什么用途, 以及它们如何相互作用。 Kubernetes 的核心组件是 Kubernetes API。 我就用这个符号来标记 ,写成k8s api。那么, 我们这里有什么?这是一个 API 服务器。 为了帮助您理解什么是 API 服务器,让我们 回顾一下什么是 REST。 REST API。
04:56
Speaker A
时代。这里很可能描述了自恐龙时代以来的一切,以及一切是如何完成的。您需要了解的最重要的事情是为什么需要 Kubernetes 以及它能做什么。Kubernetes 是一个编排器,一个容器编排器。也就是说,当你有一个由许多容器组成的应用程序,或者你在容器中有许多应用程序,或者你在容器中有微服务时,你就需要 Kubernetes。你看,关键词是容器,对吧?因此,Kubernetes 被设计用于管理容器。
05:50
Speaker A
因此,这些是用户准备的清单 ,他通常 使用某些应用程序将其放入这个 Kubernetes API 中。也就是说,它是一种入口点。 控制魔方器的要点。 Kubernetes API 是一个常规应用程序, 本身不存储任何内容。因此,必须有某种数据库 来 存储 相应的设置和您的相应愿望 。因此,所有设置 都存储在某个数据库中。 默认情况下 使用 etcd 数据库。表示 一个键值数据库。也就是 一个非常简单的键值数据库。 非常稳定,容错能力强。 聚类 良好 。也就是说,etcd 不是一个单体应用,通常是 一个集群。我们 这样画吧。这是一种数据库集群, 我们的 Kubernetes 集群的 数据 直接存储 在其中 。我们将尽力 按照风水原则 使它变得 美丽。 事实上,当您
07:05
Speaker A
如果您的应用程序是没有容器的整体,那么您就不需要 Kubernetes。如果你有某种图形编辑器,那么你就不需要 Kubernetes。该文档告诉您 Kubernetes 允许您做什么、为您提供什么,但坦率地说,在这个阶段您很难理解它是什么以及它是用来做什么的。因此,我会尝试用我自己的话更简短地告诉你。也就是说,Kubernetes 的任务是启动和停止容器。
08:26
Speaker A
去细说那里的细节,我们只是说这里是 标准的kubernetes API控制器。该 控制器监控 系统中 定义您的成果的清单的出现。此外,他 无需访问数据库即可进行监控;他 对这个数据库一无所知。它直接访问 kubernetes API。 让我们放一个这样的箭头。 也就是说,使用 这个 kubernetes API,它会查看 这些是否出现在我们的系统中。 清单附有附件。 有一个功能叫监视。 因此,它 以一定的频率监控 Kubernetes API 访问。并观察 那里是否出现了宣言。也就是说,控制器的任务 是将创建 应用程序 的要求 添加到 kubernetes API 中,添加到相应的数据库中 。 也就是说,请注意,在 您提出愿望的清单中, 控制器会对此清单做出反应,然后创建 创建 Kubernetes API pod 的要求。但
09:35
Speaker A
Kubernetes 的作用是,如果您的应用程序突然停止工作,则重新启动它。Kubernetes 的任务是,如果某个集群节点(即某个服务器)物理死亡,则该节点上的应用程序将在其他服务器上重新启动。再次,如果您的应用程序突然开始消耗大量资源,并且您在配置 Kubernetes 时考虑到了这一点,那么 Kubernetes 可以水平扩展相应的应用程序,也就是说,它可以启动一个、两个、三个或任何其他数量的应用程序实例,并在这些应用程序之间相应地分配网络流量。
10:47
Speaker A
上的信息 。 那么 让我们再回顾一下这个链条。用户说我需要 一个 pod。控制器说,好的, 我们需要创建一个 pod,添加一些 与 pod 相关的参数,还有各种系统的东西, 附加功能出现在我们数据库中的这个 pod 清单中 。然后调度程序会查看 我这里有尚未 部署到集群的 pod。这也是 pod manifest 中的单独信息,然后当我们查看 kubernetes API 时,这是一个单独的故事,我们将在那里看到所有这些。 调度程序将会看到,是的,我们有一个 由控制器处理的 pod,所有参数都在那里,但 它没有关于它位于何处、应该 位于何处的信息。因此,调度程序会添加 有关 此 pod 将位于 Kubernetes 集群的 哪个服务器的具体位置的信息 。 但正如你所见, 吊舱仍然没有找到。这些只是 Kubernetes API 内部的所有清单。
11:47
Speaker A
Kubernetes 使用所谓的清单进行管理,也就是说,您位于一些文件中,通常这些是 yaml 文件,但我们稍后会在单独的视频中讨论这些文件,讨论如何管理所有这些。借助这些文件,您可以在清单中的 yaml 文件中管理 Kubernetes,描述您对此环境应处于什么状态的期望。也就是说,有多少个容器,有哪些配置文件,它们如何相互作用。基本上,您描述系统的状态并将其提供给 Kubernetes。然后 Kubernetes 必须维护系统的这个状态。嗯,简而言之就是这样。
13:08
Speaker A
、物理 Kubernetes 集群节点,即服务器。 并且在这些服务器上, kubelet 本身的一个实例被启动。 这意味着,就像 调度程序和控制器一样, 它 使用监视功能来查看 Kubernetes API 中的信息。 它检测 pod,并 在 pod 清单中监视它们。 他发现给定的 调度程序是针对该 集群节点的。并且 该 kubelet 被触发(它们都监控 API)。 直接在 我们的 pod 当前清单 中指定的 节点上运行 的 kubelet 被触发。 应用程序。 kubelet 做什么? Kubelet是指 容器化系统。 好吧,
14:08
Speaker A
当然,很明显 Kubernetes 有很多特点。附加的、有趣的功能等等。但从根本上讲,你必须明白,如果你有很多容器,并且你希望它们飞起来而不是掉下来,那么你就需要 Kubernetes。如果您没有容器,或者您有一个、两个或三个容器,那么您就不需要 Kubernetes。那里有足够的东西可以使用 Docker、Docker Swarm 等,一些轻量级的东西。这不需要部署 Kubernetes 集群。
15:32
Speaker A
创建这个应用程序。某种 宣言正在形成。这通常是一个描述您的 愿望的 YAML 文件。好吧,就说一个最简单的 愿望吧,为我创建一个 pod。可以说,这是 Kubernetes 集群中应用程序的 基本元素 。 所以当他这样做的时候,他 使用 Kubernetes API 来放置它,也就是说,他访问 Kubernetes API,Kubernetes API 将相应的信息存储在它的 数据库中。 控制器会 定期轮询 Kubernetes API, 查看 这里是否有任何 pod。当然,在某些条件 下我们会考虑这一点。好吧,假设是 来自用户的新分发的 pod。如果 系统中出现了这样的pod,控制器 就添加与之相关的信息, 这不要紧,现在它把它的一些参数添加到这个pod中。 并将其放回到这个 etcd 中。也就是说,在 etcd 中,也就是在 Kubernetes 数据库中,我们已经
16:32
Speaker A
现在我们来讨论一下 Kubernetes 组件。文档中还有一个单独的部分称为“Kubernetes 组件”,但说实话,我不太喜欢这里的描述方式。现在我就告诉你一点。我会自己画,但是我们有什么,在哪里以及为什么?那么,Kubernetes 的组件叫什么名字,有什么用途,以及它们如何相互作用。
17:29
Speaker A
在集群的每个节点上,我们都运行 一个名为 kubelet 的应用程序。 每个 kubelet 还会定期 查看 kubernetes API,以获取 其工作所需的各种其他信息 ,包括 有关 pod 的 监控信息 。 例如,如果他发现 需要在给定的集群节点上创建某些东西 ,他会如何看待它?他只需查看 代码清单,就会发现有 一个 pod 作为调度程序分配给我的特定集群节点。它 获取该清单并在该节点上启动 一个容器。 启动非常容易。 您的系统中的每个节点上 都有 某种容器化系统。 它可以是容器,可以是 CRI-O, 也可以是 您正在使用的其他不同的容器化系统。他向她发出命令, 让她发射某某容器,并设置某某参数。 它 从我们最初抛在这里的清单中 获取什么样的容器、什么参数 。那么,集装箱系统 在这里 启动相应的
18:41
Speaker A
Kubernetes 的核心组件是 Kubernetes API。我就用这个符号来标记,写成 k8s API。那么,我们这里有什么?这是一个 API 服务器。为了帮助您理解什么是 API 服务器,让我们回顾一下什么是 REST。REST API。也就是说,如果您使用 SSL,它是某个允许您访问 HTTP 协议(HTTPS)的应用程序。然后,使用标准 GET、POST 和其他请求,您可以与该应用程序通信。
19:02
Speaker A
让我们在这里稍微扩展一下这个节点。 我们就这样做吧。 让我们将它稍微移动一下以便有空间。 并且相应地它也在 kubernetes 集群的每个节点上运行。 所以kube-proxy负责网络。 或者更确切地说,稍微提前一点, 我想说,当我们谈论 Kubernetes 集群中的网络时,它分为两部分。有 一个容器网络和 一个服务网络。 粗略地说, 只要知道容器的 IP 地址, 您就可以 直接 通过网络访问容器 。 因此 Kubernetes 网络的第一部分是 为容器分配 IP 地址。也就是说,这是一个标准 网络,就像我们所拥有的一样。 我们 为每个 主机、每个虚拟机 以及在我们的例子中为每个容器 分配一个特定的 IP 地址 。 但 除此之外, Kubernetes 中还有另一个相当有趣的实体,
20:08
Speaker A
嗯,实际上,Kubernetes API 应用程序正是通过 REST 协议工作的应用程序。为了使用 Kubernetes 处理数据,它可以是一个用户,也可以是其他应用程序。因此,这些应用程序、这些使用 Kubernetes 的用户总是会求助于 Kubernetes 这个 API。在他们的一些团队的帮助下,实际上,他们就是这样管理 Kubernetes 的。
21:44
Speaker A
团队编写的组件, 开发 Kubernetes 的团队开发的组件。也就是说, 一般来说,我们来数一数我们有什么。 Kubernetes API - 一、 基本控制器 - 二、 基本调度器 - 三、kubelet - 四 、以及 Kubernetes Proxy - 五。问题是 我现在没有在这里包括 etcd,因为 etcd 是 一个单独的项目,就像一个数据库,它不是 由 Kubernetes 开发人员(即 Google)开发的。这 是一个单独的项目。也就是说,目前我们有五个 Kubernetes 集群元素 正在由 Kubernetes 开发团队开发 。但这还不是 全部。事实上,这还不是全部。 这就是我刚才给大家画的,所谓的控制平面。
22:32
Speaker A
因此,这些是用户准备的清单,他通常使用某些应用程序将其放入这个 Kubernetes API 中。也就是说,它是一种入口点。控制魔方器的要点。Kubernetes API 是一个常规应用程序,本身不存储任何内容。因此,必须有某种数据库来存储相应的设置和您的相应愿望。因此,所有设置都存储在某个数据库中。默认情况下使用 etcd 数据库。表示一个键值数据库。也就是一个非常简单的键值数据库。非常稳定,容错能力强。聚类良好。
23:44
Speaker A
如果您有某种网络驱动程序。 他...好吧,假设有很多 不同的实现,不同情况的不同网络驱动程序, 不同的制造商等等。 以及它是否支持容器网络接口(CNI)。 然后它将 组织 Kubernetes 集群中的网络。我再说一遍, 有很多不同的应用程序,我们 将研究其中一种,并根据具体情况使用它们。 假设有云端,比如亚马逊、 Yandex 等等。有各种各样的裸机, 像同样的Calico,同样的 Flanel等等。这个 应用不是Google开发的,这些也是独立的 项目,但是它们都支持 容器网络接口,也就是说 它们能做什么呢?他们知道如何使用 Ta-Dam!使用 kubernetes API。这里 分别是 Kubernetes 集群中的 pod 网络 。 下一个 组件,它...该组件 可能已经是可选的。也就是说,如果我们谈论 DNS 和 pod 网络驱动程序,这些是必需 组件。假设,直到您 在 Kubernetes 集群中安装 pod 网络驱动程序,您的集群
25:02
Speaker A
也就是说,etcd 不是一个单体应用,通常是一个集群。我们这样画吧。这是一种数据库集群,我们的 Kubernetes 集群的数据直接存储在其中。我们将尽力按照风水原则使它变得美丽。事实上,当您访问 Kubernetes API 并将您的愿望(清单)放在那里或者想要获取集群的状态或有关集群的其他数据时,实际上,Kubernetes API 会保存所有这些或从这个 etcd 数据库中获取数据。
26:20
Speaker A
不在云中、裸机、某种附加 功能、某些专用存储等等。 您可以将 存储接口驱动程序容器添加到集群。可以有几种 不同的类型,没问题,你只需要有不同 类型的存储。嗯,现在跑得 远远的。您可以 在系统中 安装各种 附加 控制器。 让我 来写一下。附加控制器。 附加控制器允许 您 在 kubernetes 集群中 实现一些 附加实体。 事实上,这是 Kubernetes 集群中默认存在的控制器。就是这样,就是 这样。它仅支持 一组特定的实体。可以说,标准。这些是相同的 pod、部署、服务、 端点,那里有什么,我不知道,角色、 角色、绑定。也就是说, kubernetes集群中有一组特定的基本组件。但是 Kubera 集群并不是静态的,而是 动态的,您可以 自己扩展其功能。 但是为了...哦,我 不知怎么地 做错了 。 无论如何,我们这样做吧。 一般来说,您 可以通过添加
27:53
Speaker A
再次强调,etcd 是一个非常快速、优化良好且集群良好的数据库。我有点超越自己了,好吧,有多超越呢?遥遥领先。如果需要备份集群,只需要备份 etcd 即可。所有其他内容都可以稍后在此 etcd 之上推出,并且一切都将完美地为您服务。
28:50
Speaker A
颁发 、重新颁发、删除证书等操作的应用程序。 这是一个简单的例子。我希望 Kubernetes 集群的组件 或多或少都清晰一些。好吧,如果 你不明白,请倒回去并 从头开始观看该视频一、二、三遍。他们说 这有助于巩固材料。 现在我们将与您讨论它 在服务器上的物理排列方式以及它是如何分布的。 因为一切都是某种逻辑方案, 现在有一个物理分布。让我们添加另一个图表。 因此, 我们现在将在此图中 制作一些 Kubera 簇 。 更准确地说,不是集群,而是 Kubera 集群的节点。好吧,假设我们有 一、二、 三、 四。 假设我们 在 Kubernetes 集群中有五台服务器。那么 让我们看看这里是如何、有什么、在哪里以及 安排什么的。正如你记得的, 那么,我的 kubelet 在哪里?您还记得, 我们 在集群的每个节点上 运行 Kubelet。 这里我们有五个集群节点。 五个 kubelet。 Kubelet
30:26
Speaker A
我们将要研究的下一个组件称为控制器。假设您将一些清单推送到 Kubernetes 集群。也就是说,你作为一个用户,你作为一个应用程序,使用 Kubernetes API,例如说:“为我创建一些应用程序”。好吧,假设我们创建了某种 pod。因此,我们的系统中必须有一些组件可以对相应清单的出现做出反应。
31:14
Speaker A
Kubernetes 代理。 这里。这已经是一个容器了。 Kubernet 代理负责我们的 服务网络。这是我们的容器。 好吧,我有点超前了。嗯,来一点怎么样? 很前面,Kubernetes Proxy负责 NAT转换。也就是说,如果你在Linux中,那么 NAT就是我们的一切。总的来说, Kubernetes 中 从网络角度来看的很多功能 都是 建立在 这些 NAT 转换的 基础上的 。 再次,我想 提前、很远地发表一点评论。事实上 ,Kubernetes Proxy 是 Kubernetes 自带的默认应用程序。 有一些类型 的网络接口容器,即 驱动程序,记住,CNI。哪个...
32:14
Speaker A
嗯,有这样一个组件,它被称为控制器。总的来说,其实它结合了很多不同的控制器,但是我们现在就不去细说那里的细节,我们只是说这里是标准的 Kubernetes API 控制器。该控制器监控系统中定义您的成果的清单的出现。此外,他无需访问数据库即可进行监控;他对这个数据库一无所知。它直接访问 Kubernetes API。
33:14
Speaker A
在那里有 etcd 数据库。 数据存储的位置。因此, 在我们有 etcd 数据库的地方, K8S API 通常放在它的旁边 。即 安装一个API服务器。 这就是这样的联系,大家记住了吧? 为了安全起见, 我在这里明确地画出这个箭头 , 因为通常这个位于这里的 API 服务器 会访问本地的 etcd 实例。除其他 外,这就是我们放置 调度程序的地方。 这里我们有 控制器。 但是那个控制器不是自定义 控制器,正如我们在这里所画的,我们可以有额外的 控制器。附加控制器本质上是简单的 应用程序。 此扩展 与我们的“控制平面”无关 。 我现在谈论的是 我们这里的标准控制器。也就是说, 这里有一个 API 服务器、一个调度器、 一个控制器。这就是所有这五个元素,你看到了吗? Kubernetes API 直接位于...
34:26
Speaker A
让我们放一个这样的箭头。也就是说,使用这个 Kubernetes API,它会查看这些是否出现在我们的系统中。清单附有附件。有一个功能叫监视。因此,它以一定的频率监控 Kubernetes API 访问。并观察那里是否出现了宣言。也就是说,控制器的任务是将创建应用程序的要求添加到 Kubernetes API 中,添加到相应的数据库中。
36:14
Speaker A
etcd 集群。 我们在这里,让我们 这样做,因为这是一个集群,它们 相互通信。 理解这一点很重要, 因为 ectd 是 我们 Kubernetes 集群 的基础 。 嗯,因此, 这个 etcd 也与这个进行通信。他们 也互相交流。也就是说,我们有 一个特定的集群正在出现。 我们就这样做吧,这样看起来 多少有些美观。这里。 现在 我们的 Kubera 集群的 控制节点 如下所示。 因此,如果某个控制节点突然 出现故障,然后又 重新投入使用。然后我们 在那里运行一个 ectd 集群。 更准确的说是etcd集群的一个元素,etcd集群的一个实例。 然后 与其 etcd 集群进行交互。 它复制其信息,并且 kubernetes API
37:26
Speaker A
也就是说,请注意,在您提出愿望的清单中,控制器会对此清单做出反应,然后创建 Kubernetes API pod 的要求。但现阶段应用程序本身尚未启动。有一个以下组件,如果我们用俄语说的话,它被称为调度程序,一般来说,是一个规划器。此处已对图标进行签名。
38:26
Speaker A
Kubernetes 集群由哪些组件组成。哪些 组件是必需的,哪些是可选的,哪些是 由 Google 直接开发的。 您可以添加、扩展或从第三方 开发人员那里获取。最重要的是它们如何 相互作用。我希望您从该图中 了解到主要负载是网络负载。 因此它依赖于 Kubernetes API 和 etcd。 你必须在未来的工作中考虑到这一点。 稍微思考一下这个想法, 哇,我们在 Kubernetes API 上承受了多大的网络负载 。因此,我们研究了 它们如何相互作用。我希望您 注意到每个人都在 与 Kubernetes API 对话,而 Kubernetes API 只与 etcd 对话。也就是说, 在这个图中我们可以看到谁是 连接的源头, 以及它试图连接到哪里。即 用箭头表示。我希望这一点也能留在你的心中。 我们还研究了哪些组件 是必需的,哪些是可选的。最后 ,我们了解这些组件如何
39:35
Speaker A
那么,这个组件起什么作用?它以完全相同的方式访问 Kubernetes API。它会查看 Kubernetes API 中是否有创建 pod 的请求。也就是说,这个控制器生成了这种请求,比如,用这样或那样的参数为我创建一个 pod,等等。并且它描述了这个 pod 的参数,还有调度器,也就是调度器,它已经监控到创建 pod 的请求的出现了。
40:32
Speaker A
在接下来的视频中, 我们将逐步了解 具体应用程序 的细节 、它的工作原理等等 。今天就到这里吧, 再见,回头见。
Topics:Kubernetes容器编排k8s APIetcd控制器调度器kubeletkube-proxy容器网络微服务

Get More with the SozAI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →