• 关于 helm阿里云镜像 的搜索结果

问题

Kubernetes 集群 应用目录概述

青蛙跳 2019-12-01 21:33:01 578 浏览量 回答数 0

回答

阿里云容器服务应用目录功能集成了 Helm,提供了 Helm 的相关功能,并进行了相关功能扩展,例如提供图形化界面、阿里云官方 Repository 等。 微服务是容器时代的主题,应用微服务化给部署和管理带来极大的挑战。通过将庞大的单体应用拆分成一个个微服务,从而使各个微服务可被独立部署和扩展,实现敏捷开发和快速迭代。虽然微服务带来了很大的好处,但同时,由于应用拆分成许多组件,对应着庞大数量的微服务,开发者不得不面对这些微服务的管理问题,如资源管理、版本管理、配置管理等。 针对 Kubernetes 编排下微服务管理问题,阿里云容器服务引入 Helm 开源项目并进行集成,帮助简化部署和管理 Kubernetes 应用。 Helm 是 Kubernetes 服务编排领域的开源子项目,是 Kubernetes 应用的一个包管理工具, Helm 通过软件打包的形式,支持发布的版本管理和控制,简化了 Kubernetes 应用部署和管理的复杂性。 阿里云应用目录功能 应用目录首页 chart 列表的信息包含: chart 名称: 一个 Helm 包,对应一个目标应用,其中包含了运行一个应用所需要的镜像、依赖和资源定义等。 版本:chart 的版本号。 Repository:用于发布和存储 Chart 的仓库,例如官方仓库 stable、incubator 等。 各个 chart 详情页包含的信息不尽相同,例如,可能包含: chart 简介 chart 详细信息 chart 安装到集群的前提条件,例如,预先配置持久化存储卷(pv) 。 chart 安装命令 chart 卸载命令 chart 参数配置项 目前,您可以通过 helm 工具部署和管理应用目录中的 chart,具体请参见利用 Helm 简化应用部署。

1934890530796658 2020-03-31 20:19:41 0 浏览量 回答数 0

回答

阿里云容器服务应用目录功能集成了 Helm,提供了 Helm 的相关功能,并进行了相关功能扩展,例如提供图形化界面、阿里云官方 Repository 等。 微服务是容器时代的主题,应用微服务化给部署和管理带来极大的挑战。通过将庞大的单体应用拆分成一个个微服务,从而使各个微服务可被独立部署和扩展,实现敏捷开发和快速迭代。虽然微服务带来了很大的好处,但同时,由于应用拆分成许多组件,对应着庞大数量的微服务,开发者不得不面对这些微服务的管理问题,如资源管理、版本管理、配置管理等。 针对 Kubernetes 编排下微服务管理问题,阿里云容器服务引入 Helm 开源项目并进行集成,帮助简化部署和管理 Kubernetes 应用。 Helm 是 Kubernetes 服务编排领域的开源子项目,是 Kubernetes 应用的一个包管理工具, Helm 通过软件打包的形式,支持发布的版本管理和控制,简化了 Kubernetes 应用部署和管理的复杂性。 阿里云应用目录功能 应用目录首页 chart 列表的信息包含: chart 名称: 一个 Helm 包,对应一个目标应用,其中包含了运行一个应用所需要的镜像、依赖和资源定义等。 版本:chart 的版本号。 Repository:用于发布和存储 Chart 的仓库,例如官方仓库 stable、incubator 等。 各个 chart 详情页包含的信息不尽相同,例如,可能包含: chart 简介 chart 详细信息 chart 安装到集群的前提条件,例如,预先配置持久化存储卷(pv) 。 chart 安装命令 chart 卸载命令 chart 参数配置项 目前,您可以通过 helm 工具部署和管理应用目录中的 chart,具体请参见利用 Helm 简化应用部署。

1934890530796658 2020-03-31 20:19:17 0 浏览量 回答数 0

云原生Knative训练营

免费开通产品,还有CNCF指尖陀螺等你拿哦~

回答

