【ML on Kubernetes】第 4 章:机器学习平台剖析

 🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎

📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

📣系列专栏 - 机器学习【ML】 自然语言处理【NLP】  深度学习【DL】

 🖍foreword

✔说明⇢本人讲解主要包括Python、机器学习(ML)、深度学习(DL)、自然语言处理(NLP)等内容。

如果你对这个系列感兴趣的话,可以关注订阅哟👋

文章目录

技术要求

定义自助服务平台

探索数据工程组件

数据工程师工作流程

探索模型开发组件

了解数据科学家工作流程

安全、监控和自动化

介绍 ODH

在 Kubernetes 上安装 ODH 算子

在 Kubernetes 集群上启用入口控制器

在 Kubernetes 上安装 Keycloak

概括

进一步阅读


在本章和接下来的几章中,您将学习并在 Kubernetes 之上安装机器学习ML ) 平台的组件。ML 平台应该能够提供运行 ML 项目的整个生命周期所需的工具,如第 2 章理解 MLOps ”中所述。本章首先以与技术无关的方式定义 ML 平台的不同组件。在后面的部分中,您将看到能够满足每个组件要求的一组开源软件。我们选择这种方法是为了不将您与特定的技术堆栈捆绑在一起;相反,您可以更换您认为适合您的环境的组件。

您将在本书中构建的解决方案将基于开源技术,并将托管在您在第 3 章探索 Kubernetes ”中构建的 Kubernetes 平台上。

在本章中,您将了解以下主题:

  • 定义自助服务平台
  • 探索数据工程组件
  • 探索 ML 模型生命周期组件
  • 解决安全、监控和自动化问题
  • 探索开放数据中心

技术要求

本章包括一些动手设置。您将需要一个配置了Operator Lifecycle Manager ( OLM ) 的运行 Kubernetes 集群。第 3 章探索 Kubernetes”中介绍了构建这样的 Kubernetes 环境。在尝试本章中的技术练习之前,请确保您有一个工作的 Kubernetes 集群。您可以选择使用与第 3 章探索Kubernetes中描述的不同风格的 Kubernetes ,只要集群安装了 OLM。

定义自助服务平台

自助服务被定义为平台的能力,它允许平台最终用户按需提供资源,而无需其他人为干预。以数据科学家用户为例谁需要一个 Jupyter 笔记本服务器实例,该实例在具有 8 个 CPU 的主机容器上运行,以执行他/她的工作。自助式 ML 平台应允许数据科学家通过最终用户友好的界面来配置将在其上运行 Jupyter 笔记本服务器实例的容器。自助服务配置的另一个示例是数据工程师请求配置 Apache Spark 集群的新实例以运行他/她的数据管道。最后一个示例是一位数据科学家,他希望将他们的 ML 模型打包并部署为 REST 服务,以便应用程序可以使用该模型。

自助服务平台的一个好处是它允许跨职能团队以最少的对其他团队的依赖。这种独立性会带来更好的团​​队动力、更少的摩擦和更高的团队速度。

然而,自助服务模型需要治理。想象一下每位数据科学家都需要 GPU 或数据工程师需要数十 TB 的存储空间!自助服务能力很好,但如果没有适当的治理,它也可能会产生问题。为避免此类问题,平台必须由可以控制或限制最终用户可以做的事情的平台团队管理。此限制的一个示例是资源配额。可以为团队和/或个人用户分配配额,并负责在分配的配额内管理自己的资源。幸运的是,Kubernetes 有这个能力,我们的机器学习平台可以利用这个能力来限制团队的资源。

作为治理的一部分,平台必须具有基于角色的访问控制。这是为了确保只有具有正确角色的用户才能访问他们管理的资源。例如,平台团队可能能够更改资源配额,而数据工程师只能启动新的 Spark 集群并运行数据管道。

自助服务平台的另一个方面是工作负载的隔离。许多团队将共享同一个平台,虽然配额将使团队保持在预定义的范围内,但它是至关重要的是,有能力将工作负载相互隔离,以便在同一平台上运行的多个不相关的项目不会重叠。

