随笔分类 - 问题解决
摘要:前几天有个朋友把他们的kubernetes集群搞挂了,让我帮忙恢复一下,由于很多现场都没有了,这里提供一下解决思路。 环境问题 该环境有一个master节点,即控制面pod(etcd、scheduler等)也都只有一个pod 问题起因是他们的服务访问出了点问题,为修复该问题,他: 备份了etcd数据
阅读全文
摘要:解决pod健康检查问题 引自:Solving the mystery of pods health checks failures in Kubernetes。原文中的某些描述并不清晰,本文作了调整。 很早以前,环境中的pod有时候会遇到健康检查失败的问题,但并没有什么明显表征,且几乎是立马就会恢复
阅读全文
摘要:译自:Designing for Concurrency: the Hilbert’s Hotel Problem in Go,本文使用go的并发性来解决Hilbert酒店问题。本文比较有意思的是它对问题的描述很吸引人,在看完文字描述之后,代码实现逻辑也基本顺理成章,当然代码本身的实现也相当优雅。
阅读全文
摘要:问题描述 最近看了一个虚机的CPU使用情况,使用mpstat -P ALL命令查看系统的CPU情况(该系统只有一个CPU core),发现该CPU的%usr长期维持在70%左右,且%sys也长期维持在20%左右: 03:56:29 AM CPU %usr %nice %sys %iowait %ir
阅读全文
摘要:通过硬件计数器,将性能提升3倍之旅 翻译自:Seeing through hardware counters: a journey to threefold performance increase 本文通过对CPU层面的代码挖掘,发现JVM存在的问题,并通过对JVM打补丁的方式解决了大实例下性能不
阅读全文
摘要:最近看了一篇文章:Tracking Down “Invisible” OOM Kills in Kubernetes,其讲述的是由于内存不足导致Pod中的进程被killed,但Pod并没有重启,也没有任何日志或kubernetes事件,只有一个"Exit Code: 137"的信息,导致难以进一步定
阅读全文
摘要:alertmanager集群莫名发送resolve消息的问题探究 术语 告警消息:指一条告警 告警恢复消息:指一条告警恢复 告警信息:指告警相关的内容,包括告警消息和告警恢复消息 问题描述 最近遇到了一个alertmanager HA集群莫名发送告警恢复消息的问题。简单来说就是线上配置了一个一直会产
阅读全文
摘要:一个恢复CSI挂载信息的解决方法 问题描述 之前有做过一个华为OBS 的CSI插件,其基本运作原理如下图所示。CSI插件Pod挂载了主机的/var/lib/kubelet/pods目录,当创建挂载Pvc的业务Pod时,CSI插件会启动一个s3fs进程,该进程用于远程连接s3服务,将bucket(也即
阅读全文
摘要:victoriaMetrics无法获取抓取target的问题 问题描述 最近在新环境中部署了一个服务,其暴露的指标路径为:10299/metrics,配置文件如下(名称字段有修改): apiVersion: v1 items: - apiVersion: operator.victoriametri
阅读全文
摘要:最近有做一个Prometheus metrics代理的一个小项目,暂称为prom-proxy,目的是为了解析特定的指标(如容器、traefik、istio等指标),然后在原始指标中加入应用ID(当然还有其他指标操作,暂且不表)。经过简单的本地验证,就发布到联调环境,跑了几个礼拜一切正常,以为相安无事
阅读全文
摘要:记一次golang内存泄露 最近在QA环境上验证功能时,发现机器特别卡,查看系统内存,发现可用(available)内存仅剩200多M,通过对进程耗用内存进行排序,发现有一个名为application-manager的容器服务的内存占用达到700多M,该服务使用Gin框架对外提供操作k8s资源的简单
阅读全文
摘要:Linux bridge使用dummy接口调用IPVS的问题 在IPVS: How Kubernetes Services Direct Traffic to Pods一文中,作者给出了一个简单的组网(如下)来模拟kubernetes是如何使用IPVS进行通信的。 问题描述 当在netns_leah
阅读全文
摘要:实现Jenkinsfile与Json的转换 最近在做个需求,需要支持Jenkinsfile和json的转换。 方法1:使用现有的jenkins插件 参考的是这篇文章。下面介绍一下将插件打包成镜像的步骤: 本地安装jdk和maven,jdk建议采用的版本为8(该工程会依赖一个名为tools.jar的包
阅读全文
摘要:环境:centos7.4 内核版本3.10 最近看内核参数tcp_tw_recycle(该参数在内核 4.12 之后被移除),它用于快速回收处理TIME_WAIT状态的socket。搜索该参数相关的资料,发现同时启用该参数和tcp_timestamps后有可能在NAT环境下导致客户端始连接失败,抓包
阅读全文
摘要:问题描述: 在使用wireshark抓取报文时,发现从10.81.2.92发过来的报文绝大部分标记为异常报文(开启IPv4和TCP checksum) 分析如下报文,发现http报文(即tcp payload)的长度远远大于实际的mss大小,如下图为4126 查看该报文的ip长度,为4148,远大于
阅读全文
摘要:新环境上配置alertmanager时出现了“Client was not authenticated to send anonymous mail during MAIL FROM”错误,但老环境上是好的 使用如下方法来验证邮件发送: alertmanager的邮件配置如下: global: re
阅读全文
摘要:场景描述: openstack私有云中的容器服务A(部署在openshift上)需要通过http访问阿里云中的B服务,中间需要经过openstack的nat网关,以及阿里云的lb。但在访问时发现访问失败,A服务无法获取B服务的http响应。 问题分析: 容器中的服务A请求阿里云的服务B时失败,但在容
阅读全文
摘要:问题描述: k8s环境中需要重新创建lvm:/dev/mapper/test-vg-test-storage,该lvm挂载在/data/prometheus下面,在删除出现"Logical volume contains a filesystem in use"的错误,表明该lvm被某个进程占用,但
阅读全文
摘要:起因: 最近新部署了openshift集群,由于使用了自签证书,浏览器访问集群的https服务会报告警(如下图),在使用浏览器(特别是IE)访问openshift master暴露的服务时,选择继续访问时,出现了尝试很多次才能登陆成功的情况。 问题排查: 访问流程如下,client(浏览器)会直接访
阅读全文
摘要:使用环境centos7 x86-64 内核版本4.19.9 docker使用非root用户启动,daemon.json配置文件内容如下: 映射的user和group均为如下值 启动方式为 进入容器,在/mnt目录下进行修改文件属性的操作,出现如下错误(此时容器中的user id=0) 解决思路 首先
阅读全文