- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 关于 Prometheus increase 和 sum 指标使用总结
网上查询关于increase的使用知道大概,但当具体使用时,关于其指标详情理解,仍然云里雾里,本人在使用过程中,关于该指标,有以下总结。
2024-08-20 16:41:20
718
1
原创 Terraform手动更改资源测试
以上情况,将tf code由used01subnet1改为used01subnet1-code,aws console上,由used01subnet1改为used01subnet1-console。AWS中subnet的名字由used01subnet1改为used01subnet1-test。此时terraform.tfstate中仍然是used01subnet1。可见,“三方”不一致,apply后,以code中的状态为准。本案例中使用aws来测试。
2023-10-04 00:09:30
234
原创 阿里ACK容器pod日志收集及规划
阿里云中自带的日志收集插件是logtail,但和fluentd的安装配置上都类似的,具体的差异,可点击此处参考别人的文章。Logtail的部署方式有DaemonSet方式和Sidecar方式,由于sidecar耗费系统资源,实际日志量没有达到一定层级,此处采用DaemonSet的方式部署。需要收集的是Java spring boot日志,应用场景是有多个项目,每个项目有dev、sit、prod三个环境都需要收集日志。每个项目的每个环境放到k8s中一个单独的namespace下。Java微服务日志配置文件在
2023-04-11 11:14:31
1051
原创 k8s中通过ingress暴露多端口deployment
项目中有一个notify微服务,业务逻辑上,需要在web界面上操作发送模板(微服务)、和推送(websocket),因此需要将后端的微服务和websocket同时对外暴露,前端web界面操作时需要走外网,同时实现微服务内部之间和notify访问,仍然走内网。
2023-03-13 18:20:34
2250
原创 Ali Ingres Controller安装及路由配置浅析
本文主要讲述阿里云ACK上安装ingress controller,对外网、内网的slb或者同时对内对外的配置详情及注意事项。
2022-10-22 01:27:51
1224
原创 Pulumi对比terraform管理cloud公有云总结
手动更改资源时,pulumi和terraform的处理方式不大相同,要比terraform简单,由上述例子可知,当实际Azure云资源手动改变,后续通过Pulumi再来管理,执行pulumi apply时,只要不报错,都可以忽略先前手动对云资源的改动。当然如果知道具体手动改了什么,pulumi代码手动同步改动后apply更好;而terraform需要时刻保持实际资源、state file、code三方一致才不会报错。原则上,pulumi不需要手动更改state file,
2022-01-26 15:49:36
1011
1
原创 Azure安装AKS步骤及注意事项
Open Service Mesh AKS add-onAKS preview features are available on a self-service, opt-in basis. Previews are provided “as is” and “as available,” and they’re excluded from the service-level agreements and limited warranty. AKS previews are partially cover
2022-01-14 00:15:47
900
原创 k8s中通过Jenkins蓝绿/灰度/滚动发布微服务
1. jenkinsfile配置注意事项微服务注册中心采用Eureka,部署后一般不会改动,直接手动部署,不放在cicd中;cicd只发布各个微服务的deployment;service/ingress也不经常改动,直接在阿里ACK控制台中手动安装,或者单独部署Jenkins item发布;构建镜像的tag通过环境变量BUILD_NUMBER来命名;同时yaml中定义两个变量,镜像tag同理通过BUILD_NUMBER,yaml中的副本数replicas的值,通过parameter获取,传递进来;
2021-05-19 11:39:29
3656
1
原创 Grafana之telegram报警配置
1. 创建tg bot机器人打开tg,搜索@BotFather,创建新机器人,如下图所示如果不知道chat id 通过向 @userinfobot 发送任何消息获取chat id,如下图机器人创建好之后,如果需要群组报警,把机器人添加到对应报警群组即可,bot会发报警信息到该群组2. Grafana配置Alert-ing->Notification channels中添加 报警媒介,如下图所示配置详解:添加tg中获取到的chat id和token分别到下图的所示位置,报警
2021-04-22 12:25:55
5181
原创 k8s dashboard部署及所遇问题
点击此处dashboard github 查看官方文件1. 使用以下命令暴露kubectl port-forward --namespace kubernetes-dashboard --address 0.0.0.0 service/kubernetes-dashboard 4432. 使用以下(master节点ip)URL登录https://10.70.128.50 #根据自己实际的ip来登录查看3. 使用以下命令获取tokenkubectl describe secret/kubernet
2021-04-13 23:28:03
258
原创 k8s安装配置ingress traefik
1. traefik部署yaml文件见本GitHubkubectl apply -f traefik-crd.yamlkubectl apply -f crd.yamlkubectl apply -f rbac.yaml -n kube-systemkubectl apply -f config.yaml -n kube-systemkubectl apply -f deploy.yaml -n kube-systemkubectl apply -f dashboard-route.yaml
2021-04-13 23:15:17
611
2
原创 k8s运维 pod、node、namespace、pv处于terminating的原因及处理方法
1. 概述node、pod、ns、pv由于一些原因在生产中处于terminating的状态,常规方法无法删除,一下总结了一些原因以及删除方法2. node处于Terminating状态原因及处理方法node节点不可达的情况下,kubectl delete po XXX 仅仅是控制组件标记删除,由于节点不可达,不能通过kubelet通知API该容器已终止,所以该节点未从API收到删除的消息,因此POD一直处于Terminating状态。可通过以下举例方式强制删除:kubectl delete pod/
2021-04-13 23:00:08
3289
2
原创 生产中mysql常用命令
1. 添加root用户并赋予权限 use mysql; create user 'root'@'%' identified by '123456'; grant all on *.* to root@'%' identified by '123456';2. mysql查看当前所有数据库大小select table_schema, concat(truncate(sum(data_length)/1024/1024,2),' mb') as data_size,concat(truncate(s
2021-04-13 22:40:20
145
原创 aws、自建mysql修改默认时区
1. mysql 数据库 修改默认时区1.1 自建mysqla. 修改当前会话时区,临时生效,退出msql后 time_zone 恢复成修改前的值set time_zone = '+8:00';修改 /etc/mysql/my.cnfb. 修改全局会话时区mysql> set global time_zone = '+8:00';mysql> set time_zone = '+8:00';mysql> flush privileges;c. 通过修改配置文件(my.
2021-04-13 22:26:04
541
原创 docker安装prometheus/grafana/alertmanager、配置telegram报警
1. 注意事项prometheus、alertmanager默认使用utc时区,比cst慢了8小时,docker运行时使用 -v /etc/localtime:/etc/localtime 或者 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime的方式只能改变容器的时间,prom和alertmanager web界面中显示的时间是代码中定义的,只有修改代码中对应的时区才能修改报警时web界面显示的时间服务器系统的时区不一致可能导致alertm
2021-04-04 17:13:04
4069
原创 living直播流媒体服务器汇总
1. 搭建所需基础原理介绍主播端捕捉音频和视频后,进行H.264的视频编码和AAC的音频编码,再将编码后的数据整合成一个音视频包,然后通过rmtp推到流服务器,直播端用hls或者flv协议方式拉流。hls延迟较为明显,要十几秒以上,主要是以下延迟服务器端的编码器和流分割器生成TS文件的时间客户端下载TS文件的时间,而通常要求下载完两个TS媒体文件客户端解码并播放时间2. 流服务选择测试2.1. github开源 LiveGo稳定性不好,直播延时大概17s,关键问题是服务经常挂掉,直接
2021-03-05 15:54:22
1102
原创 docker安装gitlab、迁移和升级
公司之前gitlab长时间之后经常宕机假死,版本较旧,决定迁移并升级到新版本。新版本为gitlab-ee:13.1.0-ee.0,采用docker安装,之前版本为10.1.01. gitlab数据备份gitlab-rake gitlab:backup:create使用以上命令会自动备份到 /var/opt/gitlab/backups目录下面,然后拷贝到新的gitlab服务器上,这里因为备份文件比较大,将新的server上面的/data目录通过nfs挂载到旧的/var/opt/gitlab/backu
2021-03-04 16:11:22
1615
2
原创 Jenkins构建时H5代码时使安装依赖为可选
导语h5代码发布时,需要编译,但安装依赖这一步比较耗时,并不是每次都需要安装,但开发若更新插件,则需要重新安装依赖;因此pipeline里面使npm install这一步设置为可选,需要时再更新变得十分有必要。同理,以下pipeline代码同样适用于Java项目的 mvn install 这一步。jenkins Declarative Pipeline代码如下所示,第二步下载依赖这一步加了一个条件判断when,从Jenkins构建时选择yes或者no来确认是否需要执行安装依赖这一步,如下图:另外
2021-01-22 16:17:12
506
原创 Filebeat之多行匹配模式理解记忆方式
1. 概述官方文档关于多方匹配英文比较绕,这里翻译成中文,总结后便于记忆,点击此处查看官方原文1.1 翻译及记忆方式multiline.pattern: '^b #匹配以“Test”开始的行multiline.negate: true | falsemultiline.match: after | before. negate false: 双重否定为肯定–匹配pattern;true:否定,不匹配pattern;. negate 中匹配与否作 主语,理解这点就好记忆了;.
2021-01-15 16:24:22
3165
原创 k8s中手动创建User并认证、授权供jenkins使用
1. 手动创建原因kubeadmin安装的k8s,用户家目录中的 .kube/config 里面保存了客户端访问API Server的密钥相关信息,可以直接copy,二进制安装的不存在,需要手动生成包含useraccount的kubeconfig,k8s版本1.18,步骤如下:1.1. 创建注意事项创建useraccount:此处创建的是全局性的用户账户,只是通过认证Authentication,还没有权限添加集群资源,需要为用户kubernetes进一步添加授权。执行如下脚本生成user为kuber
2020-11-10 15:55:18
2160
原创 使用Declarative Pipeline多分支选择发布JS代码
3. Jenkinsfile---DeclarativePipeline,选择使用声明式而不是脚本式,声明式更简单直观,流程化,因为需要选择发布到的分支,可以使用声明式pipeline中的when{},但要分成两个stage,显得臃肿,所以此处使用groovy的if/else if 来实现pipeline { agent any parameters { choice choices: ['uat', 'release'], description: '请...
2020-10-10 16:02:20
480
2
原创 传统PHP项目迁移到k8s上
# 传统PHP项目迁移到k8s上标签(空格分隔): PHP NGINX k8s dockerfile---## 1. 迁移前的准备多个PHP项目,各个项目框架相同,lnmp方式。迁移到nginx可以实现快速扩容,不通项目使用同一套k8s而不需要新建太多虚拟机,节省了成本。前期只讲无状态应用迁移到容器中,有状态应用如mysql、redis、rabbitmq仍使用之前的,因为目前项目全都是放在云平台,只需要将k8s部署到之前相同的网段,既可以实现平滑无缝迁移。传统项目中,nginx和PHP
2020-09-14 16:52:26
2951
原创 前端Java通过Nginx访问ElasticSearch集群报错之解决办法
需求:公司目前使用Haproxy反代ES,Java前端请求正常,但出现过数次ES Master挂掉不转移故障的情况,公司领导决定用Nginx替换Haproxy作为替代。问题:换成Nginx之后,用curl -XGET'http://esabc.com:9231',来测试,Nginx能有效负载均衡,以及失效转移,但生产环境迁移之,Java的模块org.elasticsearch向后请求出现:4...
2019-05-03 22:33:06
932
2
原创 Vim自动补齐Python-编译安装YouCompleteMe
环境:Centos7+vim8+Python2.7说明:其中Python2.7为系统自带,本人用pyenv安装了Python3.6.4,切换到3.6的环境之后,但在最终安装YCM时,始终出现报错:PyThreadState_Get: no current thread。经查询是动态编译库lib的问题,试了网上搜寻的多种方法,但始终没有解决,最终还是选择了2.7的版本来编译YCM,希望用Python...
2018-04-30 17:38:46
3007
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人