探索数据工程组件

在本书的上下文中,数据工程是从源系统获取原始数据的过程,生成可用于分析、业务报告和机器学习等场景的可靠数据。数据工程师是构建软件的人,该软件收集和处理原始数据,为数据分析师和数据科学家生成干净且有意义的数据集。这些数据集将构成您组织的机器学习计划的支柱。

图 4.1显示了 ML 项目的典型数据工程领域的各个阶段:

图 4.1 – 机器学习的数据工程阶段

数据工程经常与特征工程重叠。当数据科学家决定哪些特征是对于 ML 用例更有用,他或她可以与数据工程师一起检索当前功能集中不可用的特定数据点。这是数据工程师和数据科学家之间的主要协作点。数据工程师在数据工程块中创建的数据集成为 ML 块中的特征集。

使团队能够执行特征工程的 ML 平台将具有以下组件和流程。

  • 数据摄取:数据摄取是过程在团队了解数据源并构建和部署从一个或多个数据源收集数据的软件。数据工程师了解从源系统读取数据的影响。例如,在从源读取数据时,源系统的性能可能会受到影响。因此,机器学习平台具有工作流调度能力非常重要,以便可以在源系统不太活跃的时间安排数据收集。

ML 平台使团队能够以多种方式从各种来源获取数据。例如,一些数据源允许提取数据,而另一些数据源可能能够推送数据。数据可能来自关系数据库、数据仓库、数据湖、数据池、数据流、API 调用,甚至来自原始文件系统。平台还应该具备理解不同协议的能力,例如,一个消息系统可能有多个协议,例如高级消息队列协议AMQP)、消息队列遥测传输MQTT)和Kafka。换句话说,机器学习平台应该有能力以各种方式从不同类型的数据源收集各种形状和大小的数据。图 4.2显示了平台应该能够从中获取数据的各种数据源:

图 4.2 – 数据摄取集成

  • 数据转换:一旦从各种来源摄取数据,就需要对其进行转换从其将原始形式转换为对 ML 模型训练和其他用例更有用的东西。根据福布斯的一项调查,80% 的数据科学家的工作与为模型训练准备数据有关; 这是数据科学团队普遍认为无聊的阶段。但是,如果数据未转换为适当的形式,则会导致 ML 模型的用处减少和/或效率低下。ML 平台使团队能够轻松编码、构建和部署数据转换管道和作业。该平台抽象了运行和管理数据转换组件(例如 Apache Spark 作业)的复杂性。该平台不仅管理这些进程的执行,还管理运行这些组件所需的计算资源的配置和清理,例如 CPU、内存和网络。
  • 存储:在特征工程过程中,您将在各个阶段读取和写入数据。您可以创建数据集的临时表示以进一步处理,或者您可以编写用于 ML 流程的新数据集。在这些情况下,您将需要可以轻松访问并根据需要进行扩展的存储资源。ML 平台为您的数据集提供按需存储,以便以可靠的方式存储。

现在,让我们看看数据工程师将如何在他们的工作流程中使用这些组件。

数据工程师工作流程

上一节提到的所有能力都是由机器学习平台以自助服务的形式提供的方式。使用该平台的数据工程师通常执行的工作流程如下:

  1. 登录平台:在此步骤中,数据工程师对平台进行身份验证。
  2. 开发环境的提供:在这一步中,数据工程师向平台请求开发环境的资源需求(如CPU数量、内存量和特定软件库)。然后,平台会自动提供请求的资源。
  3. 构建数据管道:在这一步中,数据工程师编写用于数据摄取和数据转换的代码。然后,数据工程师在隔离环境中运行代码以验证其有效性并执行必要的代码重构和调整。
  4. 运行数据管道:在此步骤中,数据工程师根据需要安排代码运行。它可以是具有周期性间隔(例如每小时或每天)的定期计划,也可以是一次性运行,具体取决于用例。