本文档介绍 Helm 的基本概念和使用方式,演示在阿里云的 Kubernetes 集群上利用 Helm 来部署示例应用 WordPress 和 Spark。 前提条件 通过 Helm 部署应用之前,利用阿里云容器服务来创建 Kubernetes 集群。参见创建Kubernetes集群。 在 Kubernetes 集群创建的同时,Tiller 将会被自动部署到集群之中,并且在所有的 master 节点上自动安装 Helm CLI 以及配置指向阿里云的 Chart 存储库。 查看您集群中 Kubernetes 的版本。 仅支持 Kubernetes 版本 1.8.4 及以上的集群。对于 1.8.1 版本的集群,您可以在集群列表中进行集群升级操作。 背景信息 在 Kubernetes 中,应用管理是需求最多、挑战最大的领域。Helm 项目提供了一个统一软件打包方式,支持版本控制,简化 Kubernetes 应用分发与部署中的复杂性。阿里云容器服务在应用目录管理功能中集成了 Helm 工具,并进行了功能扩展,支持官方 Repository,让您快速部署应用。您可以通过命令行或容器服务控制台界面两种方式进行部署。 本文档介绍 Helm 的基本概念和使用方式,演示在阿里云的 Kubernetes 集群上利用 Helm 来部署示例应用 WordPress 和 Spark。 Helm 基本概念 Helm 是由 Deis 发起的一个开源工具,有助于简化部署和管理 Kubernetes 应用。 Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用 Kubernetes 构建的应用,它包含以下几个基本概念。 Chart:一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula、APT 的 dpkg 或者 Yum 的 rpm 文件。 Release:在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称。 Repository:用于发布和存储 Chart 的存储库。 Helm 组件 Helm 采用客户端/服务器架构,由如下组件组成: Helm CLI 是 Helm 客户端,可以在 Kubernetes 集群的 master 节点或者本地执行。 Tiller 是服务器端组件,在 Kubernetes 集群上运行,并管理 Kubernetes 应用程序的生命周期。 Repository 是 Chart 存储库,Helm 客户端通过 HTTP 协议来访问存储库中 Chart 的索引文件和压缩包。 通过控制台界面部署应用 登录容器服务管理控制台。 在 Kubernetes 菜单下,单击左侧导航栏中的市场 > 应用目录,进入应用目录列表页面。 选择一个 chart(本示例选择 WordPress),单击该 chart,进入 chart 详情页面。 chart详情 在页面右侧,填写部署的基本信息。 集群:应用要部署到的集群。 命名空间:选择命名空间。默认为 default。 发布名称:填写应用发布的名称。 部署基本信息 单击参数,对配置进行修改。 本示例中使用云盘的动态数据卷绑定一个PVC,参见云盘存储卷使用说明。 说明 您需要预先创建一个云盘存储卷(PV),并且存储卷的容量不能小于PVC定义的数值。 修改参数配置 配置完成后,单击创建,部署成功后,默认进入该应用的发布页面。 创建应用 单击左侧导航栏中的路由与负载均衡 > 服务,选择所需的集群和命名空间,找到对应的服务,您可获取 http/https 外部端点的地址。 服务 单击上面的访问地址,进入 WordPress 博客发布页面。 通过命令行部署应用 通过命令行部署应用时,您可以 SSH 登录 Kubernetes 集群的 master 节点 (Helm CLI 已自动安装并已配置Repository)进行操作,参见SSH 访问 Kubernetes 集群。您也可以在本地安装配置 kubectl 和 Helm CLI。 本示例以在本地安装配置 kubectl 和 Helm CLI 并部署 WordPress 和 Spark 应用为例进行说明。 安装配置 kubectl 和 Helm CLI。 在本地计算机上安装和配置 kubectl。 参见通过kubectl连接Kubernetes集群。 若要查看 Kubernetes 目标集群的信息,键入命令 kubectl cluster-info。 在本地计算机上安装 Helm。 安装方法,参见 Install Helm。 部署 WordPress。 下面我们将利用 Helm,来部署一个 WordPress 博客网站。 输入以下命令。 helm install --name wordpress-test stable/wordpress 说明 阿里云 Kubernetes 服务提供块存储(云盘)的动态存储卷支持,您需要预先创建一个云盘存储卷。 得到以下的结果。 NAME: wordpress-test LAST DEPLOYED: Mon Nov 20 19:01:55 2017 NAMESPACE: default STATUS: DEPLOYED ... 利用如下命令查看 WordPress 的 release 和 service。 helm list kubectl get svc 利用以下命令查看 WordPress 相关的 Pod,并等待其状态变为 Running。 kubectl get pod 利用以下命令获得 WordPress 的访问地址。 echo http://$(kubectl get svc wordpress-test-wordpress -o jsonpath='{.status.loadBalancer.ingress[0].ip}') 通过上面的 URL,可以在浏览器上看到熟悉的 WordPress 站点。 也可以根据 Charts 的说明,利用如下命令获得 WordPress 站点的管理员用户和密码。 echo Username: user echo Password: $(kubectl get secret --namespace default wordpress-test-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode) 如需彻底删除 WordPress 应用,可输入如下命令。 helm delete --purge wordpress-test 使用第三方的 Chart 存储库 您除了可以使用预置的阿里云的 Chart 存储库,也可以使用第三方的 Chart 存储库(前提是网络是可达的)。使用如下命令格式添加第三方 Chart 存储库。 helm repo add 存储库名 存储库URL helm repo update 关于 Helm 相关命令的说明,您可以参见 Helm 文档。 参考信息 Helm 催生了社区的发展壮大,越来越多的软件提供商,如 Bitnami 等公司,开始提供高质量的 Charts。您可以在 https://kubeapps.com/ 中寻找和发现已有的 Charts。

