作者文章归档:felix

k8s 免费测试环境分享


k8s 免费测试环境分享

开始学k8s会面临两个拦路虎: GFW和基础环境的投入。
古格mirror下载
GFW就不多谈了。作为一个良民,不再多说。但是kubernetes的基础镜像基本来自谷歌,那怎么办呢:
  1. 先查看安装kubernetes版本对应的mirror:

    kubeadm config images list  --kubernetes-version v1.1x.x
  2. 使用别人的已建好mirror站下载,参考链接(古格mirror代理)

    docker pull  anjia0532/google-containers.xxxxx
    eg: 下载k8s.gcr.io/fluent...

Read more

apisix中etcd的集群备份和恢复


1.备份

ETCDCTL_API=3 etcdctl snapshot save snapshot.db
恢复

#2.查看备份状态
ETCDCTL_API=3 etcdctl  snapshot status snapshot.db -w=table

#3. 还原快照

kubectl  cp /root/temp/snapshot.db  -n ingress-apisix  apisix-etcd-0:/tmp/
kubectl  cp /root/temp/snapshot.db  -n ingress-apisix  apisix-etcd-1:/tmp/
kubectl  ...

Read more

Redis连接池Wireshark抓包分析


Redis连接池Wireshark抓包分析

1.文章背景

​ 因线上redis连接池出现i/o timeout,遂想通过抓包分析redis连接池的各配置参数。

​ 连接相对于其他对象,创建成本较高,资源也有限。如果没有连接池,在高并发场景下,连接关闭又新建,很快就会因为过多的TIME_WAIT(连接主动关闭方)导致无法创建更多连接了,程序被压死。

​ 本文主要确认:

​ 1.redis连接池是否复用

​ 2.redis连接池超时分析

​ 3.redis连接池直接替换(加锁)

​ ...

Read more

ElastAlert监控部署


ElastAlert监控部署

elastAlert介绍

ElastAlert是一个简单的框架,用于从Elasticsearch中的数据中发出异常,尖峰或其他感兴趣的模式的警报。

elastAlert部署-常见规则

创建配置文件

mkdir -p /data/elastalert/{rules,elastalert_modules}

创建elasticalert规则

cat > /data/elastalert/elastalert.yaml <<EOF
rrules_folder: /opt/elastalert/rules
run_every:
  minutes: ...

Read more

获取k8s中pod日志上传oss输出到企业微信


获取k8s中pod日志上传oss输出到企业微信 //目的: 一键获取Pod日志,方便给其他人查看 //方式: //1.通过client-go获取pod日志 //2.将pod日志上传值oss //3.将返回的链接输出到企业微信 //注意点: //1.参考kubectl log源码去写的 //2.上传值Oss信息PutOSSFile函数我涂抹了,需要自己写

package main

import (
    "bytes"
    "context"
    "encoding/json"
    "errors"
    "flag"
    "fmt"
    "github.com/...

Read more

k8s集成企业微信通知第一版


//k8s集成企业微信通知第一版 //目的: 想将k8s的更新信息通知到企业微信里面 //现状: 目前是第一版,可以正常运行,可能存在bug,也需要进一步调优 //设计思路: //1.通过informer去获取k8s状态 //2.将service,pod,deployment,statefulset,job,crontab,sa,configmap,secret,ingress进行工厂实例化 //3.通过AddEventHandler去获取add,update,delete状态 //4.通过反射将判断资源类型,然后发送到企业微信通知 //5.update有这一块存在很多问题,一个资源更新...

Read more

gitlab升级后问题 (支持golang私有仓和兼容多域名拉取)


简述

​ 公司gitlab比较老,版本是v10.0.0,计划升级到v14.10.0。记录升级过程,保留多域名和ip地址访问,增加golang 私有仓支持。

gitlab版本升级

1.1.升级路径

官网参考

10.0.0-> 10.8.7 -> 11.11.8 -> 12.0.12 -> 12.1.17 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.15 -> 14.0.12 ->14.0.12 ->14.9.0
1.2配置镜像源
cat >...

Read more

公司证书过期时间扫描(golang)


公司证书过期时间扫描(golang)

// 将公司所有A记录域名解析导出

// 将域名拼接为https://+域名

//设置超时时间,并发扫描域名

//无响应,不正确域名直接抛弃

//打印所有有结果域名过期信息

package main

import (
    "bufio"
    "context"
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
    "strings"
    "sync"
    "time"
)

type Cert struct {
    Name string //域名
    Startt...

Read more

获取通过官方api获取docker状态


获取通过官方api获取docker状态

写的不好仅供参考。

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "github.com/docker/docker/api/types"
    "github.com/docker/docker/client"
    "github.com/robfig/cron/v3"
    "github.com/shirou/gopsutil/v3/cpu"
    "github.com/shirou/gopsutil/v3/mem"
    "io/i...

Read more

gitlab 搭建go modules私有仓库


gitlab 搭建go modules私有仓库

重点:

1.go get需要用域名的方式。 2.go get默认访问的是https。

目前策略

go get ---> nginx(ssl 反代gitlab)-->gitlab

实现
go get gittest.xxxx.com/Goland/gotogit

以gitlab(192.168.128.128)仓库为例测试

1.域名准备
1.1 域名分配
1.2  域名解析
gittest.xxxx.com  192.168.128.128
2.准备https(gittest.xxxx.com)反向代理

​ 2.1 申请ssl...

Read more