您可以在前面的步骤中看到,除了编写代码之外,所有其他步骤都是声明性的。数据工程师的重点将放在构建代码以摄取和转换数据。流程的所有其他方面都将由 ML 平台处理。这将提高团队的效率和速度。该平台的声明能力将允许团队标准化整个组织的流程,这将减少定制工具链的数量并提高整个流程的安全性。

数据工程流程的主要输出是一组可用的、转换的和部分清理的数据,可用于开始构建和训练模型。

探索模型开发组件

一旦清理过的数据可用,数据科学家就会解决问题并尝试确定什么样的模式对这种情况有帮助。这里的关键是数据科学家的主要角色是在数据中找到模式。ML 平台的模型开发组件探索数据模式、构建和训练 ML 模型,并尝试多种配置以找到最佳配置和算法集,以实现模型的预期性能。

在模型开发过程中,数据科学家或 ML 工程师基于多种算法构建多个模型。然后使用从数据工程流程中收集和准备的数据来训练这些模型。然后,数据科学家使用几个超参数来从模型测试中获得不同的结果。然后将此类训练和测试的结果与其他每个模型进行比较。然后将这些实验过程重复多次,直到达到预期的结果。

实验阶段将选择最合适的算法和配置。然后将标记所选模型以进行打包和部署。

图 4.3显示了 ML 项目的模型开发的各个阶段:

图 4.3 – 机器学习的数据工程阶段

一个机器学习平台,使团队能够执行模型开发将具有以下组件:

  • 数据探索:当数据被可视化为时,我们人类更善于发现模式与仅查看原始数据集相反。ML 平台使您能够可视化数据。作为数据科学家,您需要与具有领域知识的主题专家SME ) 合作。假设您正在分析冠状病毒数据集患者。如果您不是病毒学或医学领域的专家,则需要与能够提供有关数据集、特征关系和数据本身质量的见解的 SME 合作。ML 平台允许您与更广泛的团队共享您创建的可视化,以改进反馈。该平台还允许非技术人员以更加图形化的方式查看数据。这将有助于他们更好地理解数据。
  • 实验:作为一名数据科学家,您会将数据拆分为训练集和测试集,然后开始为给定指标构建模型。然后,您将尝试多种 ML 算法,例如决策树、XGBoost 和深度学习,并对每种算法应用各种参数调整,例如深度学习模型的层数或神经元数。这就是我们所说的实验,该平台使团队能够以自主的方式进行实验。请记住,对于每个实验,您可能对 GPU 等计算资源有不同的要求。这使得平台的自助服务供应能力变得至关重要。
  • Tracking:在做多个实验的时候,你需要跟踪参数用于每个实验及其达到的指标。某些算法可能需要不同的特征集,这意味着您还需要跟踪训练中使用的数据集版本。这样做有两个原因。第一个原因是你需要一份你的实验历史,这样你就可以比较并选择最佳组合。第二个原因是您可能需要与其他数据科学家分享结果。ML 平台使您能够记录实验结果并无缝共享它们。
  • 模型构建和调整:在实验阶段,您已经找到了模型的最佳算法和最佳参数。您已经比较了结果和联系您的模型的指标,并选择了要使用的算法和参数。在此阶段,您将使用这些参数训练您的模型,并将其注册到模型注册表:
    • 模型注册表:作为一名数据科学家,当您对模型感到满意时,您将与您的团队一起部署它。然而,现实世界发生了变化,而你将需要为新的数据集或不同的指标更新您的模型,或者只是为了改进指标。模型的新版本不断出现,ML 平台使您能够跟踪模型的版本。模型版本控制功能将帮助团队比较新模型版本与旧模型版本的效率,并允许团队在需要时将生产中的新模型回滚到以前的版本。
  • 存储:存储不仅在数据工程阶段很重要,而且在模型开发中也很重要。在模型开发过程中,您读取和写入数据在各个阶段。您将数据集拆分为测试数据集和训练数据集,并且您可以选择编写一次,这样您就可以使用不同的模型参数但使用相同的数据集进行试验。实验跟踪模块和模型注册表都需要存储。ML 平台为您的数据集提供按需存储,以便以可靠的方式存储。

