自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (1)
  • 收藏
  • 关注

原创 python异步调用ansible sdk

最近有个需求,运维平台(python+vue开发的)需要做一个批量任务功能,打算采用ansible_runner这个sdk去实现。选型:由于在生产中我们往往需要并发执行多种任务,且需要实时观测执行的进度,所以采用run_async方法做开发。功能需求:前端选择 需要执行的playbook,选择需要执行的主机,然后运行任务,并且实时返回结果。run_async:异步执行,调用该方法后不会阻塞,playbook 会在后台运行;run: 同步执行,调用该方法后会阻塞,直到 playbook 执行完成;

2024-07-29 14:17:13 362

原创 全网最全linux文件存储原理(文件删除空间不释放排查)

linux文件存储原理、文件删除原理

2024-01-25 10:49:42 564

原创 基于jenkins+k8s实现devops

由于jenkins运行在k8s上能够更好的利用动态slave进行构建。所以写了个部署教程,亲测无坑

2023-09-20 10:17:08 1232 1

原创 kubernetes-operator开发教程(基于kubebuilder脚手架)

Operator是什么?Kubernetes Operator是一个自定义控制器,用于通过自动化操作来管理复杂应用或服务。实现原理是什么?Kubernetes Operator的实现原理基于自定义控制器(Controller)和自定义资源定义(CRD)。

2023-09-11 17:13:17 2027 4

原创 alertmanager告警存储方案

背景:由于alertmanager没有历史告警存储功能。在工作中我们可能需要 收集历史告警信息进行数据分析,找到系统的瓶颈,从而提高稳定性。实现方法:go语言写一个 针对alertmanager的webhook 程序。收集告警信息进行过滤然后存入es中。

2023-07-12 11:26:44 476

原创 Argo CD 教程(gitee+ ArgoCD + Argo-rollouts +k8s 实现devops灰度发布)

Argo CD 教程(gitee+ ArgoCD + Argo-rollouts +k8s 实现devops灰度发布)

2022-06-30 10:24:45 3106

原创 挑战全网最全之django REST framework(DRF)教程

一、认识DRF1、restful简介在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。restful是一种后端API接口规范1.1 http动词对于资源的具体操作类型,由HTTP动词表示。常用的HTTP动词有下面四个(括号里是对应的SQL命令):GET(SELECT):从服务器取出资源(一项或多项)。POST(CREATE):在服务器新建一个资源。PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

2022-04-26 17:30:22 33103 4

原创 挑战全网最全之django系列

挑战全网最全django教程

2022-03-20 20:57:31 1883 1

原创 docker-compose一件部署prometheus生态(新增VM远程存储方案)

背景:由于to G项目大部分是私有化交付的,所以监控软件必须部署在内网。为了减少部署成本,决定采用docker-compose+docker 进行一键部署。即使是不懂docker的运维人员,也能通过简单的命令进行部署。介绍:prometheus+alertmanager+grafana+consul+node-exporter。2、将相应配置文件从容器中拷贝出来本机(prometheus、alertmanager)对应的文件挂载请自行创建。

2022-02-22 09:40:55 3109

原创 挑战全网最全之python教程

python最全教程、知识体系

2021-06-08 11:17:07 673 2

原创 k8s service如何实现流量转发

对于每个后端 Pod,kube-proxy 都会为其创建一个 KUBE-SEP-* 链(Service Endpoint 链),这些链中的规则负责将目标地址转换为对应 Pod 的 IP 和端口。在 NAT 表中的 PREROUTING 链和 OUTPUT 链(用于本节点流量),创建规则来匹配目标 IP 为 app1 服务的流量,并引导到一个服务链,如 KUBE-SVC-XXXXXX。目前k8s上创建一个service指向后端 3副本的 deployment,具体是如何实现流量转发到pod的。

2024-09-11 11:36:11 1206

原创 k8s证书更新

k8s证书更新

2024-08-28 18:00:32 236

原创 prometheus高可用解决方案(VictoriaMetrics )

数据去重的目的是处理多个 Prometheus 实例同时采集同一组指标数据的情况,防止在查询时出现重复的时间序列。在使用 VictoriaMetrics 时,数据去重通常是在查询时进行的,而不是在写入时。VictoriaMetrics 支持通过配置标签的方式来实现数据去重,从而保证在从多个 Prometheus 实例收集数据时,查询结果不会出现重复数据。VictoriaMetrics 可以从多个 Prometheus 实例接收数据,并根据配置进行去重,确保数据的一致性;配置远程写入(两个节点都要配置)

