用 Kubernetes 资源对象创建 Grafana Dashboard

我们在使用 Grafana Dashboard 来展示我们的监控图表的时候,很多时候我们都是去找别人已经做好的 Dashboard 拿过来改一改,但是这样也造成了很多使用 Grafana 的人员压根不知道如何去自定义一个 Dashboard,虽然这并不是很困难。这里我们介绍一个比较新颖(骚)的工具:DARK,全称 Dashboards As Resources in Kubernetes.,意思就是通过 Kubernetes 的资源对象来定义 Grafana Dashboard,实现原理也很简单,也就是通过 CRD 来定义 Dashboard,然后通过和 Grafana 的 API Token 进行交互实现 Dashboard 的 CRUD。

[阅读全文]

AlertManager 何时报警

在使用 Prometheus 进行监控的时候,通过 AlertManager 来进行告警,但是有很多人对报警的相关配置比较迷糊,不太清楚具体什么时候会进行告警。下面我们来简单介绍下 AlertManager 中的几个容易混淆的参数。

[阅读全文]

优秀的 Grafana K8S 插件 - DevOpsProdigy KubeGraf

DevOpsProdigy KubeGraf 是一个非常优秀的 Grafana Kubernetes 插件,是 Grafana 官方的 Kubernetes 插件 的升级版本,该插件可以用来可视化和分析 Kubernetes 集群的性能,通过各种图形直观的展示了 Kubernetes 集群的主要服务的指标和特征,还可以用于检查应用程序的生命周期和错误日志。

[阅读全文]

在 Kubernetes 集群上部署 Kafka

最近在测试日志采集的时候,发现日志数据量稍微大一点,Elasticsearch 就有点抗不住了,对于 ES 的优化可能不是一朝一夕能够完成的,所以打算加一个中间层,将日志输出到 Kafka,然后通过 Logstash 从 Kafka 里面去消费日志存入 Elasticsearch。在测试环境现在并没有一套 Kafka 集群,所以我们来先在测试环境搭建一套 Kafka 集群。

[阅读全文]

Kubernetes 集群均衡器 Descheduler

通过 Descheduler 实现 Kubernetes 的二次调度

在介绍 Kubernetes 集群均衡器之前我们还是非常有必要再来回顾下 kube-scheduler 组件的概念。我们知道基本上所有的分布式系统都需要一个流程或应用来调度集群中的任务来执行,同样 Kubernetes 也需要这样一个调度器来执行任务,我们熟知的 kube-scheduler 组件就是扮演这个角色的,该组件是作为 Kubernetes 整个控制面板的一部分来运行的,并监听所有未分配节点新创建的 Pod,为其选择一个最合适的节点绑定运行。kube-scheduler 是如何来选择最合适的节点的呢?

[阅读全文]

带时光机的 Kubernetes Dashboard - Kubevious

Kubevious 是一个开源的 Kubernetes Dashboard,但是和我们主流的 Dashboard 却不太一样,可以说非常有特色,他将应用程序相关得所有配置都集中在一起,这可以大大节省操作人员得时间,其实这都不是最主要的,主要的是他具有一个 Time Machine(时光机)功能,允许我们回到之前的时间去查看应用的错误信息。

[阅读全文]

在 Golang 中使用 Cobra 创建 CLI 应用

create CLI app with cobra

虽然现在我们使用的大多数软件都是可视化的,很容易上手,但是这并不代表 CLI(命令行)应用就没有用武之地了,特别是对于开发人员来说,还是会经常和 CLI 应用打交道。而 Golang 就非常适合用来构建 CLI 应用,下面我们就将来介绍如何在 Golang 中构建一个 CLI 应用。

对于开发人员来说平时可能就需要使用到很多 CLI 工具,比如 npm、node、go、python、docker、kubectl 等等,因为这些工具非常小巧、没有依赖性、非常适合系统管理或者一些自动化任务等等。

[阅读全文]

优点知识更新日志

近期对我们的在线学习网站 优点知识 做了一些功能更新,无论是体验还是功能都更加完善了。大家对网站有任何的建议或者反馈都可以随时交流。

1.课程目录优化

用不同的 icon 区分视频、文档、直播,并记录每节课的学习进度,用不同的 icon 标识学习状态,更加清晰明了,增加“我已掌握”工,用户可以手动标记是否已经掌握某节课,否则需要学习完本节课后才会变成已学完的状态。

课程章节

2.重构个人中心

[阅读全文]

获取客户端访问真实 IP

通常,当集群内的客户端连接到服务的时候,是支持服务的 Pod 可以获取到客户端的 IP 地址的,但是,当通过节点端口接收到连接时,由于对数据包执行了源网络地址转换(SNAT),因此数据包的源 IP 地址会发生变化,后端的 Pod 无法看到实际的客户端 IP,对于某些应用来说是个问题,比如,nginx 的请求日志就无法获取准确的客户端访问 IP 了。

[阅读全文]

在 Kubernetes 上部署 Vault

很多时候我们可能都是直接将应用程序的密码或者 API Token 之类的私密信息直接暴露在源代码中的,显然直接暴露这些私密信息不是一个好的方式。在 Kubernetes 系统中提供了一个 Secret 对象来存储私密的数据,但是也只是简单的做了一次 Base64 编码而已,虽然比直接暴露要好点了,但是如果是一些安全性要求非常高的应用直接用 Secret 显然也还是不够的。本文就将来介绍如何使用 HashiCorp Vault 在 Kubernetes 集群中进行秘钥管理。

[阅读全文]