现在,让我们看看数据科学家如何在他们的工作流程中使用这些组件。

了解数据科学家工作流程

所有的能力上一节提到的都是由机器学习平台以自服务的方式提供的。数据科学家的典型工作流程如下:

  1. 登录平台:数据科学家向平台进行身份验证。
  2. 开发环境的供应:在这一步中,数据科学家向平台请求开发环境的资源需求,例如 CPU 的数量、内存的数量和特定的软件库。然后,平台会自动提供请求的资源。
  3. 探索性数据分析:在此阶段,数据科学家执行多种类型的数据转换和可视化技术,以了解隐藏在数据中的模式。
  4. 试验不同的算法:在这个阶段,数据科学家将整个数据集分成训练集和测试集。然后,数据科学家应用不同的 ML 算法和超参数来实现所需的指标。然后,数据科学家比较每次训练运行的参数,以选择最适合给定用例的参数。
  5. 模型训练:数据科学家根据上一阶段找到的最优化参数训练模型,并将模型注册到模型注册表中。
  6. 运行模型部署管道:在此步骤中,数据科学家将要作为服务使用的模型打包并构建管道以自动化部署过程。它可以定期安排或一次性运行,具体取决于用例。

您可以在前面的步骤中看到,除了编写代码以促进模型构建和训练之外,所有其他步骤都是声明性的。数据科学家的重点将放在构建更多的数据科学和机器学习工程任务上。流程的所有其他方面都将由 ML 平台处理。这将提高团队的效率和速度,而不是提到一个更快乐的数据科学家。该平台的声明能力还将允许团队标准化整个组织的流程,这将减少定制工具链的使用,从而提高一致性并提高整个流程的安全性。

在下一节中,您将探索 ML 平台的常用服务。这些服务对于使平台在企业环境中投入生产并更易于采用至关重要。

安全、监控和自动化

在本节中,您将查看 ML 平台的一些常见组件,这些组件适用于我们迄今为止讨论的所有组件和阶段。这些组件可帮助您在组织中操作平台:

  • 数据管道执行:数据工程的结果是一个数据管道,用于摄取、清理和处理数据。您已经使用按比例缩小的数据构建了此管道发展目的。现在,您需要使用生产数据运行此代码,或者您希望使用可用的新数据进行计划运行,例如,每周。ML 平台允许您获取代码并在不同环境中自动执行代码。这是一大步,因为该平台不仅允许您运行代码,还将管理代码的所有依赖项的打包,以便它可以在任何地方运行。如果您构建的代码使用的是 Apache Spark,则该平台应允许您自动配置 Spark 集群和运行数据管道所需的所有其他组件的过程。
  • 模型部署:一旦模型准备好使用,它应该可以被使用作为一项服务。如果没有 ML 平台的自动化模型打包和部署能力,打包模型并将其作为服务托管的过程需要一些软件工程工作。这项工作需要与软件工程师和运营团队密切合作,并且可能需要数天甚至数周才能完成。ML 平台自动执行此过程,通常只需几秒钟即可完成几分钟。此过程的结果是部署在环境中的 ML 模型,并可作为服务访问 - 通常作为 REST API。

