【k8s 入门】Kubernetes v1.25 创建 ServiceAccount 未生成 Secret 问题

说明

kubernetes v1.24.0 更新之后进行创建 ServiceAccount 不会自动生成 Secret 需要对其手动创建。

网上的很多教程都没有创建 Secret 这步,应该是之前版本的教程,笔者使用的是 v1.25 版本,这部分需要特别添加。
以下以创建一个 jenkins 用户为例,演示下在新版本下如何操作。该用户的作用是后续会在 jenkins 中调度集群。

【踩坑日记】nginx server_name 配置多域名的坑

问题介绍

项目配置了多个域名,如下,php 代码中有获取 $_SERVER['SERVER_NAME'] 的值。

1
2
3
4
server {
server_name a.demo.com b.demo.com;
...
}

当访问 a.demo.com 时,其获取的值是符合预期的。但是当访问 b.demo.com 时,其获取的值还是 a.demo.com,导致代码中的判断出现错误。

说说 Redis 事务

Redis 事务简介

Redis 只是提供了简单的事务功能。其本质是一组命令的集合,事务支持一次执行多个命令,在事务执行过程中,会顺序执行队列中的命令,其他客户端提交的命令请求不会插入到本事务执行命令序列中。命令的执行过程是顺序执行的,但不能保证原子性。无法像 MySQL 那样,有隔离级别,出了问题之后还能回滚数据等高级操作。后面会详细分析。

Redis 事务基本指令

Redis 提供了如下几个事务相关的基础指令。

说说 Redis pipeline

Redis 客户端和服务端之间是采用 TCP 协议进行通信的,是基于 Request/Response 这种一问一答的模式,即请求一次响应一次。

普通模式

我们先来看下普通模式下,一条 Redis 命令的简要执行过程:

  • 客户端发送一条命令给 redis-server,阻塞等待 redis-server 应答
  • redis-server 接收到命令,执行命令
  • redis-server 将结果返回给客户端

Hexo 修改默认文章路径

修改文章默认 url

在 hexo 中新建的文章,默认的 url 路径是 年/月/日/标题 这样的格式,这其实是不利于 SEO 的。

可以通过修改配置文件 _config.yml 来调整 hexo 生成文章的展示链接。

默认的配置如下:

1
permalink: :year/:month/:day/:title/  

此处笔者修改为如下内容:

认识 Redis client-output-buffer-limit 参数与源码分析

概述

Redis 的 client-output-buffer-limit 可以用来强制断开无法足够快从 redis 服务器端读取数据的客户端。
保护机制规则如下:

  1. [hard limit] 大小限制,当某一客户端缓冲区超过设定值后,直接关闭连接。
  2. [soft limit] 持续时间限制,当某一客户端缓冲区持续一段时间占用过大空间时关闭连接。

该参数一般用在以下几类客户端中:

  • 普通 client,包括 monitor
  • 主从同步时的 slave client
  • Pub/Sub 模式中的 client

【Prometheus+Grafana 系列】监控 MySQL 服务

前言

前面的一篇文章已经介绍了 docker-compose 搭建 Prometheus + Grafana 服务。当时实现了监控服务器指标数据,是通过 node_exporter。Prometheus 还可用来监控很多服务,比如常见的 MySQL。本文就介绍如何通过 mysqld_exporter 来监控 MySQL 指标。

下载安装包

1
2
3
4
5
cd /opt
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
tar xvf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.14.0.linux-amd64 mysqld_exporter
mv /opt/mysqld_exporter /usr/local/

【Prometheus+Grafana 系列】基于 docker-compose 搭建

前言

Prometheus

Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库,基于 Go 语言开发。通过基于 HTTP 的 pull 方式采集时序数据,通过服务发现或静态配置去获取要采集的目标服务器,支持多节点工作,支持多种可视化图表及仪表盘。
贴一下官方提供的架构图:
image.png

Pormetheus 几个主要模块有,Server,Exporters,Pushgateway,PromQL,Alertmanager,WebUI等,主要逻辑如下:

  • Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。
  • 当新拉取的数据大于配置内存缓存区时,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。
  • Prometheus 配置 rules,然后定时查询数据,当条件触发时,会将 alert 推送到配置的 Alertmanager。
  • Alertmanager 收到警告时,会根据配置,聚合、去重、降噪等操作,最后发送警告。
  • 可以使用 API,Prometheus Console 或者 Grafana 查询和聚合数据。