- 博客(73)
- 资源 (2)
- 收藏
- 关注
原创 神奇,扩大云硬盘大小后,其性能竟衰减到惨不忍睹
iaas提供的云硬盘(vdf,),在通过fio压测时,发现fio的压测参数,在size很小时,性能很好,看不出瓶颈,在size很大时候,性能直线下降。如上图,在size=5G时,压测时通过观察云硬盘vdf的性能,IOPS读和写均稳定在1万左右,读写延时都在1ms以内。还是沿用上述fio压测参数,只调整fio的size为500G,iostat观察vdf的性能数据。如上图,在size 500G时,发现IOPS都掉到300以下了,读写延时更是超过10ms。
2025-09-08 22:22:34
974
原创 性能剖析工具火焰图介绍与实战demo
火焰图(Flame Graph)是由 Linux 性能优化大师 Brendan Gregg 发明的。和所有其他的trace和profiling方法不同的是,它从底部往顶部,列出所有可能导致性能瓶颈的。由于这里的形状类似一团火焰,因此得名火焰图。其他的呈现方法,一般只能列出单一的调用栈或者非层次化的时间分布。以典型的分析CPU时间花费到哪个函数的on-cpu火焰图为例来展开。CPU火焰图中的每一个方框是一个函数,方框的长度,代表了采样周期内总的采样数,所以越宽的函数,执行越久。
2025-09-07 21:46:26
1117
原创 SSH登录后卡出翔,一个错误环境变量配置影响这么大
从现象来看,是库路径环境变量配置,指向了一个错误的路径引用,该路径的文件系统并非常见的ext4或者xfs文件系统,而是HPC常用的BeeGFS文件系统,该文件系统为并行文件系统,怀疑是该文件系统层面根因导致的上述问题,潜在可能性能层面有异常,待进一步验证。
2025-10-30 21:39:49
1021
原创 pod又卡住containerCreating状态了,罪魁祸首竟是这个
业务组在更新容器镜像的时候,经常遇到遇到pod一直卡住在containerCreating状态,检查该pod的事件信息,显示pod一直在pulling镜像,即pod的创建阻塞在拉取镜像到节点的过程中。出现上述问题的pod,在uat测试环境和prod生产环境2个集群都有出现。
2025-09-18 13:08:56
1151
原创 etcd压测造成数据目录过大恢复
问题背景 线上某etcd集群,采用的是snapshot save的方式每15分钟备份一次,某天磁盘告警,检查发现备份文件特别大. 如上图,发现etcd备份文件竟然有1个多G 如上图,检查etcd的数据目录/var/lib/etcd,发现db文件很大.问题排查 1.排查发现etcd备份文件从某天忽然...
2025-09-15 17:23:32
934
原创 ingress-nginx-controller 414 Request—URI Too Large
问题 线上某平台,通过Jenkins的API查询流水线的执行历史记录时,报错414.排查 1.jenkins的访问,使用的为ingress的访问方式,414的返回码,可能是jenkins本身返回,也可能是ingress-controller返回(使用的为nginx-ingress-controller,版本为0.26.1)。于是同时对ingres...
2025-09-15 17:07:16
1503
4
原创 kubernetes pod的弹性伸缩———基于pod自定义custom metrics(容器的IO带宽)的HPA
背景 自Kubernetes 1.11版本起,K8s资源采集指标由Resource Metrics API(Metrics Server 实现)和Custom metrics api(Prometheus实现)两种API实现,传统Heapster监控被废弃。前者主要负责采集Node、Pod的核心资源数据,如内存、CPU等;而后者则主要负责自定义指标数据采集,如网卡流量,磁盘IOP...
2025-09-15 16:57:51
1692
1
原创 使用prometheus operator监控部署在k8s集群外的mysql实例
问题背景 平台使用了mysql,部署在k8s集群之外,但是prometheus operator部署在集群内部,涉及如何监控外部的mysql实例问题。问题调研 MySQL的监控可以使用prometheus的mysql-exporter暴露metrics;对于mysql处在k8s集群外场景,使用手工创建k8s的endpoint对象,创建时指定endpoint对...
2025-09-15 16:37:21
1706
原创 NetworkManager组件导致的flannel网络异常排查
问题背景: 线上测试环境,发现一个node节点的pod到其他节点的pod网络均不通,检查发现改节点flannel网络异常(k8s使用的为flannel网络插件)。继续排查该节点,发现根本原因为系统特定版本的NetworkManager组件导致的。问题复现:1.启动NetworkManager服务,发现该节点flannel.1的IP立马消失,同时flannel.1的链路...
2025-09-15 16:16:26
1114
原创 一次.dockerignore设置错误导致的docker build排查
问题: 线上一条流水线,在docker build镜像阶段,在COPY操作时,一直报错no such file or directory错误。 排查 1.初始以为Dockerfile撰写错误,一般是相对路径之类没写对,检查Dockerfile没有发现错误2. 用同样目录结构测试一个Dockerfile,buid正常。...
2025-09-11 11:48:31
340
原创 修改jenkinsfile模板使流水线支持通过git commit拉取代码
背景 原有的jenkinsfile模板,在创建流水线时,代码分支这里可以输入master,release**,甚至正则表达式方式,实现checkout所需分支的代码。如上图,原有的jenkinsfile模板,分支名可以输入release/1.0.8这样具体分支名,也可以输入release**匹配release/1.0.8,release/1.0.2等分支,也可以冒号开头的...
2025-09-11 09:04:35
1332
原创 通过开源插件实现sonarqube区分不同分支显示代码扫描结果
问题: 开源版本sonarqube-server,同一个代码仓库,无法区分不同分支,从而实现按代码的不同分支显示对应分支的扫描结果。如上图,所有分支的扫描结果,全部显示为master,而pipeline在checkout代码时,使用的为分支通配符形式。解决: 后经过调查,发现github上面有开源插件,能实现上述功能,github地址如下:...
2025-09-10 22:16:42
3175
原创 请求localhost不是请求127.0.0.1地址,真相竟是这样
问题背景 某平台的组件,在创建流水线时,一直报错,日志显示请求一个地址连接失败。在平台流水线创建有关的组件日志里面,发现相同的错误。E1125 09:43:30.861681 1 reflector.go:125] pkg/mod/k8s.io/client-go@v0.0.0-20200228043304-076fbc5c36a7/tools/cache/reflector.go:98: Failed to list *devops.CodeRepoBinding: Get
2025-09-10 18:48:12
829
原创 ingress-nginx-controller获取客户端真实ip
线上部署的一个应用的pod,访问时采用的是ingress的方式,同时为了ingress的高可用,运行了3个ingress-controller节点,在ingress-controller前面再挂了一个F5负载均衡器,所有访问ingress访问的域名,域名解析地址都为F5的vip地址,再由F5负载均衡到一个ingress-controller上面。 数据流量流向: ...
2021-01-19 20:52:44
7116
1
原创 ingress-nginx-controller 504 gateway time-out 问题
问题背景: 某应用的后台,通过后面界面上传一个excel文件时,上传到半截是,后面界面显示 504 gateway time-out错误。问题调查: 经了解,后台应用界面为使用ingress方式访问,504错误界面显示的nginx版本信息和ingress-nginx-controller(版本0.23.0)使用的nginx版本...
2021-01-19 20:47:51
14255
原创 高可用kubernetes集群查看kube-scheduler和kube-controller-manager哪个是leader节点
字不重要,看图
2021-01-19 20:40:30
2501
原创 ansible的shell模板使用awk包含引号的问题
在使用ansible的shell模块,执行一个清理k8s集群容器日志的命令时,遭遇如下错误,Extraneous options or arguments: 在去掉awk后面的命令时,发现执行正常,定位问题点在awk这一段,后经测试,在于awk内的双引号问题,需要转义,改成如下正常执行...
2021-01-19 20:34:36
6620
原创 pod卡住terminating排查记录
背景线上某环境,遇到pod删除时一直卡在terminating的问题,之前通过kubectl delete pod --force --grace-period=0强制删除过2次,但问题反复多次出现,需要调查下详细原因。kubernetes版本为v1.16.6,docker版本18.09.9,containerd版本v1.2.6.排查调查terminating的pod所在节点的message日志,发现kubelet对这个状态的pod提示“prober.go:103] No ref for cont
2020-10-13 23:31:41
4752
1
原创 k8s集群唯独一个节点nodeport不通问题调查
<h1 id="现象">现象</h1><p>集群3个节点,通过istio-ingressgateway暴露了一个nodeport类型的31400端口。对于nodeport类型的端口,理论上可以通过任
2020-10-01 20:39:46
4252
原创 内核内存碎片导致容器创建失败(runc_page allocation failure)排查
背景线上某环境,创建pod时,pod在调度运行的节点一直无法running,describe该pod信息,有如下提示系统为centos7.7,内核版本3.10.0-1062排查查看错误节点信息的message日志,发现docker的报错kuberuntime_manager.go:710] createPodSandbox for pod "media-ai-engine-test-6d75b6f4c6-7jtps_test-media(e1849041-4521-4864-bbbe-d7
2020-09-08 22:30:50
2631
原创 kubeadm创建k8s集群一直失败排查
背景某环境,使用kubeadm创建3个master节点的高可用集群,但是一直失败。10.197.145.25: exec "kubeadm join 10.197.145.24:6443 \\\n--node-name=10.197.145.25 --token=vbgvbq.8bmv408a1uj0io2m \\\n--control-plane --certificate-key=c6840dd68d6dc52f4e74ed244d551337f2b3c9ac7dc766cd574090a
2020-07-31 22:56:10
1462
原创 win10利用WSL2安装windows版kubernetes集群
前言Kubernetes成为事实上的云原生平台,用于在分布式环境中运行容器化服务和应用程序。尽管可以在在云环境(公有云,私有云或混合云)或裸机环境中部署Kubernetes,但有时仍然需要在本地部署和运行Kubernetes进行开发测试。Kubernetes最初被设计为在Linux环境中部署和使用。但是,大量用户是使用Windows OS作为其日常驱动程序,本文探讨利用windows10的WLS2功能,使用Kind或Minikube在本地运行Kubernetes集群。在安装windows版ku.
2020-06-19 18:42:46
5052
2
原创 win10利用WSL2安装docker的2种方式
前言windows10目前推出了WSL2,相对于WSL采用API转换的方式, WSL2 则完全不同,win10 开始内置了一个轻量级虚拟机,经过不断的优化,这个虚拟机实现了与 windows 的高度集成,实现了虚拟机的高性能运行,WSL2 便是运行在虚拟机上的一个完整的 linux 内核。因此WSL2给了在windows更接近原生linux的体验,同时wsl2 的开启速度有了非常明显的提升,几乎不需要再等待。本文探讨在win10专业版上利用WSL2安装docker的2种方式。操作实践1.开.
2020-06-17 22:08:07
9865
3
原创 nginx ingress controller配置默认SSL证书
故障现象线上某kubernetes集群环境,使用nginx-ingress-controller暴露了一个service,为一个API服务,其中在ingress对象中使用了TLS证书,使用浏览器输入ingress对应的域名访问这个API service,请求正常,但是某程序使用SDK调用此service,始终无法拿到结果。ingress的yaml文件类似如下排查 sdk调用ingress时nginx-ingress-controller的日志信息,发现有如下报错 2020/04/
2020-06-06 22:48:47
3776
原创 kubernetes pod内抓包,telnet检查网络连接的几种方式
背景在日常kubernetes的运维中,经常遇到pod的网络问题,如pod间网络不通,或者端口不通,更复杂的,需要在容器里面抓包分析才能定位。而kubertnets的场景,pod使用的镜像一般都是尽量精简,很多都是基于alpine基础镜像制作的,因而pod内没有ping,telnet,nc,curl命令,更别说tcpdump这种复杂的工具了。除了在容器或者镜像内直接安装这些工具这种最原始的法子,我们探讨下其他法子。实现kubectl debug插件方式项目地址 kubect debug),h
2020-06-05 22:10:28
4447
原创 ansible取出主机register变量中最长字符串
背景在用ansible撰写一个etcd恢复的playbook时,有一个操作是获取etcd启动时的"initial-cluster"启动参数,该参数在etcd集群不同节点不一致,需要取出etcd节点启动参数中最长的作为etcdctl snapshot restore的参数。[root@tke-init ansible]# cat etcd.hosts [etcd]10.0.32.7910.0.32.4110.0.32.97[snapshot]10.0.32.79 recovery...
2020-06-03 22:47:59
383
原创 kubernetes flannel pod CrashLoopBackoff解决
# 背景某环境客户部署了一个kubernetes集群,发现flannel的pod一直重启,始终处于CrashLoopBackOff状态。# 排查1. 对于始终CrashLoopBackOff的pod,一般是应用本身的问题,需要查看具体pod的日志,通过```kubectl logs -
2020-05-21 20:58:13
3416
原创 kube-controller-manager反复重启解决
背景某环境,kube-controller-manager反复重启,尝试重建kube-controller-manager的pod,但是过一会问题复现。如上图,kube-controller-manager反复重启了200多次了。排查1.通过kubectl logs -n kube-system kube-controller-manager-xxx查看kube-controller-manager日志,日志显示“failed to renew lease kube-system/kube-con
2020-05-19 20:47:56
9380
原创 强制删除kubernetes的ns
问题背景 部署istio测试环境,想重新部署istio-operator,在清理残留资源时,在使用kubectl delete ns istio-operator --grace-period=0 --force删除istio-operator这个namespace时,发现这个ns一直卡在Terminating状态。解决kubectl get ns is...
2020-04-17 12:21:31
1718
原创 kubernetes配置自定义域名记录
问题背景 客户业务pod运行在内网,无法访问外网,对于一些应用,需要访问企业微信,淘宝等外部api接口时,采用代理的方式,即配置pod要访问的外部域名解析为内部代理服务器的ip,如配置api.weixin.qq.com,pod请求访问此域名时,dns解析为内部代理服务器ip-10.xxx.xx.xx,即需要自定义域名解析,经调研,有如下方式:1.客户存在内网dns,且...
2019-09-28 14:47:02
2601
原创 ansible的shell模块使用cat命令--EOF结束文本输入问题
使用ansible写一个playbook,使用shell模块,在模块中使用cat命令输入一段文本,在使用EOF结束文本时,却没有达到预期效果,EOF本身也被当做了文本重定向到文件了。如上图为使用的playbook文件。如上图,在生成的文件中,EOF用来标记输入结束的文本,也被写入了文件中。问题解决: 使用shell模块的cmd参数,...
2019-05-26 20:10:49
4445
原创 Python selenium模块报错解决
在使用selenium的webdriver示例化Firefox和Chrome对象时,发现如下报错。如上图,实例Firefox对象,报错:selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process 如上图,实例化Chrome...
2019-01-22 22:19:23
4563
1
原创 redis密码破解(multiprocessing的Pool多进程模式)-join方法小坑
之前使用multiprocessing的分布式进程模式写了个redis的破解程序,性能不是很理想,相对于单进程模式性能反而有下降.于是想利用multiprocessing的多进程模式进行破解,初始代码如下:#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 19-1-3 下午7:32# @Site : ...
2019-01-09 22:47:11
1305
原创 redis密码破解(Python使用multiprocessing分布式进程)
前面redis密码破解都是在一台机器单进程运行的,于是想如果在多台机器分布式运行,速度会不会快点,用Python的multiprocessing模块的managers子模块写了个破解程序,代码如下: master端,代码如下:#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18-...
2018-12-31 22:22:28
1114
原创 redis密码破解(python使用redis模块)
昨天用socket模块写了个破解redis密码的脚本,今天用Python redis模块在写了个,同一个密码文本,发现redis模块速度明显不如socket模块,代码如下:#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18-12-27 下午9:20# @Site : # @File : ...
2018-12-28 20:07:29
2107
原创 redis密码破解(python使用socket模块)
偶尔看到一篇讲述redis未授权访问漏洞的,提到用hydra进行redis密码的破解。测试了下,发现安装的hydra竟然无法破解出密码,且速度很慢(hydra版本 v8.2-dev)。 如上图,用一个for循环生成个随机密码测试文件,将正确密码写入。如上图,hydra竟然没破解出密码,不知道是不是bug,而且一分钟才运行差不多10000次密码猜测。而redi...
2018-12-27 20:58:52
1661
1
原创 修改云主机快照方式为live snapshot
客户反馈虚拟机做快照时一直无法连接(后端存储使用的为ceph),远程测试发现做快照时无法ping通,vnc无法登录.如上图,在做快照期间,ping虚拟机的ip中间会出现"请求超时"如上图,快照期间,vnc也无法登录了.在虚拟机所在的计算节点,用watch -n1 "virsh list --all",发现虚拟机在快照期间的状态为shutoff.观...
2018-10-31 00:01:57
785
原创 虚拟机重启错误,libvirtError:internal error:process exited while connecting to monitor
客户云环境一台虚拟机,反馈重启不成功。经了解,客户环境使用的后端为ceph,故障虚拟机挂载一块云硬盘。 收集客户的nova-compute日志,发现报错如下: libvirtError:internal error:process exited while connecting to monitor如上图,日志显示云硬盘无法连接到ceph-mon,排查虚...
2018-10-28 23:46:49
12903
原创 rabbitmqadmin的配置文件问题
一个rabbitmq集群,通过rabbitmq-plugins enable rabbitmq_management启用了管理插件,下载了rabbitmqadmin命令文件,但是执行rabbitmqadmin list queues命令时报错: *** Access refused: /api/queues?columns=name,messages ...
2018-10-18 22:00:07
3558
原创 一次虚拟机热迁移失败处理,使用nova live-migration-force-complete强制暂停下虚拟机
客户反馈2台虚拟机热迁移失败,检查源计算节点的nova-compute日志,均发现live migration stuck xxx sec的错误信息。虚拟机热迁移的过程,在源节点和目标节点会有同步虚拟机内存的操作,查看stuck日志之前的输出,问题memory 基本0% remaining,问题应该在最后一刻同步内存。于是尝试使用nova live-migrat...
2018-10-02 22:12:03
5087
ansible 安装etcd3集群
2018-01-22
利用ansible安装keepalived和haproxy集群
2018-01-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