1934890530796658 2020-03-31 15:46:51 0 浏览量 回答数 0

问题

Kubernetes 集群 常见问题:Helm 手动升级

青蛙跳 2019-12-01 21:33:14 906 浏览量 回答数 0

回答

容器服务 Kubernetes 版基于原生 Kubernetes 进行适配和增强,简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。本文档为您介绍阿里云容器服务平台的产品架构。 架构 产品特性 特性说明 多Kubernetes集群形态 融合阿里云虚拟化技术,容器服务Kubernetes版支持Dedicated、Managed和Serverless三种集群形式。 Dedicated:可使用ECS、EGS、神龙服务器作为集群节点,实例规格灵活配置,支持丰富的插件。 Managed:在Dedicated的基础上,新增托管Master节点的功能,具备简单、低成本、高可用、无需运维的特点。 Serverless:提供免服务器管理的Kubernetes serverless 服务,简化底层资源管理,灵活扩容,降低资源开销。 阿里云Kubernetes集群管控服务 支持强大的网络、存储、混合集群管理、水平扩容、应用扩展等特性。 阿里云Kubernetes管理服务 支持安全镜像和Helm工具,与阿里云RAM、KMS、日志、监控等产品高度集成,提供一个安全合规的Kubernetes解决方案,为您提供混合云、容器安全、CI/CD、DevOps等增强能力。 便捷、高效的使用方式 容器服务Kubernetes版提供Web Console 和API&SDK。

1934890530796658 2020-03-26 11:24:00 0 浏览量 回答数 0

问题

容器服务Kubernetes版

黄一刀 2020-04-04 03:44:12 67 浏览量 回答数 1

回答

通过配置访问凭证,可以更安全地管控容器镜像或 Helm Chart 的上传和下载。本文介绍如何为企业版实例配置访问凭证。 背景信息 访问凭证独立于阿里云账号及密码。凭证信息包含两类: 固定密码:没有时效限制,请注意妥善保管。如果遗失,可以通过再次设置来重置固定密码。 临时密码:有效时间为 1 小时。若通过 STS 方式请求,临时密码的有效时间则等同于本次请求 STS Token 的有效时间。 操作步骤 登录容器镜像服务控制台,在控制台页面的左上方,选择所需地域。 在左侧导航栏中,选择企业版实例 > 实例列表。 在实例列表页面中,单击所需配置的企业版实例,进入该实例的配置页面。 在左侧导航栏中,选择实例管理 > 访问凭证。 在凭证配置页面,单击设置固定密码。 在设置固定密码对话框中,输入密码并再次确认。 单击确认,完成固定密码的设置。 可选: 如需设置临时密码,请参见 GetAuthorizationToken。 后续步骤 登录企业版实例 获取访问域名,选择专有网络、公网或经典网络域名作为登录域名。 说明 需要提前进入访问控制页面,设置不同网络环境下的白名单。 在终端中输入访问凭证,登录企业版实例。参考示例如下: $ sudo docker login --username=<登录账号> pey-test001-registry-vpc.cn-shanghai.cr.aliyuncs.com

1934890530796658 2020-03-25 12:29:07 0 浏览量 回答数 0

回答

