类别

版本

您正在查看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服务中进行了测试:

部署体系结构和定义

本教程涵盖Multi-container-based部署在Kubernetes上安装以下组件:

  • RapidMiner实时计分代理
  • Rapidminer实时计分Web UIWeb UI
  • 前端代理和,
  • cron容器。

要在Kubernetes上部署RapidMiner实时计分,您需要定义服务部署

卷配置使用四个持久卷,与Docker-based部署部分:

  1. 存储上传文件的卷
  2. 用于存储cron日志文件的卷
  3. 用于存储license数据的卷
  4. 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服务端点:

  1. 公共代理服务端点表示代理容器的公共web接口(端口:443)。
  2. 私有RapidMiner web服务端点表示web容器的私有web接口(端口:80)
  3. 私有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-pvcrapidminer-cron-log-pvcrts-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.61
        443/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.61
        443 / 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中省略它们)