写点什么

如何利用 Rancher 商店搭建 es 和 beat

  • 2020-05-16
  • 本文字数:3775 字

    阅读完需:约 12 分钟

如何利用Rancher商店搭建es和beat

Rancher 提供了一个 Charts 应用商店(名为 Catalog),让用户可以轻松地重复部署任何应用程序。Rancher 应用商店可以理解为 helm 源或 charts 仓库;启用后,找到自己想要部署的应用,即可直接通过 helm 模板进行部署。在部署的时候,有些问答就是重置默认 key-value 配置的。

配置 Rancher 应用商店

全局启用、配置应用商店


在默认状态下,只开启基于 Library 源的应用商店,这个源由 Rancher 官方维护,稳定性较强。"Helm Stable"由 helm 官方维护,稳定性也不错,但没有针对 Rancher 进行优化;"Helm Incubator"由 helm 社区进行维护,稳定性一般。我们可以都设为 enable 后,进行使用。

项目中启用应用商店


直接点击【Launch】启用,启用后会发现很多应用的 helm 源(如下图)。


添加其他 Charts 仓库

可以添加自己私有 Chart 仓库、以及其他企业的(如阿里、elastic、bitnami)仓库到应用商店;



用户可以根据自己的情况灵活选择【全局、集群、项目】三个范围内的资源。如果添加为项目范围的,只能在此项目中使用此 helm 源(商店);如果使用私有 helm 源,则需要提供用户名和密码。


下面罗列了几个比较重要的 charts 仓库地址:


阿里 charts 仓库:

https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

bitnami:

https://charts.bitnami.com

elastic :

https://helm.elastic.co


如果您想要添加 elastic helm 源:



在应用商店搜索 elastic,您将会发现有很多 Elastic-Helm 可供选择。



话已至此,接下来开始实战演练。

实 战

利用 Rancher 应用商店搭建 elasticsearch+kibana+apm-server

在 Rancher 应用商店搜索所需应用


首先,在 Rancher 应用商店搜索 efk;然后,我们选择来自 Library,因为这个已经集成了 elasticsearch+kibana+fluent;接着,点击【View Details】,进入配置自定义页面。



您可以指定命名空间,如果不指定就会部署到默认的 efk 中。


选项配置


jvm 也可以根据情况来调整 ,默认的 512 m 已经可以满足需求。如果想要调整到 1g 的话,那么在一台机器上运行多个实例会比较吃力,当然,如果机器性能好,可以适当调大一些。


使用默认镜像选择 false 后,就可以指定镜像,这里面镜像版本相对落后,可以从 elastic 官网镜像https://www.docker.elastic.co/#中获取到当前最新稳定版,然后填写进去(此处镜像名称和 tag 输入框不在一起)。这里不需要 f(luent)就不启用,镜像名称也无需修改。



调整与完善


  • elasticsearch 参数调整


自定义配置完成后点击【Launch】,待镜像都拉取完成后,根据提示继续完善和调整。这里面 elasticsearch 组件默认使用的是空数据,我们如果修改为持久卷的话 ,无论是主机映射,还是持久申明的卷,都要给 777 权限。



在本例中没有搭建存储平台,因此采用了本地 Local Node Path 做的持久卷(和主机目录映射差别不大),由于主机映射的目录只能被 1 个 elasticsearch 使用,所以在 configmap 中,变量 discovery.zen.minimum_master_nodes 此处修改为 1(这样处理之后把 elasticsearch 主机调度到一台机器上即可)。discovery.type = single-node 如果上个参数修改为 1,discovery.zen.ping.unicast.hosts 这个配置在 7.0 版本后已经不建议使用了 ,可以去掉。


若继续使用默认的空数据卷,elasticsearch 单 pod 也可以按照这种方式修改,具体环境变量参数如下图(在 Resources-config maps 中可以找到这些变量)



注:node.data=true 需要添加这个参数以避免多次安装出现的问题


  • kibana 参数调整


首先查看对应镜像版本的说明文档:


https://www.elastic.co/guide/en/kibana/7.1/docker.html#environment-variable-config



然后和 kibana 的 configmaps 中定义环境变量参数进行对比。



若还想调整 es 和 kibana 日志,也可以在环境变量中设置:


  • kibana 的设置:



  • es 设置:


logger.org.elasticsearch.transport warn
复制代码


部署 apm-server


