迁移传统应用到Kubernetes步骤详解

  • 时间:
  • 浏览:1
  • 来源:彩神欢乐生肖_神彩欢乐生肖官方

所有的 Kubernetes YAML 配置文件存储在 manifest 目录下,包括如下配置:

当我们 需要一上来就之后开始做镜像,写配置,之后应该先梳理下要迁移的应用中哪些地方地方都需要作为服务运行,哪些地方是变的,哪些地方是不变的次责。

Bootstrap 脚本的作用是在启动时根据 Pod 的环境变量、主机名或一点都需要区分不同 Pod 和将启动角色的变量来修改配置文件和启动服务应用。

服务划分的原则是最小可变原则,一点同样适用于镜像制作,将服务中不变的次责编译到同一另另十个 镜像中。

可能当我们 只制作了一另另十个 Hadoop 的镜像,而需要启动另另十个 服务,这就要求在服务启动的完后 需要加载不同的配置文件,现在当我们 只需要准备另另十个 服务中需要共同用的的配置的次责。

过程中可能用到的概念和术语初步分类整理如下:

对于为曾接触过 kubernetes 或对云平台的技术细节不太了解的人来说,怎样将应用迁移到 kubernetes 中可能是个头疼的问题报告 ,在行动完后 有必要先了解整个过程中需要用到哪些地方概念和术语,不不利于当我们 在行动中达成共识。

整个迁移过程分为如下多少步骤:

为了讲解整改过程和具体细节,当我们 所有操作需要通过命令手动完成,不使用自动化工具。当您充分了解到其中的细节后都需要通过自动化工具来优化该过程,以使其更加自动和高效,共同减少可能人为操作失误因为的迁移失败。

本文档需要说明怎样在 kubernetes 中开发和部署应用任务管理器池池,可能您我应该 直接开发应用任务管理器池池在 kubernetes 中运行都需要参考 适用于kubernetes的应用开发部署流程。

该脚本共同将另一另另十个 YARN 的日志使用 stdout 输出,便于使用 kubectl logs 查看日志或一点日志分类分类整理工具进行日志分类分类整理。

将 Hadoop 的配置文件和 bootstrap 脚本作为 ConfigMap 资源保存,用作 Pod 启动时挂载的 volume。

所有的配置准备完成后,执行 start-yarn-nm.sh 脚本启动 NodeManager。

可能 kubernetes YAML 中的 container CMD args 中涵盖 -d 则在后台运行 NodeManger 并 tail 输出 NodeManager 的日志到标准输出。

注意: 该例子仅用来说明具体的步骤划分和复杂化性,在生产环境应用还有待验证,请谨慎使用。

从这次责中代码中都需要看多,可能 Pod 的主机名中涵盖 yarn-nm 字段则向 yarn-site.xml配置文件中增加如下内容:

下图为整个架构的示意图,代码和完整配置文件请参考 kube-yarn(不涵盖 ingress、spark 配置),所有的任务管理器池池管理和容器扩容直接使用 Makefile,怎样使用请参考该项目文档。

启动脚本 bootstrap.sh 跟 Hadoop 的配置文件共同保所处 artifacts 目录下。

Hadoop YARN 的 Dockerfile 参考如下配置。

本文已归档到 kubernetes-handbook 【第三章用户指南】的【在Kubernetes中开发部署应用】小节中,一切更新以 GitHub 为准。

根据拆解出来的服务,当我们 需要制作另另十个 镜像:

可能当我们 运行的是 Spark on YARN,之后 Spark 依赖与 Hadoop 镜像,当我们 在 Spark 的基础上包装了一另另十个 web service 作为服务启动。

本文转自中文社区-迁移传统应用到Kubernetes步骤详解 – 以Hadoop YARN为例

YARN 依赖的配置在 artifacts 目录下,涵盖以下文件:

本文旨在说明怎样将已有的应用任务管理器池池尤其是传统的分布式应用任务管理器池池迁移到 kubernetes 中。可能该类应用任务管理器池池符合云原生应用规范(如12因素法则)话语,这么 迁移会比较顺利,之后会遇到一点麻烦甚至是阻碍。具体请参考 迁移至云原生应用架构。

其中 MY_MEM_LIMIT 和 MY_CPU_LIMIT 是 kubernetes YAML 中定义的环境变量,该环境变量又是引用的 Resource limit。

接下来当我们 将以 Spark on YARN with kubernetes 为例来说明,该例子足够复杂化也很有典型性,了解了一点例子都需要帮助当我们 将当事人的应用迁移到 kubernetes 集群上去,代码和配置文件都需要在 这里 找到(本文中加入 Spark 的配置,代码中并这么 涵盖,读者都需要当事人配置)。

镜像制作过程中需要在 Dockerfile 中指定 Entrypoint 和 CMD,哪些地方地方需要在 kubernetes 的 YAML 文件中指定的。

对于像 Spark on YARN 另一另另十个 复杂化的应用,都需要将其划分为三大类服务:

根据业务的形态学 确定最适合的 kubernetes 的资源对象来运行,可能在 YARN 中 NodeManager 需要使用主机名向 ResourceManger 注册,之后需要沿用 YARN 原有的服务发现办法 ,使用 headless service 和 StatefulSet 资源。更多资料请参考 StatefulSet。

该脚本根据 Pod 的主机名,决定怎样修改 Hadoop 的配置文件和启动何种服务。bootstrap.sh 文件的次责代码如下:

其中作为 bootstrap 启动脚本的 bootstrap.sh 也涵盖在该目录下,该脚本怎样编写请见下文。

所有的配置完成后,都需要都需要使用 kubectl 命令来启动和管理集群了,当我们 编写了 Makefile,您都需要直接使用该 Makefile 封装的命令实现次责的自动化。