写点什么

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

评论

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

友商科技:热仿真分析咨询点击百万 热设计仿真公司

Geek_2d6073

精选8款银行开发管理系统,提升工作效率

爱吃小舅的鱼

需求管理工具 需求管理软件 需求管理系统

Fish Agent:多语言 Voice-to-Voice 开源语音模型;Runway 推出摄像机运镜功能丨 RTE 开发者日报

声网

拼多多详情API的价值与应用解析

科普小能手

API 接口 API 测试 拼多多API接口 拼多多API 拼多多商品API接口

鸿蒙Banner图一多适配不同屏幕

龙儿筝

5 年 “0” 故障,万亿级城商行的非结构化数据底座

XSKY星辰天合

快递鸟电子面单模板规格大全

快递鸟

快递 电子面单

NFTScan | 10.28~11.3 NFT 市场热点汇总

NFT Research

NFT\ NFTScan

TDengine 签约山东港,赋能港口数字化转型

TDengine

数据库 tdengine 时序数据库

故障演练的逻辑

陈一之

架构设计 混沌工程 故障演练 技术思维

Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

OpenTiny社区

富文本编辑器 OpenTiny 前端开源

软件测试学习笔记丨Flask操作数据库-一对多

测试人

软件测试

快递鸟上门取件API接口代码流程

快递鸟

快递物流

TDengine 荣膺双奖:引领储能与数据库创新

TDengine

tdengine 时序数据库 数据库·

Web3 游戏周报(10.27 - 11.02)

Footprint Analytics

链游

AI Fabric:通往 GenAI 和数据驱动型企业的最快途径

Altair RapidMiner

人工智能 机器学习 数据分析 altair RapidMiner

鸿蒙Flutter实战:01-搭建开发环境

少湖说

flutter 鸿蒙 HarmonyOS NEXT

Zypher Network:全栈式 Web3 游戏引擎,引领服务器抽象叙事

西柚子

提升需求文档清晰度的实用技巧

爱吃小舅的鱼

需求管理 需求文档 需求沟通

互联网大厂钟爱的压测工具分享

优测云服务平台

压力测试、

为什么使用海外云手机进行TikTok矩阵化运营?

Ogcloud

云手机 海外云手机 tiktok云手机 tiktok运营 TikTok矩阵运营

K8s网络基本原理

陈一之

Kubernetes 容器 k8s 网络

Net5.5G智能IP网络峰会成功举办,全球Net5.5G加速商用部署

财见

火山引擎大模型网关 x 地瓜机器人教你玩转主流大模型

火山引擎边缘云

边缘计算 机器人 大模型 边缘智能

小程序多端引流技术上的“降本增效”

FinFish

小程序技术 小程序容器技术 小程序多端引流

软件测试学习笔记丨Flask操作数据库-多对多

测试人

数据库 软件测试 测试开发

如何选择?开发体育赛事直播平台时的源码质量对比!

软件开发-梦幻运营部

TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案

TDengine

tdengine 时序数据库 数据库·

「胖钱包」理论解析:钱包为何将超越协议与应用,赢下「最终用户」争夺战?

TechubNews

存储数据库的传输效率提升-ETLCloud结合HBASE

RestCloud

数据库 HBase 数据传输 ETL 数据集成

逐步教你如何获取DeepL翻译API密钥

幂简集成

DeepL API

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