模型的部署是一方面;随着时间的推移,您可能还需要使用新数据集重新训练模型。该平台还使您的团队能够使用您在训练模型时首次构建的相同训练代码自动执行再训练过程。然后自动重新部署重新训练的模型。这种能力极大地提高了团队的效率,从而可以更有效地利用时间,例如在为业务创造价值的同时应对新的挑战。

  • 监控:监控不仅仅是指能够观察生产中组件的动态,例如监控模型响应时间,而是还使团队能够在事件成为问题之前对其做出响应。一个好的监控平台可以在整个 ML 项目生命周期中提供可观察性,而不仅仅是在生产中进行监控。当您编写代码来处理数据时,您可能需要调整来自多个系统的数据集之间的连接表达式。这是您在开发过程中需要的信息示例之一。ML 平台允许您在开发过程中深入挖掘细节。该平台还提供监控底层 IT 基础架构的功能。例如,当您在模型训练阶段运行代码时,平台会提供有关硬件资源利用率的指标。
  • 安全和治理:您正在构建的平台允许团队自主工作。团队可以随时使用平台中的工具执行工作。然而,谁可以访问什么以及谁可以使用哪些工具的问题证明了成为许多组织的挑战。为此,平台必须具有访问控制能力,并仅向授权用户提供访问权限。该平台的安全组件允许通过标准协议(例如OAuth2OpenID Connect )对用户进行身份验证和授权。您将使用开源组件将身份验证组件引入平台。这平台还使用 Kubernetes 命名空间特性来提供跨不同团队的工作负载隔离共享同一个集群。Kubernetes 还提供了分配硬件资源限制以供各个团队使用的能力。这些功能将使团队能够在组织内的许多不同单位之间共享平台,同时提供明确定义的隔离边界和硬件资源配额。
  • 源代码管理:当您构建数据管道或训练模型时,您写代码。该平台提供与源代码管理解决方案集成的功能。Git是默认的源代码管理解决方案集成平台。

现在,让我们继续介绍开放数据中心ODH )。

介绍 ODH

ODH 是一个开源项目,提供了我们 ML 平台所需的大部分组件。它带有一个 Kubernetes 操作员和一组精选的开源软件组成大部分 ML 平台的组件。在本书中,我们将主要使用 ODH 算子。我们还将在平台中使用 ODH 最初不附带的其他组件。ODH 运算符的一个好处是能够根据您的情况将默认组件交换为另一个。

要构建平台,您将使用以下组件。在接下来的几章中,您将了解每个组件的详细信息以及如何使用它们。现在,你只需要在一个非常高的层次上理解它们的目的:

  • ODH 算子:管理不同组件生命周期的 Kubernetes 算子机器学习平台。它控制和管理 ML 平台中使用的软件组件的安装和维护。
  • JupyterHub:管理实例Jupyter Notebook 服务器及其相关资源。
  • Jupyter 笔记本集成开发环境IDE ) 是主要的数据工程和数据平台中的科学工作区。数据科学家工程师将使用这些工作区为数据工程和 ML 工作流编写和调试代码。
  • Apache Spark:用于处理大型数据的分布式并行数据处理引擎和框架数据集。它提供了广泛的数据摄取连接器来使用来自各种来源的数据。
  • Apache Airflow:一个工作流引擎,可以自动执行和调度数据管道和模型部署。Airflow 协调数据管道的不同组件。
  • Seldon Core:用于将 ML 模型打包和部署为 REST 服务的库。它还具有监控已部署模型的能力。它为流行的 ML 框架提供支持,使其能够将使用 TensorFlow、scikit-learn、XGBoost 和 PyTorch 等框架构建的 ML 模型包装和打包为 REST 服务。
  • Prometheus 和 Grafana:这两个组件为我们的平台。Prometheus 提供度量数据库以记录组件提供的遥测数据Grafana 提供了图形用户界面GUI ) 来可视化捕获的指标。
  • Minio:与 Amazon S3 API 兼容的对象存储提供程序。Minio 组件不是一部分ODH 工具链的一部分,但我们将扩展和配置 ODH 算子以管理 ML 平台上的 Minio 组件。
  • MLFlow:用于跟踪不同模型实验的组件,也可用作模型平台的注册表。MLFlow 组件不是 ODH 工具链的一部分,但我们将扩展 ODH 算子以管理 ML 平台上的 MLFlow 组件

您还将安装一个开源身份提供程序组件。该组件的目标是为所有平台组件提供通用的单点登录功能。我们将使用Keycloak作为身份管理系统,但这可以与您的案例中可能已经存在的基于 OAuth2 的系统进行交换。Keycloak 不是 ODH 的一部分,我们将向您展示如何将它作为一个单独的组件安装在您的 Kubernetes 集群上。

图 4.4显示了作为 ML 平台主要组件的主要开源软件。ODH 可扩展性模型允许您根据要求添加或选择哪些产品用于哪些组件。您可以用其他选择的开源产品替换任何组件。但是,对于本书中的练习,我们将使用此处列出的产品:

