您正在查看9.7 -版本的RapidMiner部署文档点击这里查看最新版本
实时评分模板
此模板虽然与基本生产模板当目标是将RapidMiner进程部署为web服务,并且web服务的响应时间需要非常快时,就变得相关了。
使用它来部署RapidMiner AI Hub在Kubernetes上,使用以下组件:
- 1个RapidMiner AI Hub实例
- 3 RapidMiner Job Agents
- Postgres数据库
- 1实时计分代理
- 平台管理
- 1个KeyCloak实例
有关每个Docker映像的详细描述,请参见图片参考.
系统需求
RapidMiner服务器
最低推荐硬件配置
所需的内存量在很大程度上取决于RapidMiner AI Hub将处理的数据量。就其本身而言,RapidMiner服务只需8GB即可运行。但是,在生产环境中,我们建议使用32GB或更多,具体取决于用户数据,以便为用户提供足够的容量来分析来自实际用例的数据。
每个虚拟机或物理机至少应该具备:
- 四核
- 32 gb RAM
- >20GB可用磁盘空间
实时计分代理
最低推荐硬件配置
实时计分代理是一个轻量级服务。它具有较低的内存占用,并且实际的内存需求由正在运行的进程而不是RTSA服务本身设置。
每个虚拟机或物理机至少应该具备:
- 双核心
- 2 gb内存
指令
所提供的码头工人的图片可以部署到任何Kubernetes集群。
请根据您的环境和需求查看下面的配置。
下面的指南需要一个正在运行的Kubernetes集群。
我们的示例配置在以下Kubernetes服务中进行了测试:
- Amazon Managed Kubernetes Service (Amazon EKS)
- Azure Kubernetes服务(AKS)
- MiniKube(详情请参阅关于minikube的注意事项)
- MicroK8S
部署体系结构和定义
本教程涵盖Multi-container-based部署在Kubernetes上安装以下组件:
- RapidMiner实时计分代理
- Rapidminer实时计分Web UIWeb UI,
- 前端代理和,
- cron容器。
要在Kubernetes上部署RapidMiner实时计分,您需要定义服务,卷和部署.
卷
卷配置使用四个持久卷,与Docker-based部署部分:
- 存储上传文件的卷
- 用于存储cron日志文件的卷
- 用于存储license数据的卷
- RapidMiner实时计分的部署卷
要定义卷,可以应用以下Kubernetes Object Configuration YAML文件。
apiVersion: v1 kind: persistentvolumecclaim metadata: name: rapidminer-upload -pvc标签:app: rapidminer-web spec: accessModes: - ReadWriteOnce资源:reques乐鱼体育安装ts: storage: 10Gi——apiVersion: v1 kind: persistentvolumecclaim metadata: name: rapidminer-cron-log-pvc标签:app: rapidminer-cron spec: accessModes: - ReadWriteOnce资源:requests: storage: 1Gi——apiVersion: v1 kind: persistentvolumecclaim metadata: name: rts-license -pvc标签:app: rapidminer-rts spec: accessModes: - ReadWriteOnce资源:requests: storage: 1Gi——apiVersion: v1 kind: persistentvolumecclaim元数据:name: rts-license -pvc标签:app: rapidminer-rts spec: accessModes:—ReadWriteOnce资源乐鱼体育安装:requests: storage: 100M——apiVersion: v1 kind: persistentvolumecclaim元数据:name: rt -deployments-pvc标签:app: rapidminers -rts spec: accessModes:—ReadWriteOnce资源:requests: storage: 1Gi
服务
要部署示例配置,需要定义3个Kubernetes服务端点:
- 公共代理服务端点表示代理容器的公共web接口(端口:443)。
- 私有RapidMiner web服务端点表示web容器的私有web接口(端口:80)
- 私有RapidMiner实时计分服务端点表示实时计分容器的私有web接口(端口:8090)
注意:
- 在不同的Kubernetes集群上,公共端点的定义可能不同。公共云提供商支持
loadbalance
类型,但是MicroK8S实现需要设置入口
启用公共访问。 - 在MiniKube中测试时,注释块和type: LoadBalancer行可以忽略。请阅读关于minikube的注意事项.
- 强烈建议使用有效的证书。示例服务定义包含使用AWS证书管理器设置用于https卸载的AWS负载均衡器的推荐设置。在受保护的网络中使用,或用于测试(例如。MiniKube或MicroK8S),注释块可以省略,nodePort可以用于所有服务。
要定义服务端点,你可以应用以下Kubernetes Object Configuration YAML文件:
type: Service apiVersion: v1 metadata: name: rapidminer-proxy annotation: Service .beta.kubernetes. kubernetes。io/aws-load-balance -ssl-cert: arn:aws:acm: xxxx - xxxx - x:XXXXXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX service.beta.kubernetes。. io/aws-load-balance -ssl-negotiation-policy: "ELBSecurityPolicy-TLS-1-2-2017-01"Io /aws-load-balance -backend-protocol: "http"Io /aws-load-balance -connection-idle-timeout: "60"Io /aws-load-balance -cross-zone-load- balance -enabled: "false"。io/ web -load-balance - other -resource-tags: "Name=rapidminer-rts-elb"标签:app:实时得分-web角色:web规格:类型:LoadBalancer端口:-名称:rts-proxyhttp端口:443协议:TCP targetPort: rts-proxy-http选择器:app:实时得分-web角色:web——kind: Service apiVersion: v1元数据:名称:实时得分-web标签:app:实时得分-web角色:web规格:端口:-名称:rts- webbuiport端口:81协议:TCP targetPort: rts- webbuiport选择器:app:实时得分-web角色:web——kind: Service apiVersion: v1元数据:名称:实时得分-agent标签:app:实时得分-agent角色:实时得分规格:端口:-名称:rts-scoreport端口:8090协议:TCP targetPort: rts-scoreport选择器:app:实时得分-agent角色:实时得分
部署(pod、容器)
容器使用Deployment Kubernetes对象类型进行部署,该对象类型提供复制,并在本例中从每种类型启动一个副本。
定义环境变量Docker镜像文档.
示例配置定义了以下两种部署:
- RapidMiner实时计分代理pod是用以下配置定义的。的
rts-deployments-pvc
用于为评分部署提供持久性。
由于在Kubernetes pod之间共享卷可能很难设置和维护,下面的示例配置准备在容器启动时从web下载许可信息。
请查看资源限制以适应您的硬件功能。
要决定Kubernetes应该在哪个工作节点上启动pod,首先必须向集群的工作节点添加一个标签,并且使用nodeSelector属性也可以在部署中设置这个标签。
kind:部署apiVersion: apps/v1 kind:部署元数据:名称:real-time scoring-agent标签:app: real-time scoring-agent角色:real-time scoring spec: replicas: 1 selector: matchLabels: app: real-time scoring-agent模板:元数据:标签:app: real-time scoring-agent角色:real-time scoring spec: containers: -名称:real-time scoring-agent镜像:rapidminer/rapidminer- executionscoring:最新端口:-名称:rts-scoreport containerPort: 8090 env: -名称:WAIT_FOR_LICENSES值:“1”—名称:MANAGEMENT_API_ENDPOINT值:http://real-time-scoring-webui:81/资源:请求:内存:2G cp乐鱼体育安装u: 1限制:内存:32G cpu: 1卷挂载:—名称:rt -deployments-pv挂载路径:/ rapidminer-scoring-agent/home/ deploments卷挂载:—名称:rt -deployments-pv persistentvolumecclaims: claimName: rt -deployments-pvc # nodeSelector: # node-label-name: label-value- worker-node- wheresrt -may-started
- RapidMiner实时计分web pod定义如下:的
rapidminer-uploaded-pvc
,rapidminer-cron-log-pvc
,rts-licenses-pvc
用于为上传的文件、日志和license提供持久性。
由于在Kubernetes pod之间共享卷可能很难设置和维护,下面的示例pod配置包含3个容器,因此Kubernetes始终将它们部署在相同的工作节点上,这样它们就可以共享卷。
包括资源限制以供参考,此容器不是资源密集型的。
要决定Kubernetes应该在哪个工作节点上启动pod,首先必须向集群的工作节点添加一个标签,并且使用nodeSelector属性也可以在部署中设置这个标签。
kind:部署apiVersion: apps/v1 kind:部署元数据:名称:实时得分-web标签:app:实时得分-web角色:web spec: replicas: 1 selector: matchLabels: app:实时得分-web模板:元数据:标签:app:实时得分-web角色:web spec:容器:-名称:rapidminer-cron图像:rapidminer/rapidminer-实时得分-cron:最新资源:请求:内存:"100M" cpu: "0.5"限制:内存:"200M" cpu: "0.5" volumeMounts: -名称:乐鱼体育安装rapidminer-upload -pv mountPath: /rapidminer/upload / -名称:rapidminer-cron-log-pv mountPath: /var/log/ -名称:rts-licenses-pv mountPath: /rapidminer/rts_home/licenses/ -名称:real-time-scoring-webui图像:rapidminer/rapidminer-real-time-scoring-webui:最新端口:-名称:rapidminer- webbuiport containerPort: 81资源:请求:内存:"200M" cpu: "0.乐鱼体育安装5"限制:内存:"500M" cpu: "0.5" volumeMounts: -名称:rapidminer- uplodpv mountPath: /var/网址:html/上载-名称:rapidminer-proxy image: rapidminer/rapidminer-real-time- scoringproxy:最新端口:—名称:rt -proxy-http containerPort: 80资源:请求:内存:200M 乐鱼体育安装cpu: 1限制:内存:200M cpu: 1卷挂载:—名称:rapidminer-upload -pv mountPath: /rapidminer/upload readOnly: true卷挂载:—名称:rapidminer-upload -pv persistentvolumecclaims: claimName: rapidminer-cron-log-pv persistentvolumecclaims: claimName: rapidminer-cron-log-pvc—名称:rapidminer-cron-log-pvc—名称:rapidminer-cron-log-pvc:# nodeSelector: # node-label-name: label-value-of-worker-node-where-rt -may-started
部署过程
基于上面显示的对象定义,RapidMiner实时计分可以部署在Kubernetes集群上的所有组件:
- 确保与Kubernetes集群的连接正常
$ kubectl version客户端版本:version。Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}服务器版本:Version . .Info{Major:"1", Minor:"15", GitVersion:"v1.15.2", GitCommit:"f6278300bebbb750328ac16ee6dd3aa7d3549568", GitTreeState:"clean", BuildDate:"2019-08-05T09:15:22Z", GoVersion:"go1.12.5",编译器:"gc",平台:"linux/amd64"}
- 创建并检查卷
$ kubectl apply -f volumes。创建persistentvolumclaim /rapidminer-upload -pvc创建persistentvolumclaim /rapidminer-cron-log-pvc创建persistentvolumclaim /rt -license -pvc创建persistentvolumclaim /rt -deployment -pvc创建$ kubectl获取pv,pvc
- 创建和检查服务
$ kubectl apply -f services。$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rapidminer-proxy ClusterIP 10.103.149.61443/TCP,80/TCP 115s real-time-scoring-agent ClusterIP 10.104.163.156 8090/TCP 115s real-time-scoring-web ClusterIP 10.98.219.140 80 / TCP 115年代
- 创建部署
$ kubectl apply -f real-time-scoring-agentyml部署。$ kubectl apply -f real-time-scoring-webyml部署。应用程序/ real-time-scoring-webui创建
- 检查正在运行的部署
$ kubectl get pod NAME READY STATUS重启AGE realtime -scoring-agent-85c57b9675-6l2fv 1/1运行0 6m6s realtime -scoring-web -66799d6b74-7c8j9 3/3运行0 6m6s
- 检查正在运行的Real-Time Scoring Agent容器/pod的日志(将pad名称替换为上面输出的get pod命令)
$ kubectl logs -f real-time-scoring-agent-85c57b9675-6l2fv[INFO]等待license同步....请通过Web界面上传license [INFO]等待license同步....请在Web界面上传您的license…
在实时计分web Pod的情况下,它有点不同,因为Pod包含3个容器,所以容器也应该在命令中定义:
$ kubectl logs -f real-time- score -web -66799d6b74-7c8j9 -c rapidminer-proxy…[entrypoint.sh]强制文件丢失,等待…[entrypoint.sh]启动nginx…2019/09/02 15:07:46[警告]18#18:"ssl_stapling"被忽略,证书"/rapidminer/upload /certs/validated_cert "中没有找到颁发者证书。Crt " nginx: [warn] "ssl_stapling"被忽略,证书"/rapidminer/upload /certs/validated_cert.crt"未找到颁发者证书"
$ kubectl logs -f real-time-scoring-web -66799d6b74-7c8j9 -c real-time-scoring-web…[Mon Sep 02 15:07:11.778314 2019] [core:notice] [pid 1] AH00094:命令行:'apache2 -D前台'
$ kubectl logs -f real-time- score -web -66799d6b74-7c8j9 -c rapidminer-cron…[entrypoint.sh] Starting cron…
从这里你可以连接到Web UI的方式取决于你的安装:
- 如果部署到云提供商的Kubernetes集群,你会在资源列表中看到一个新的LoadBalancer。乐鱼体育安装
- 对于MikroK8S,你必须定义一个入口,
- 用MiniKube,请看看最后的关于minikube的注意事项部分。
请注意,默认情况下,端口443上的代理容器使用自签名证书,当第一次打开Web UI时,您将看到一个警告。您可以绕过警告,浏览器和代理之间的通信将被加密,但强烈建议将此证书替换为受信任的证书。
限制
- 目前不支持将副本设置为1个以上。
- 部署新证书后,需要重新加载反向代理,命令如下:
Kubectl exec -it ' Kubectl get pods | grep webui | awk '{print $1}' ' ' -c rapidminer-proxy——/etc/init.d / nginx重载
关于minikube的注意事项
在默认的MiniKube安装中,集群资源被限制在一个非常低的级别。乐鱼体育安装使用以下命令可以永久解除这些限制:
minikube config set内存16384 minikube config set cpu 8 minikube config set磁盘大小200000MB
如果您使用的是linux工作站并安装了docker,则可以使用vm-driver没有
选项,在这种情况下,所有集群服务和部署的对象都将在现有的docker引擎上运行。要永久设置此属性,可以使用以下命令:
Minikube config set vm-driver none
在使用vm-driver没有
选项,minikube API服务器可以绑定到你的主机:
启动——apisserver -ips 127.0.0.1——apisserver -name localhost
上述配置在删除并启动minikube命令后生效。
Minikube不支持负载均衡器,所以请修改services.yml
文件:
- 删除完整的"annotations:"块
- 删除“type: LoadBalancer”行
- 在每个服务定义的“spec:”行后面添加一行“type: NodePort”
要查找暴露的端口,请在部署过程完成后运行以下命令:
minikube服务列表 |-------------|-------------------------|----------------------------| | 命名空间名称| | URL | |-------------|-------------------------|----------------------------| | 默认http://10.103.149.61:31871默认| rapidminer-proxy | | | | real-time-scoring-agent http://10.103.149.61:31488 | | | |违约real-time-scoring-webui | http://10.103.149.61:30274 | |-------------|-------------------------|----------------------------|
另外:
$ kubectl get services | grep proxy rapidminer-proxy ClusterIP 10.103.149.61443 / TCP 80 / TCP 8平方米
根据上面的输出,您可以在浏览器中通过以下url打开Web UI:
- https://10.103.149.61:443/rts-admin/(使用HTTPS协议)
- http://10.103.149.61:80/rts-admin/(使用HTTP协议)
(如果您使用默认的80和443端口,可以从url中省略它们)