2024-08-19 17:12:51 515

原创 redis内存溢出排查

记录一次生产环境redis内存排查

2024-08-16 15:16:19 504

原创 mysql服务器CPU利用率过高排查

监控平台告警mysql服务器CPU利用率过高。当时第一反应是平时的CPU利用率一直都在50%以下,怎么会突然过高呢?怀疑是有某些sql语句导致的。总结:通过利用率过高的mysql线程id找到 对应的执行sql ,然后通过EXPLAIN去优化查询语句。记录高CPU利用率的线程ID,例如:12345。2、使用top查找高CPU利用率的线程ID。看到有一条长sql执行了2min还没结束。结论:是这条sql导致的CPU利用率过高。1、通过ps命令查找mysql进程ID。3、找到线程对应的sql语句。

2024-07-16 11:23:13 366

原创 k8s pod内存驱逐问题解决

pod内存驱逐问题排查

2024-06-24 09:22:14 508

原创 如何优化高并发TCP链接中产生的大量的TIME_WAIT的状态(nginx)

在 TCP 连接的生命周期中,TIME_WAIT 是连接终止过程中的一个状态TIME_WAIT 状态有两个主要目的:1、确保最后一个 ACK 包的可靠传输2、允许旧的重复数据包消失。

2024-06-13 16:39:02 539 1

原创 Coredns搭建DNS服务

CoreDNS 是一个灵活、可扩展的 DNS 服务器,常用于 Kubernetes 环境中,但也可以在其他场合单独部署。

2024-05-09 17:54:05 1178

原创 mysql主从复制教程

主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库。

2024-01-10 16:44:54 437

原创 k8s pod网络排查教程

k8s pod网络排查(nsenter)

2023-12-19 16:38:47 1049

原创 五分钟搞懂python生成器迭代器

生成器和迭代器都是Python语言中的重要概念。由于这两个概念比较抽象,但看文字比较难理解,所以本次我将概念和案例结合在一起,这样能够更好得搞懂这些知识点。

2023-09-19 12:05:13 266

原创 linux 编译部署python环境

由于开发环境可能需要用到多个python版本。rpm,dpkg安装不好管理,容易照成版本混乱。所以这里采用编译部署。如果需要下载其他版本python环境, 该方法同样试用。

2023-09-15 09:35:27 258

原创 Linux三剑客看这一篇就够了(awk、sed、grep)

linux三剑客详解

2023-07-04 17:13:35 158

原创 基于loki的日志收集方案

基于loki的日志处理方案

2023-06-01 14:57:17 1426

原创 基于django实现RBAC权限管理

思路:自己写一个权限类集成PermissionRequiredMixin,然后根据请求的方法和用户的权限做比较。例如 用户发送POST ,就判断用户是否对该对象有add 的权限。背景:网上看了一些django rbac的实现文章,感觉弄得比较麻烦。没有django自带的那套权限管理利用起来。所以就自己写了一套。优势:可以基于django用户管理快速实现rbac。缺点:颗粒度不够,无法限制到单个对象。

2023-04-09 11:09:56 641 1

原创 LVM底层原理(生产故障排查)

基本上,LVM 最主要的用处是在实现一个可以弹性调整容量的文件系统上, 而不是在创建一个效能为主的磁碟上。如果使用交错模式,要注意,当任何一个分区损坏时,所有的数据都会“损坏”。如果要强调性能与备份,那么就直接使用 RAID 即可,不需要使用 LVM。背景:之前在生产上遇到磁盘空间充足但是无法写入的情况,后面深入了解了LVM存储的一些原理,因此记录一下。存储架构 : 虚拟化存储平台 ——> 虚拟机(多块磁盘制作LVM)扩展: LVM架构下的存储,数据是怎么写进LV的?3、虚拟化平台存储分配原理。

2023-02-21 12:28:19 272

原创 jenkins-pipeline集成sonarqube代码扫描

背景:jenkins-pipeline集成sonarqube代码扫描,根据代码检测的状态去判断是否继续执行流水线环境:jenkins插件:可根据执行报错自行下载(主要是我也忘了,操作很简单)注意:具体安装可看devops专栏,docker-compose一键部署jenkins-pipeline

2022-12-06 11:36:37 934

原创 docker-compose部署sonarqube(亲测无坑,生产案例)

为了简单高效地部署及管理sonar,决定采用docker-compose版本进行部署。亲测无坑,因为坑以及被我踩完了