容器服务 ACK(Alibaba Cloud Container Service for Kubernetes)提供高性能可伸缩的容器应用管理服务,支持企业级 Kubernetes 容器化应用的生命周期管理。容器服务 ACK 简化集群的搭建和扩容等运维工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。 容器服务是全球首批通过Kubernetes一致性认证的服务平台,可以为您提供专业的容器支持和服务。 容器服务 ACK 包含了专有版 Kubernetes(Dedicated Kubernetes)、托管版 Kubernetes(Managed Kubernetes)、Serverless Kubernetes 三种形态,方便您按需选择。 专有版 Kubernetes:需要创建3个 Master(高可用)节点及若干 Worker 节点,可对集群基础设施进行更细粒度的控制,需要自行规划、维护、升级服务器集群。 托管版 Kubernetes:只需创建 Worker 节点,Master 节点由容器服务创建并托管。具备简单、低成本、高可用、无需运维管理 Kubernetes集群 Master 节点的特点,您可以更多关注业务本身。 Serverless Kubernetes:无需创建和管理 Master 节点及 Worker 节点,即可通过控制台或者命令配置容器实例的资源、指定应用容器镜像以及对外服务的方式,直接启动应用程序。 产品功能 集群管理 通过控制台一键创建专有版 Kubernetes 集群、托管版 Kubernetes 集群、Serverless Kubernetes 集群,支持 GPU 实例和裸金属服务器,支持创建跨可用区高可用的集群。 提供容器优化的 OS 镜像,提供经过稳定测试和安全加固的 Kubernetes 集群和 Docker 版本。 支持多集群管理,支持跨可用区高可用集群,支持集群联邦管理。 一站式容器管理 网络 提供高性能 VPC/ENI 网络插件,性能优于普通网络方案 20%。 支持容器访问策略和流控限制。 存储 支持阿里云云盘、文件存储 NAS、对象存储 OSS,提供标准的 FlexVolume 驱动。 支持存储卷的动态创建和迁移。 日志 支持日志采集及将采集的日志集成到日志服务。 支持和第三方开源日志解决方案集成。 监控 支持容器级别和 VM 级别的监控。您还可以和第三方开源监控解决方案进行集成。 权限 支持集群级别的 RAM 授权管理。 支持应用级别的权限配置管理。 应用管理 支持灰度发布,支持蓝绿发布。 支持应用监控,应用弹性伸缩。 内置应用商店,支持 Helm 应用一键部署。 支持服务目录,简化云服务集成。 高可用调度策略,轻松打通上下游交付流程 支持服务级别的亲和性策略和横向扩展。 支持跨可用区高可用和灾难恢复。 支持集群和应用管理的 OpenAPI,轻松对接持续集成和私有部署系统。

1934890530796658 2020-03-26 11:22:47 0 浏览量 回答数 0

回答