图 4.4 – 机器学习平台的主要组件

在下一节中,您将在 Kubernetes 集群上部署 ODH 算子和 Keycloak 服务器。您还将安装和配置入口控制器以接受来自集群外部的流量。

在 Kubernetes 上安装 ODH 算子

在本节中,您将安装 ODH 算子到您的 Kubernetes 集群上。在此阶段,您将不会启用平台的任何组件。安装算子,首先需要为算子注册目录源,然后才能安装。

首先,让我们为 ODH 运营商注册目录。目录源包含元数据,通过这些元数据OLM 可以发现运营商以及它们的依赖关系。ODH 运算符在默认 OLM 目录中不可用,因此我们需要为 OLM 注册一个包含 ODH 元数据的新目录:

1.如果您使用的是minikube,请验证您的 Kubernetes 集群是否正在运行:

minikube status

您应该看到以下响应:

图 4.5 – 通过 minikube 验证 Kubernetes 是否正在运行

如果您的 Kubernetes 集群没有运行,请参阅第 3 章探索 Kubernetes,了解如何配置和启动 Kubernetes 集群。

2.通过执行以下命令验证 OLM 是否已安装并正在运行:

kubectl get pods -n olm

您应该看到以下响应:

图 4.6 – 显示 OLM pod 正在运行的命令输出

确保所有 OLM pod 都在运行。如果您不是这种情况,请参阅如何在集群中安装 OLM部分中的第 3 章探索 Kubernetes

3.克隆Git 存储库并导航到存储库的根目录。此存储库包含在本书范围内构建平台所需的所有源文件、脚本和清单:https://github.com/PacktPublishing/Machine-Learning-on-Kubernetes.git cd Machine-Learning-在 Kubernetes 上。

使用本书源代码中的 YAML 文件注册一个新的目录源操作符:

kubectl create -f chapter4/catalog-source.yaml

4.几分钟后,验证该操作员在您的集群中是否可用:

kubectl get packagemanifests -o wide -n olm | grep -I opendatahub

您应该看到以下响应:

图 4.7 – 确认 ODH 运营商可用

在 Windows PowerShell 上,您可能需要将grep命令替换为findstr

5.现在,为 ODH 运营商创建订阅。回想第三章,订阅对象通过 OLM 触发安装算子:

kubectl create -f chapter4/odh-subscription.yaml

您应该会看到订阅已创建的响应消息。

6.创建后订阅,OLM 将自动安装操作员及其所有组件。通过发出以下命令验证 ODH pod 是否正在运行。豆荚开始出现之前可能需要几秒钟。如果未列出 pod,请等待几秒钟并重新运行相同的命令:

kubectl get pods -n operators

您应该看到以下响应:

图 4.8 – 验证 ODH pod 是否已启动并正在运行

您刚刚在 Kubernetes 集群上安装了 ODH 操作符。请注意,您没有使用部署等通用 Kubernetes 对象来运行您的操作员。OLM 允许您通过订阅对象轻松管理操作员的安装。

在下一部分中,您将安装入口控制器以允许流量进入您的 Kubernetes 集群。

在 Kubernetes 集群上启用入口控制器

回想一下第 3 章探索 Kubernetes,ingress 提供了一种暴露方式使其可访问的特定服务从集群外部。Kubernetes 上有许多可用的入口提供程序,我们留给您为您的集群选择正确的入口提供程序。

如果您使用的是minikube,则需要按照以下步骤启用默认入口:

1.启用基于 NGINX通过发出以下命令为您的集群设置入口控制器:

minikube addons enable ingress

您应该看到以下响应:

图 4.9 – 启用 minikube 入口插件的输出

2.验证入口 Pod 是否在您的集群中运行:

kubectl get pods -n ingress-nginx

您应该看到以下响应:

图 4.10 – 验证 Nginx 入口 pod 是否处于运行状态

现在您已经在集群上启用了外部流量,下一步是为您的 ML 平台安装开源身份验证和授权组件。

在 Kubernetes 上安装 Keycloak