在应用商店搜索:apm-server,进入查看详情的页面,然后把此应用指定到和 efk 应用同一个命名空间里。


  • apm-server 配置文件和环境变量的调整


到 secrets(有的是 config map)进行配置, 有个名称为 apm-server.yml 的 key,其 value 按照下图修改,把数据写入文件的配置改为写入到 elasticsearch 中。



另外,需要在环境变量中加入两个参数:



因为这是从应用商店安装的 apm-server,默认把数据存到 file,前面修改了输出为 elasticsearch,这里再把输入到文件设为 false(手动部署不需要进行此项操作,应用商店的需要检查一下)。


  • 查看 apm-server,进行验证




然后点击【Launch APM】,即可开始使用。根据页面提示把 apm-agent 嵌入被测应用后,再查看 apm-server 采集到的数据。



若探针采集的数据已经发送,点击进去即可查看详细数据。

手动部署 filebeat+metricbeat+packetbeat 向 es 发送数据

部署 filebeat


这一镜像详情里提供了 Kubernetes 部署的 yaml,稍作修改就可以使用:


https://www.elastic.co/guide/en/beats/filebeat/版本号/running-on-kubernetes.html


下载所需的 yaml 后,修改命名空间到自己制定 ,直接在 Rancher 中部署完成后修改输出 elasticsearch 地址(config maps 中),如果是在环境变量中定义 elasticsearch 地址,那么直接在环境变量中修改即可,这个视情况而定。


部署 metricbeat


部署 metricbeat 有些复杂,官方提供了(具体下载根据版本情况)Kubernetes 所需的 yaml 文件:


https://www.elastic.co/guide/en/beats/metricbeat/6.6/running-on-kubernetes.html


把官网提供的 yaml 下载下来后,用 Rancher 导入到 kube-system 空间中。会部署两个 metricbeat,一个是 daemonset,一个是 deployment,deployment 可以暂停。如果没有 kube-state-metrics 组件,因为此前设定了依赖关系,也会自动部署一个。


然后修改配置文件 config-map :


第一个配置文件 metricbeat.yml:设置抓取的信息要输入到正确的 elasticsearch 和 kibana 中。



或 es 输入直接设置为:


output.elasticsearch.hosts: ['${ELASTICSEARCH_HOST}']
复制代码


把多余的变量删除掉,直接把 ELASTICSEARCH_HOST 在环境变量中定义为 http://es_ip:port


第二个配置文件 kubernetes.yml:



