优雅的使用Prometheus Operator

前言

为了方便大家使用prometheus,Coreos出了提供了一个OperatorPrometheus Operator,而为了方便大家一站式的监控方案就有了项目kube-prometheus是一个脚本项目,它主要使用jsonnet写成,其作用呢就是模板+参数然后渲染出yaml文件集,主要是作用是提供一个开箱即用的监控栈,用于kubernetes集群的监控和应用程序的监控。 这个项目主要包括以下软件栈

  • Prometheus Operator
  • Highly available Prometheus
  • Highly available Alertmanager
  • Prometheus node-exporter
  • Prometheus Adapter for Kubernetes Metrics APIs
  • Kube-state-metrics
  • Grafana

说是开箱即用,确实也是我们只需要clone下来,然后kubectl apply ./manifests,manifests目录中生成的是预先生成的yaml描述文件,有诸多不方便的地方,比如说

  • 镜像仓库的地址都在gcr和query.io,这两个地址国内拉起来都费劲
  • 没有持久化存储promethus的数据
……

阅读全文

从部署mysql聊一聊有状态服务和PV及PVC

前言

部署mysql之前我们需要先了解一个概念有状态服务。这是一种特殊的服务,简单的归纳下就是会产生需要持久化的数据,并且有很强的I/O需求,且重启需要依赖上次存储到磁盘的数据。如典型的mysql,kafka,zookeeper等等。

在我们有比较优秀的商业存储的前提下,灰常推荐使用有状态服务进行部署,计算和存储分离那是相当的爽的。在实际生产中如果没有这种存储,才有localPV也是不错的选择,当然local pv其实呢和hostPath是一样的。当然我们在开发测试环境也是可以自己搭建一套简单的如NFS服务,来享受存储和计算分离的爽快感。

kubernetes中定义一种了资源类型Stateful Service即有状态服务,有状态服务需要的持久化数据动态绑定我们可以利用存储的API PersistentVolume(PV)和PersistentVolumeClaim(PVC)来进行需要的相关数据的绑定和存储。

……

阅读全文

在kubernetes运行分布式追踪zipkin

前言

Zipkin是一个开放源代码分布式的跟踪系统,每个服务向zipkin报告计时数据,zipkin会根据调用关系通过Zipkin UI生成依赖关系图。简单的来说就是个http服务器 它支持多种后端存储(“cassandra”,“mysql”,“elasticsearch”)持久化客户端推送过来的数据.

……

阅读全文

在kubernetes上运行SpringCloud配置中心

前言

在分布式系统中,我们的配置管理起来是很麻烦的一件事儿,特别是在如果没有配置中心的时候。在我们java开发中,一般而言会将敏感配置信息(如DB的user,password),数据库的地址,redis地址等等, 一系列配置信息和项目代码解耦,根据每个环境单独配置,这样一来是方便不需要改代码,也不需要在项目中冗余多份,二来是更加的安全。那么分离之后我们将面临的问题是怎么读取这个配置文件:

……

阅读全文

在kubernetes上运行eureka集群

前言

eureka 在springcloud体系中,主要实现一个注册中心的角色,所有的服务都将注册到eureke中,调用用者将从这里通过名称获取到对应的服务的IP集合列表。 作为一个分布式系统eureka在CAP中,选中了AP,优先保证可用性,放弃了强一致性,这样设计也符合注册中心的需要。 当发生网络分区故障(15分钟内超过85%的节点都没有正常的心跳),eureka会启用注册保护,即维持住当前心跳虽然失败的服务列表,并不进行删除。并能正常的提供查询服务(虽然不是最新)和注册服务(即不会同步到其他eureka节点),当网络恢复时,eureka会正确的同步信息,和恢复删除过期节点信息。

……

阅读全文