2022-11-29 11:17:26 3114

原创 docker部署jenkins(生产实战,亲测无坑)

docker-compose部署jenkins(生产实战,亲测无坑)

2022-11-25 15:27:50 1149

原创 ELK体系部署文档(elk+filebeat+redis)

elk部署(elk+redis+filebeat)

2022-11-07 15:05:03 707

原创 研发merge请求合并代码触发检测(gitlab + jenkins)

背景:为了能够提升代码质量,减少测试同学的工作,打算在开发请求合并分支的时候进行代码检测,如果检测不通过,审核人无法点击merge合并代码。项目分支准备: dev 、main (研发开发好代码上传到dev, 然后申请合并到main)如果流水线构建失败,则处理人无法合并代码,无法显示merge按钮。修改dev分支代码,然后发起请求合并至main。(2) 配置 如果流水线时间失败无法合并代码。(2) 创建流水线,配置触发器。(1) 配置项目webhook。1、配置jenkins。2、配置gitlab。

2022-11-04 17:57:26 3576 2

原创 quota用户磁盘配额

quota可以限制用户对磁盘的使用情况。

2022-11-02 11:57:15 227

原创 kubeadm部署k8s

kubeadm部署k8s

2022-06-16 14:09:48 292

原创 linux初始化脚本

背景:每次拿到新的主机都需要做重复性的初始化操作,十分麻烦解决方案:1、拿到新的机器执行初始化脚本 2、讲初始化好的机器打成镜像初始化脚本分享(可以根据需求进行修改)

2022-06-16 11:01:53 1264

原创 shell多进程实现并发

shell默认是单进程的,可以用任务后台执行的方式实现进程并行。实现方式:使用&和wait配合实现shell多进程并行下面用两个脚本来模拟普通模式和多进程模式普通模式多进程模式很明显效率大大提升。

2022-06-02 10:49:06 3374

原创 linux随机数

1、任意生成随机数1、通过系统环境变量($RANDOM)产生随机数#获取8位随机字符echo $RANDOM |md5sum |cut -c 1-8 2、通过openssl产生随机数##openssl rand 用于产生指定长度个bytes的随机字符##-base64 对随机字符串进行base64编码格式显示openssl rand -base64 8 |cut -c 1-8 #获取8位随机数字2、指定范围和个数,随机生成## -n 指定生成个数 -i 随机数范围 -e 指定随机行

2022-05-27 11:55:15 688

原创 shell脚本集合(持续更新)

1、系统日志定时备份echo "The program being executed......"back_dir=/dengBao/logBack/systemLogfile_dir=/var/log#定义备份文件名字file_name=`date +%Y-%m-%d --date='-1 day'`if [[ ! -d "${back_dir}" ]]; then mkdir -p "${back_dir}"fiif [[ ! -d "${back_dir}/${file_n

2022-04-26 17:28:35 1143

原创 docker网络故障排查(重启firewall导致docker启动失败)

**背景:**生产环境需要用docker发布新的应用,结果docker启动失败,报了iptables异常先说导致这个问题的原因:firewall是基于iptables工具来管理防火墙,docker 使用iptables 来实现网络隔离。docker 默认使用 bridge 网桥模式来实现容器的网络。dockerd 会在 iptables 建立 docker 链来设置所有的规则。但是这些规则并不会持久化到firewall配置文件,重启firewall后这些规则都将消失,直接导致运行的容器访问失效。解决

2022-04-01 15:41:00 3968

原创 docker部署mysql 5.7(开发环境)

由于最近开发一个devops项目,需要用到mysql,所以为了方便,这里使用docker进行部署。所以记录一下!思路:1、创建相应目录2、创建配置文间3、运行容器4、进入容器内部修改root登录权限5、测试连接(如果是云服务器,需要在防火墙开通相应端口)1、创建相应目录mkdir -p /opt/mysql/{data,logs,conf}2、创建配置文件(文件内容已放最下面,直接复制即可)vim /opt/mysql/conf/mysql.cnf3、运行容器docker run

2022-03-27 17:22:09 2346 3

原创 docker-compose部署redis(生产案例)

vim /opt/redis/redis-compose.ymlversion: '3'services: redis: image: redis container_name: redis command: redis-server /usr/local/etc/redis/redis.conf restart: always volumes: - /opt/redis/data:/data - /opt/redis/redis.co

2022-03-10 14:57:13 2038

centos-node-exports.gz.tar

生产环境ansible 批量部署node_exporter,并通过api注册到consul

2021-08-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除