10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

如何利用 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:151925

评论

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

保姆级教程:带你体验华为云测试计划CodeArts TestPlan

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 7 月 PK 榜

低代码应用开发平台 高效构建业务系统

力软低代码开发平台

一文让你从零开始入门 K8s

伤感汤姆布利柏

中移物联车联网项目,在 TDengine 3.0 的应用

爱倒腾的程序员

涛思数据 tdengine 时序数据库

一文了解AppSec,以及如何通过Perforce工具保障应用程序防护

龙智—DevSecOps解决方案

APP开发 应用程序安全 AppSec

​阻抗计算,真的没有那么难!

华秋PCB

工具 电路 阻抗 PCB PCB设计

九章云极发布大模型时代下全新产品系列 ,逐浪算力x软件万亿级市场|TE洞察

TE智库

开源 大模型 AIGC

万字血书Vue—Vue语法

不在线第一只蜗牛

Vue 教程 语法

看北京地铁如何利用数智底座充分发挥数据价值

用友BIP

数智底座

分享6个数据可视化软件工具

互联网工科生

数据可视化 可视化软件

MAYA 2024和之前版本相比有哪些变化?

Finovy Cloud

提高网站可用性需要真家伙,华为云网站高可用解决方案有何亮点?

平平无奇爱好科技

SpringBoot——自定义自动配置与起步依赖

互联网工科生

spring springboot

游戏和电商企业活动频繁,华为云网站安全解决方案如何促进业务发展和增长

平平无奇爱好科技

数据库中用户删除不掉总是报错,依赖如何处理干净?

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

拥抱创新 争创一流 酷克数据入选北京市“专精特新中小企业”

酷克数据HashData

华为扫地僧:揭秘IoT+鸿蒙帮助企业突围物联网安全问题

华为云开发者联盟

物联网 华为云 华为云开发者联盟 企业号 7 月 PK 榜

万物互联时代,互联网企业为什么需要华为云网站安全解决方案?

平平无奇爱好科技

揭秘!用友BIP多维数据库:企业数智化的国产利器

用友BIP

如何克服嵌入式开发中的各种挑战,构建完善工具链并落地最佳实践?

龙智—DevSecOps解决方案

嵌入式 嵌入式开发

5年经验,不会Java性能优化,面试原地翻车

程序员小毕

程序员 后端 JVM java面试 Java性能优化

分享6款常用的开源工具(白嫖党入)

树上有只程序猿

华为云专家出品《字节码编程指南》电子书上线

云计算 字节码编程 华为云

推荐6款开源免费工具

伤感汤姆布利柏

自动化流行于虚拟制作行业,Perforce推出免费API助力

龙智—DevSecOps解决方案

ci API Helix Core 虚拟制作

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