我们将使用 Keycloak ( https://www.keycloak.org ) 作为我们的身份提供者,并添加身份验证和您平台的访问管理功能。钥匙斗篷支持行业标准的安全机制,例如OAuth2OpenID Connect。在本节中,您将安装Kubernetes集群上的Keycloak服务器,登录Keycloak UI验证安装:

1.首先为keycloak应用程序创建一个新的命名空间:

kubectl create ns keycloak

您应该看到以下响应:

图 4.11 – 为 Keycloak 创建新命名空间的输出

2.使用提供的 YAML 文件创建 Keycloak 清单:

kubectl create -f chapter4/keycloak.yaml --namespace keycloak

3.验证keycloak pod 是否正在运行。请注意,--namespace-n标志在kubectl中可以互换:

kubectl get pods -n keycloak

可能需要一段时间才能开始,因为它将从互联网上提取容器图像开始。第一次运行该命令时,您可能会看到READY状态为0/1。这个是正常的。Keycloak pod 运行,您应该会看到以下响应:

图 4.12 – 验证 Keycloak pod 是否处于运行状态

在接下来的几个步骤中,您将为 Keycloak pod 定义和配置入口,以便它可以从集群外部访问。

4.通过发出以下命令获取您的minikube机器的 IP 地址:

minikube ip

您应该看到以下响应:

图 4.13 – minikube 实例的 IP 地址

5.打开chapter4/keycloak-ingress.yaml文件并将KEYCLOAK_HOST字符串替换为keycloak.<THE_IP_ADDRESS_OF_YOUR_MINIKUBE>.nip.io字符串。所以,如果你的minikube的 IP 地址是192.168.61.72,那么字符串值就是keycloak.192.168.61.72.nip.io

文件中有两个地方需要放置这个新字符串。该文件将如图 4.14 所示。不要忘记将更改保存在此文件中。

图 4.14 – 在 keycloak-ingress 文件中更改的 minikube 实例的 IP 地址

将修改后的文件应用到 Kubernetes 集群。这个入口对象将创建从 Kubernetes 集群外部访问 Keycloak 服务器所需的配置。运行以下命令创建入口对象:

kubectl create -f chapter4/keycloak-ingress.yaml --namespace keycloak

您应该看到以下响应:

图 4.15 – 已应用修改的入口

6.通过发出以下命令验证入口对象是否可用:

kubectl get ingress --namespace keycloak

您应该看到以下响应:

图 4.16 – Ingress 对象已创建

7.现在您已经验证 Keycloak 正在运行并通过入口对象公开,请在运行minikube的机器上打开浏览器并访问以下网址。您需要替换正确的 IP 地址,如步骤 5所述:https://keycloak.192.168.61.72.nip.io/auth/。

您将收到证书无效的警告。这是因为 Keycloak 服务器默认使用自签名证书。您只需单击浏览器显示的高级按钮并选择继续访问该网站。

您应该看到以下页面;单击管理控制台链接以进一步进行:

图 4.17 – Keycloak 登陆页面

8.使用登录以下屏幕中的凭据admin/admin。输入凭据后,单击登录

图 4.18 – Keycloak 登录页面

9.验证Keycloak的主管理页面显示如下:

图 4.19 – Keycloak 管理页面

恭喜!您已成功将 ODH 运算符和 Keycloak 安装到 Kubernetes 集群上。

概括

在本章中,您了解了 ML 平台的主要组件以及开源社区项目如何为每个组件提供软件产品。使用开源软件可以让很多人免费使用软件,同时有助于改进组件,同时不断发展并为软件添加新功能。

您已安装在 Kubernetes 集群上设置 ML 平台所需的操作员。您已经安装了入口控制器以允许流量进入您的集群,并安装了 Keycloak 来为您的平台提供身份和访问管理功能。

为我们深入研究 ML 生命周期的每个组成部分奠定了基础。在下一章中,您将学习在您的平台上设置 Spark 和 JupyterHub,从而使数据工程师能够构建和部署数据管道。

进一步阅读

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sonhhxg_柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值