需注意,第一个 hosts: [“localhost:10255”] 修改为 hosts: [“https://${HOSTNAME}:10250”]


参照:


https://www.elastic.co/guide/en/beats/metricbeat/current/running-on-kubernetes.html红帽的配置方法


然后,把/etc/kubernetes/ssl/certs/serverca、/etc/kubernetes/ssl/kube-node.pem 和/etc/kubernetes/ssl/kube-node-key.pem 在工作负载界面通过主机映射挂载进去即可 (如果没有这些证书文件,则无法从相关接口获取数据,这些文件都是用于鉴权的)。


最后在环境变量中把正确的 es 地址信息填写进去即可完成。


部署 kube-state-metrics


如上图所用到 kube-state-metrics 的数据,会自动部署;但如果 kube-state-metrics 没有部署成功,后者提供的镜像有问题该如何解决呢?


我们可以从https://github.com/kubernetes/kube-state-metrics/blob/master/kubernetes/kube-state-metrics-deployment.yaml 找到正确的镜像文件名称,对照修改镜像名称为:quay.io/coreos/kube-state-metrics:v1.5.0 即可完成部署(现在可能为 1.6 版本)。这一地址也有部署需要的各种 yaml 文件,但需要注意不同的版本。


我们把 kube-state-metrics-service.yaml、kube-state-metrics-service-account.yaml、kube-state-metrics-deployment.yaml 等所有 yaml 文件下载下来,先导入 SA(service-account)类的 yaml,剩下的 yaml 再逐个导入。由于 master 版本无法确定具体的版本,建议选用 release 中的具体版本,再通过 Rancher 把这些 yaml 导入到系统空间"kube-system"。


yaml 文件里面所包含的多个镜像仓库是谷歌的,如果您无法“科学上网”,可以换成其他公司的同名镜像:如,image: k8s.gcr.io/addon-resizer:1.8.3,也可以在 dockerhub 上搜到其他公司提供的 image: siriuszg/addon-resizer:1.8.4,笔者没有搜索到 1.8.3 就选用更高版本,1.8.4,一般原则是相同版本,然后选择 dockerhub 排名较高的镜像。


  • 部署完成后,把 kube-state-metrics 的 8080 端口映射出来,我们通过浏览器访问进行验证:

  • 访问 kube-state-metrics 页面会显示健康 “/health” 相关指标。

  • 最终采集到的数据在 kibana 呈现验证:



部署:packetbeat


这一操作相对简单,官方提供了 Docker 的部署方式,您对照参数部署到 Rancher 即可:


https://www.elastic.co/guide/en/beats/packetbeat/current/load-kibana-dashboards.html



另外,还要增加–strict.perms=false -e -E output.elasticsearch.hosts=ip:port 使数据发送到之前搭建的 es 里。


–net=host 在 RancherUI 对应的操作为:在 networking 模块把"Use Host’s Network Namespace"设为真。



packetbeat 是用于采集 host(宿主)机器的数据,如果部署到容器中,有些数据可能抓取不到。解决这一问题,可能需要提权,也可以在 RancherUI 最后配置项"Add Capabilities" 里面把下面两项增加上。



经过多次验证,把如下文件挂载到容器,基本和在 host(宿主)机器上部署 packetbeat 效果一样。



注意

把主机时间也要映射到所有的容器中,避免容器时间不一致导致的一系列问题。


作者简介


陈正林,Rancher 深度爱好者,多年互联网运维从业经验,负责过公司产品容器化项目,是 DevOps 和 CI/CD 践行者。博客地址:https://blog.zhenglin.work


2020-05-16 17:151569

评论

发布
暂无评论
发现更多内容

任务分级技术:突破数据分层/加载场景下性能瓶颈

焱融科技

数据分层 任务分级技术 数据加载

初学者的终极SEO内容指南

九凌网络

轻松同步文件与代码,Beyond Compare 4是您的得力助手

Rose

win版Key Metric Software FolderSizes(磁盘空间管理工具) v9.6.484 中文特别版

iMac小白

win版Autodesk Maya 2025(玛雅2025) v2025.1.0.0 x64中文特别版

iMac小白

win版Affinity Photo(图像处理软件)中文直装版

iMac小白

生成式AI时代,亚马逊云科技如何助力企业全球化创新发展

Lily

深入了解安全相关的 HTTP 头信息

Apifox

程序员 Web 安全 HTTP http2

win 版Affinity Publisher 2(逆天排版神器)特别版

iMac小白

Hype 4 Pro:无需代码,轻松创建交互式网页

Rose

PostgreSQL技术内幕(十六)如何写一个执行器算子?

酷克数据HashData

执行器

win版Serif Affinity Designer(矢量图处理工具)直装版

iMac小白

TiDB 黑科技工具集之 dbgen(造数工具)

TiDB 社区干货传送门

实践案例

敏捷开发最佳实践:需求管理实践案例之业务驱动开发

爱吃小舅的鱼

需求管理 敏捷实践

Topogun 3 mac版:帮助您修改和/或重新创建数字 3D 模型的边缘流

Rose

微店商品详情数据接口:淘宝代购系统的连接桥梁

tbapi

微店数据接口 微店代购系统

win版Power-user Premium(Excel插件) v1.6.1825 特别版

iMac小白

亚马逊云科技助力所思科技打造出海游戏爆款,保障全球百万玩家在线畅玩

Lily

win版 Tower Pro(Git客户端) v7.1.483 特别版

iMac小白

Tower下载 Tower破解版

win版Autodesk 3DS MAX 2025 (3Dmax2025) v2025.1 x64 中文特别版

iMac小白

autodesk maya 2025.1破解版(玛雅2025中文版) 下载

Rose

MacDroid Pro,你的Android设备管理器,一键管理,高效便捷

Rose

媲美PS的修图软件 Pixelmator Pro for Mac v3.6.0中文直装版

Rose

Console新特性演示

不卡科技

Vue 前端 控制台 admin 流媒体技术

Audio Hijack for Mac 音频录制软件 v4.4.2直装版

Rose

自动化测试框架如何选型?

老张

自动化测试 测试框架 技术选型

win版Remote Desktop Manager Enterprise(远程桌面管理器RDM)特别版

iMac小白

如何利用Rancher商店搭建es和beat_文化 & 方法_Rancher_InfoQ精选文章