Posts

用 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 中的几个容易混淆的参数。

在 Kubernetes 集群上部署 Kafka

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

Kubernetes 集群均衡器 Descheduler

在介绍 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 集群中进行秘钥管理。

在 Kubernetes 上部署 Spinnaker

在 Kubernetes 上部署 Spinnaker

Spinnaker 是一种持续交付平台,最初由 Netflix 开发,用于快速、可靠地发布软件变更。Spinnaker 使开发人员可以更轻松地专注于编写代码,而无需担心底层的云基础设施,它可以和 Jenkins 以及其他流行的构建工具无缝集成。很早就想要体验下 Spinnaker 了,但是由于 GFW 的原因尝试了很多次都无功而返,这次解决了代理的问题终于顺利的在 Kubernetes 集群上成功部署上了 Spinnaker。

GitHub CLI 命令行工具使用

github cli

GitHub 被巨软收购以后推出了一系列非常好用的开发者工具,比如前面我们使用过的 CI/CD 工具 GitHub Actions包管理工具 packages,今天我们要为大家介绍的是近来 GitHub 发布的又一个非常有用的工具: GitHub CLI,可以让开发者通过命令行于 GitHub 进行无缝的协同工作,也就是我们直接在命令行终端上就可以进行 pull requests、issues 等其他功能,现在已经发布 Beta 版本,我们可以在 macOS、Windows 或者 Linux 平台上安装 GitHub CLI。