背景 Kubernetes的优势 Spark on kubernetes相比于on YARN等传统部署方式的优势: 1、统一的资源管理。不论是什么类型的作业都可以在一个统一kubernetes的集群运行。不再需要单独为大数据作业维护一个独立的YARN集群。 2、弹性的集群基础设施。资源层和应用层提供了丰富的弹性策略,我们可以根据应用负载需求选择 ECS 虚拟机、神龙裸金属和 GPU 实例进行扩容,除了kubernetes集群本生具备的强大的扩缩容能力,还可以对接生态,比如virtual kubelet。 3、轻松实现复杂的分布式应用的资源隔离和限制,从YRAN复杂的队列管理和队列分配中解脱。 4、容器化的优势。每个应用都可以通过docker镜像打包自己的依赖,运行在独立的环境,甚至包括Spark的版本,所有的应用之间都是隔离的。 5、大数据上云。目前大数据应用上云常见的方式有两种:1)用ECS自建YARN(不限于YARN)集群;2)购买EMR服务。如今多了一个选择——Kubernetes。既能获得完全的集群级别的掌控,又能从复杂的集群管理、运维中解脱,还能享受云所带来的弹性和成本优势。 Spark自2.3.0开始试验性支持Standalone、on YARN以及on Mesos之外的新的部署方式:Running Spark on Kubernetes ,并在后续的发行版中不断地加强。 后文将是实际的操作,分别让Spark应用在普通的Kubernetes集群、Serverless Kubernetes集群、以及Kubernetes + virtual kubelet等三种场景中部署并运行。 Spark on Kubernetes 准备数据以及Spark应用镜像 参考: 在ECI中访问HDFS的数据 在ECI中访问OSS的数据 创建kubernetes集群 如果已经有阿里云的ACK集群,该步可以忽略。 具体的创建流程参考:创建Kubernetes 托管版集群。 提交作业 为Spark创建一个RBAC的role 创建账号(默认namespace) kubectl create serviceaccount spark 绑定角色 kubectl create clusterrolebinding spark-role --clusterrole=edit --serviceaccount=default:spark --namespace=default 直接使用spark-submit提交(不推荐的提交方式) liumihustdeMacBook-Pro:spark-on-k8s liumihust$ ./spark-2.3.0-bin-hadoop2.6/bin/spark-submit --master k8s://121.199.47.XX:6443 --deploy-mode cluster --name WordCount --class com.aliyun.liumi.spark.example.WordCount --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.executor.instances=2 --conf spark.kubernetes.container.image=registry.cn-beijing.aliyuncs.com/liumi/spark:2.4.4-example local:///opt/spark/jars/SparkExampleJava-1.0-SNAPSHOT.jar 参数解释 —master :k8s集群的apiserver,这是决定spark是在k8s集群跑,还是在yarn上跑。 —deploy-mode:driver可以部署在集群的master节点(client)也可以在非master(cluster)节点。 spark.executor.instances: executor的数量 spark.kubernetes.container.image spark打包镜像(包含driver、excutor、应用,也支持单独配置) 提交基本流程 spark-10.png Running Spark on Kubernetes Spark先在k8s集群中创建Spark Driver(pod)。 Driver起来后,调用k8s API创建Executors(pods),Executors才是执行作业的载体。 作业计算结束,Executor Pods会被自动回收,Driver Pod处于Completed状态(终态)。可以供用户查看日志等。 Driver Pod只能被用户手动清理,或者被k8s GC回收。 结果分析 执行过程中的截图如下:spark-5.png 我们30G的数据用2个1C1G的Excutor处理了大约20分钟。 作业运行结束后查看结果: [root@liumi-hdfs ~]# $HADOOP_HOME/bin/hadoop fs -cat /pod/data/A-Game-of-Thrones-Result/* (142400000,the) (78400000,and) (77120000,) (62200000,to) (56690000,of) (56120000,a) (43540000,his) (35160000,was) (30480000,he) (29060000,in) (26640000,had) (26200000,her) (23050000,as) (22210000,with) (20450000,The) (19260000,you) (18300000,I) (17510000,she) (16960000,that) (16450000,He) (16090000,not) (15980000,it) (15080000,at) (14710000,for) (14410000,on) (12660000,but) (12470000,him) (12070000,is) (11240000,from) (10300000,my) (10280000,have) (10010000,were) 至此,已经能在kubernetes集群部署并运行spark作业。 Spark on Serverless Kubernetes Serverless Kubernetes (ASK) 相比于普通的kubernetes集群,比较大的一个优势是,提交作业前无需提前预留任何资源,无需关心集群的扩缩容,所有资源都是随作业提交自动开始申请,作业执行结束后自动释放。作业执行完后就只剩一个SparkApplication和终态的Driver pod(只保留管控数据)。原理图如下图所示:spark-7.png Running Spark on Serverless Kubernetes ASK通过virtual kubelet调度pod到阿里云弹性容器实例。虽然架构上跟ACK有明显的差异,但是两者都是全面兼容kubernetes标准的。所以on ASK跟前面的spark on kubernetes准备阶段的基本是一致的,即HDFS数据准备,spark base镜像的准备、spark应用镜像的准备等。主要就是作业提交方式稍有不同,以及一些额外的基本环境配置。 创建serverless kubernetes集群 创建以及操作集群的详细步骤参考:操作Serverless Kubernetes集群的方式 本文都是拷贝kubeconfig到本地服务器来访问集群。 选择标准serverless集群:eci-spark-4 基本参数: 1、自定义集群名。 2、选择地域、以及可用区。 3、专有网络可以用已有的也可以由容器服务自动创建的。 4、是否公网暴露API server,如有需求建议开启。 5、开启privatezone,必须开启。 6、日志收集,建议开启。eci-spark-5 注: 1、提交之前一定要升级集群的集群的virtual kubelet的版本(新建的集群可以忽略),只有目前最新版的VK才能跑Spark作业。 2、ASK集群依赖privatezone做服务发现,所以集群不需要开启privatezone,创建的时候需要勾选。如果创建的时候没有勾选,需要联系我们帮开启。不然Spark excutor会找不到driver service。 *制作镜像cache 由于后面可能要进行大规模启动,为了提高容器启动速度,提前将Spark应用的镜像缓存到ECI本地,采用k8s标准的CRD的方式,具体的流程参考:使用CRD加速创建Pod 提交: 由于spark submit目前支持的参数非常有限,所以ASK场景中建议不要使用spark submit直接提交,而是直接采用Spark Operator。也是我们推荐的方式。 Spark Operator 就是为了解决在Kubernetes集群部署并维护Spark应用而开发的。 eci-spark-6 Spark Operator几个主要的概念: SparkApplication:标准的k8s CRD,有CRD就有一个Controller 与之对应。Controller负责监听CRD的创建、更新、以及删除等事件,并作出对应的Action。 ScheduledSparkApplication:SparkApplication的升级,支持带有自定义时间调度策略的作业提交,比如cron。 Submission runner:对Controller发起的创建请求提交spark-submit。 Spark pod monitor:监听Spark pods的状态和事件更新并告知Controller。 安装Spark Operator 推荐用 helm 3.0 helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator helm install incubator/sparkoperator --namespace default --set operatorImageName=registry.cn-hangzhou.aliyuncs.com/eci_open/spark-operator --set operatorVersion=v1beta2-1.0.1-2.4.4 --generate-name --set enableWebhook=true 注:在Serverless Kubernetes安装时不要使用enableWebhook=true选项 安装完成后可以看到集群多了个spark operator pod。eci-saprk-7 选项说明: 1、—set operatorImageName:指定operator镜像,默认的google的镜像阿里云ECI内拉不下来,可以先拉取到本地然后推到ACR。 2、—set operatorVersion operator:镜像仓库名和版本不要写在一起。 3、—generate-name 可以不用显式设置安装名。 4、—set enableWebhook 默认不会打开,对于需要使用ACK+ECI的用户,会用到nodeSelector、tolerations这些高级特性,Webhook 必须要打开,后面会讲到。Serverless Kubernetes 不要打开。 注: 创建spark operator的时候,一定要确保镜像能拉下来,推荐直接使用eci_open提供的镜像,因为spark operator卸载的时候也是用相同的镜像启动job进行清理,如果镜像拉不下来清理job也会卡主,导致所有的资源都要手动清理,比较麻烦。 申明wordcount SparkApplication: apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: wordcount namespace: default spec: type: Java mode: cluster image: "registry.cn-beijing.aliyuncs.com/liumi/spark:2.4.4-example" imagePullPolicy: IfNotPresent mainClass: com.aliyun.liumi.spark.example.WordCount mainApplicationFile: "local:///opt/spark/jars/SparkExampleJava-1.0-SNAPSHOT.jar" sparkVersion: "2.4.4" restartPolicy: type: OnFailure onFailureRetries: 2 onFailureRetryInterval: 5 onSubmissionFailureRetries: 2 onSubmissionFailureRetryInterval: 10 timeToLiveSeconds: 36000 sparkConf: "spark.kubernetes.allocation.batch.size": "10" driver: cores: 2 memory: "4096m" labels: version: 2.4.4 spark-app: spark-wordcount role: driver annotations: k8s.aliyun.com/eci-image-cache: "true" serviceAccount: spark executor: cores: 1 instances: 100 memory: "1024m" labels: version: 2.4.4 role: executor annotations: k8s.aliyun.com/eci-image-cache: "true" 注:大部分的参数都可以直接通过SparkApplication CRD已经支持的参数设置,目前支持的所有参数参考:SparkApplication CRD,此外还支持直接以sparkConf形式的传入。 提交: kubectl create -f wordcount-operator-example.yaml 结果分析 我们是100个1C1G的Excutor并发启动,应用的镜像大小约为 500 MB。 作业执行过程截图:eci-spark-8eci-spark-9 可以看到并发启动的100个pod基本在30s内可以完成全部的启动,其中93%可以在20秒内完成启动。 看下作业执行时间(包括了vk调度100个Excutor pod时间、每个Excutor pod资源准备的时间、以及作业实际执行的时间等): exitCode: 0 finishedAt: '2019-11-16T07:31:59Z' reason: Completed startedAt: '2019-11-16T07:29:01Z' 可以看到总共只花了178S,时间降了一个数量级。 ACK + ECI 在Spark中,Driver和Excutor之间的启动顺序是串行的。尽管ECI展现了出色的并发创建Executor pod的能力,但是ASK这种特殊架构会让Driver和Excutor之间的这种串行体现的比较明显,通常情况下在ECI启动一个Driver pod需要大约20s的时间,然后才是大规模的Excutor pod的启动。对于一些响应要求高的应用,Driver的启动速度可能比Excutor执行作业的耗时更重要。这个时候,我们可以采用ACK+ECI,即传统的Kubernetes集群 + virtual kubelet的方式:eci-spark-9 对于用户来说,只需如下简单的几步就可以将excutor调度到ECI的virtual node。 1、在ACK集群中安装ECI的virtual kubelet。 进入容器服务控制台的应用目录栏,搜索”ack-virtual-node”: eci-spark-10 点击进入,选择要安装的集群。eci-spark-11 必填参数参考: virtualNode: image: repository: registry.cn-hangzhou.aliyuncs.com/acs/virtual-nodes-eci tag: v1.0.0.1-aliyun affinityAdminssion: enabled: true image: repository: registry.cn-hangzhou.aliyuncs.com/ask/virtual-node-affinity-admission-controller tag: latest env: ECI_REGION: "cn-hangzhou" #集群所在的地域 ECI_VPC: vpc-bp187fy2e7l123456 # 集群所在的vpc,和创建集群的时候保持一致即可,可以在集群概览页查看 ECI_VSWITCH: vsw-bp1bqf53ba123456 # 资源所在的交换机,同上 ECI_SECURITY_GROUP: sg-bp12ujq5zp12346 # 资源所在的安全组,同上 ECI_ACCESS_KEY: XXXXX #账号AK ECI_SECRET_KEY: XXXXX #账号SK ALIYUN_CLUSTERID: virtual-kubelet 2、修改应用的yaml 为excutor增加如下参数即可: nodeSelector: type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists 完整的应用参数如下: apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: wordcount namespace: default spec: type: Java mode: cluster image: "registry.cn-beijing.aliyuncs.com/liumi/spark:2.4.4-example" imagePullPolicy: IfNotPresent mainClass: com.aliyun.liumi.spark.example.WordCount mainApplicationFile: "local:///opt/spark/jars/SparkExampleJava-1.0-SNAPSHOT.jar" sparkVersion: "2.4.4" restartPolicy: type: OnFailure onFailureRetries: 2 onFailureRetryInterval: 5 onSubmissionFailureRetries: 2 onSubmissionFailureRetryInterval: 10 timeToLiveSeconds: 36000 sparkConf: "spark.kubernetes.allocation.batch.size": "10" driver: cores: 2 memory: "4096m" labels: version: 2.4.4 spark-app: spark-wordcount role: driver annotations: k8s.aliyun.com/eci-image-cache: "true" serviceAccount: spark executor: cores: 1 instances: 100 memory: "1024m" labels: version: 2.4.4 role: executor annotations: k8s.aliyun.com/eci-image-cache: "true" #nodeName: virtual-kubelet nodeSelector: type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists 这样就可以将Driver调度到ACK,Excutor调度到ECI上,完美互补。 3、提交 效果如下:eci-spark-12 看下作业执行时间: exitCode: 0 finishedAt: '2019-11-16T07:25:05Z' reason: Completed startedAt: '2019-11-16T07:22:40Z' 总共花了145秒,更重要的是Driver直接在本地起,只花了约2秒的时间就启动了。 附录 Spark Base 镜像: 本样例采用的是谷歌提供的 gcr.io/spark-operator/spark:v2.4.4 ECI已经帮拉取到ACR仓库,各地域地址如下: 公网地址:registry.{对应regionId}.aliyuncs.com/eci_open/spark:2.4.4 vpc网络地址:registry-vpc.{对应regionId}.aliyuncs.com/eci_open/spark:2.4.4 Spark Operator 镜像 本样例采用的是谷歌提供的 gcr.io/spark-operator/spark-operator:v1beta2-1.0.1-2.4.4 ECI已经帮拉取到ACR仓库,各地域地址如下: 公网地址:registry.{对应regionId}.aliyuncs.com/eci_open/spark-operator:v1beta2-1.0.1-2.4.4 vpc网络地址:registry-vpc.{对应regionId}.aliyuncs.com/eci_open/spark-operator:v1beta2-1.0.1-2.4.4

1934890530796658 2020-03-20 18:30:16 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播