自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

洒满阳光的午后的博客

不会写代码的运维不是好运维

  • 博客(219)
  • 收藏
  • 关注

原创 如何使用OSI七层模型的思路进行Linux网络问题排障?

OSI,即开放系统互连(Open Systems Interconnection),该模型是一个概念框架,它将网络通信的功能划分为七个不同的层级。简单来说,OSI标准定义了不同计算机系统之间如何进行通信。

2024-04-16 12:02:57 779

原创 Linux系统启动过程详解

硬件初始化在启动过程中,计算机的固件(如BIOS或UEFI)开始接管并设置所有必要的硬件组件,包括CPU、内存、存储设备及周边设备。这一关键阶段确保了这些组件为操作系统的使用做好充分准备。加载操作系统硬件初始化完成后,就开始加载操作系统,这一步骤通常包括将内核及其关键服务载入内存中。启动系统服务随着操作系统的启动,它会激活一系列系统服务和驱动程序,这些核心程序确保了计算机的平稳运行,使得诸如管理网络连接、处理输入/输出操作以及维护安全措施等工作得以顺利进行。用户交互。

2024-04-12 16:17:32 877

原创 给Kubernetes新手的Helm Chart教程

一般的表述为“Helm 是Kubernetes 的包管理器”,但其作用超不止一个简单的包管理器。Helm 是一个由 DeisLabs 创建并捐赠给 CNCF 的开源项目,目前由 CNCF 维护。Helm 最初的目标是为了为用户提供一种更好的方式来管理在 Kubernetes 项目中创建的所有 YAML 文件。为了解决这个问题,Helm 引入了概念,Chart 是一个包含多个 Kubernetes 清单文件的集合,每个 Chart 还可以包含子 Chart 和依赖 Chart。

2024-04-12 09:46:16 805

原创 使用containerd容器运行时的Kubernetes集群如何配置访问http私有仓库(insecure-registries)?

在使用docker容器运行时,配置访问http较为简单。而当Kubernetes使用containerd时,其配置文件就相对复杂了。总的来说,有两种方式可以实现http仓库的访问。

2024-04-10 17:35:10 781

原创 为什么K8s需要服务网格Istio?

Istio是一种服务网格技术,管理基于容器或虚拟机工作负载之间的服务交互,它允许开发人员无论使用何种供应商或平台,都能安全地连接、运行、控制和监控分布式微服务架构。Istio是开源且独立的,因此它可以在任何平台上使用,但是当与Kubernetes结合时,会发生最奇妙的化学反应。将两者结合使用,可以在网络和应用层面确保服务间和Pod间的通信安全。

2024-04-09 15:49:58 1220

原创 如何为Kubernetes构建最优的容器镜像(三):使用容器实现进程管理

使用精简且可共享的基础镜像来构建最小化的镜像,已缩短启动时间。使用多阶段构建来分离容器的构建和运行时环境。合并Dockerfile指令以创建清晰的镜像层,避免镜像缓存造成的错误。通过隔离离散功能来实现容器化,以便实现灵活的扩展和管理。设计具有单一、明确职责的Pod。捆绑辅助容器以增强主容器的功能或使其适应部署环境。构建能够响应运行时配置的应用程序和容器,以便在部署时提供更大的灵活性。将应用程序作为容器中的主进程运行,以便Kubernetes能够管理容器的生命周期。

2024-04-08 17:21:34 1111

原创 如何为Kubernetes构建最优的容器镜像(二):容器和Pod级别功能范围的界定、运行时配置的设计

由于Kubernetes操作的是更高层次的对象,如Pod,而不是直接管理容器,因此有一些机制可用于在运行时定义和注入到容器环境中的配置。正如您可能已经注意到的,这些模式中的每一个都支持构建标准、通用的主容器镜像的策略,这些镜像随后可以在各种上下文和配置中部署。Pod由一个或多个带有配置数据的容器组成,Pod中的容器始终被调度到集群中的同一个工作节点上,并且系统会自动重启失败的容器。通过理解和正确使用各个抽象层提供的运行时配置选项,我们可以构建灵活的组件,这些组件会根据环境提供的值来进行相应的配置。

2024-04-08 16:36:44 481

原创 如何为Kubernetes构建最优的容器镜像(一):高效容器镜像的特征、基础镜像层的重用与镜像层的管理

镜像是 Kubernetes 中定义应用的主要打包格式。镜像被用作 Pod 和其他对象的基础,并在有效利用 Kubernetes 功能方面发挥着重要作用。设计精良的镜像具有安全性高、性能卓越、针对性强的特点。它们能够响应 Kubernetes 提供的配置数据或指令,并能够实现 deployment 用来了解内部应用状态的探针。在本文中,我们将介绍一些创建高质量镜像的策略,并讨论几个通用目标,以指导您在将应用容器化时做出决策。

2024-04-08 15:32:05 875

原创 jq命令简易教程——Linux中处理JSON数据的利器

在shell脚本中,当我们需要对JSON数据(例如ceph、kubernetes等一些命令的输出,或是调用API获得的响应)进行处理和提取时,如果使用传统的文本三剑客sed、awk和grep,命令将会非常臃肿不可读。虽然这三个命令在处理松散结构的数据时很有用,但当面对JSON这类数据时,却显得不够优雅。

2024-04-08 11:37:14 274

原创 GitOps是DevOps的下一个风口吗?

GitOps的核心是基于代码的基础设施和操作流程,它依赖Git作为源代码控制系统。它是基础设施即代码(IaC)的演进,也是DevOps的最佳实践,它利用Git作为系统架构创建、更新和删除的唯一来源和控制机制。更简单地说,它是使用Git拉取请求来验证和自动部署系统基础设施修改的实践。除了Git作为关键的DevOps机制外,GitOps还用于描述增强Git默认功能的工具。这些工具最初主要与基于Kubernetes的基础设施和应用程序的操作模型一起使用。

2024-04-07 16:56:56 870

原创 使用bcache加速hdd的原理及简单应用示例

磁盘缓存的概念其实一直存在,比如操作系统中的内存。当从磁盘读取数据时,数据会被复制到 RAM 中。如果数据已经存在于 RAM 中,就会直接从 RAM 读取,而不是再次从磁盘读取。当数据写入磁盘时,它会先写入 RAM,然后过一会儿再写入磁盘。由于 RAM 是易失的,数据在 RAM 中停留的时间非常短。bcache 与此类似,只是它有多种缓存操作模式。写入数据较快的模式是 writeback。它的工作方式与 RAM 相同,只不过 RAM 被 NVME SSD 设备所取代。

2024-04-07 15:50:57 681

原创 Ceph常用命令总结

【代码】Ceph常用命令总结。

2024-04-02 16:45:20 1071

原创 Openstack常用命令总结-Cinder篇

【代码】Openstack常用命令总结-Cinder篇。

2024-03-29 16:34:21 263

原创 Openstack常用命令总结-Nova篇

确认host属于哪个主机组。查看host所在Zone。过滤Zone下的主机组。

2024-03-29 15:50:58 263

原创 近期处理的几个小问题记录

虚机load异常升高,df/ls容易卡住,宿主机load无明显异常。

2024-03-04 14:18:22 419

原创 一次OOM造成僵尸进程引发业务故障的排查总结

本篇由于涉及商业信息,只简述排查思路,不详述排查过程。

2024-02-02 17:38:28 378 1

原创 一次ceph节点时钟同步异常排查总结

使用命令可确认系统精确时间,经确认非误报,确实存在时钟同步异常。集群节点间采用chronyd进行时钟同步,所有节点的时钟源均配置为第一个mon。

2024-02-02 16:24:24 572

原创 Prometheus node_exporter计算CPU利用率的标准公式应该是哪一个

在实际使用中我们会发现,当节点的CPU实际利用率较低时,使用第一种公式计算出的CPU利用率与实际相差较大,这是因为该公式存在逻辑上的错误。第一种(rate和irate均可,一个反映区间值,一个反映瞬时值,新版本指标名为。使用irate/rate计算CPU利用率是不准确的,且CPU利用率越低计算结果越不准确。由此可见,只有在CPU利用率较高时,CPU各状态之和才近似等于节点运行时间。显示节点与单核CPU利用率约在75-85%左右,此时计算。显示节点与单核CPU利用率约在92-93%左右,此时计算。

2023-12-26 09:15:23 850

原创 【openstack】卷迁移导致的虚机热迁移失败问题排查及解决

可知迁移失败的原因为虚机有活跃的卷任务,执行。确定迁移源节点、目标节点。服务日志,未发现异常信息。有卷拷贝任务正在执行,执行。确定该卷有热迁移任务卡死。再次执行虚机热迁移成功。

2023-11-18 07:35:21 325

原创 ceph rados对象存储索引残留问题排查与处理

对象存储存储桶无法删除,检查发现生命周期过期后存储桶中有文件残留,未完全删除,但实际访问文件时为404,通过s3cmd无法删除对象,且无报错。拉取残余文件列表,首先获取pool、bucket。,判断为索引残留问题,及索引存在但数据已删除。列出bucket索引,发现所有索引。

2023-11-10 17:55:02 660

原创 Docker配置双栈网络引起的IPV6不通问题排查及解决

accept_ra参数,0表示不接受RA,1表示forwarding是关闭时就接受,2表示无论forwarding是否关闭,主机都接受RA。可见系统缺失默认路由。通过抓包可发现,系统未发rs(Router Advertisement)报文,导致接收不到ra通告,无法生成路由。forwarding作用是开启ipv6路由转发,默认是0关闭,容器化环境中,主机相当于路由器,会默认开启该参数。云主机配置了Docker双栈网络后,ipv6网络异常,无法ping通ipv6网关。

2023-09-28 17:51:16 1260

原创 如何解决Prometheus场景中的nodata告警问题

我们知道,prometheus会为所有的target生成一个up指标,可以使用这个指标来判断exporter但是在某些特殊场景下,例如等架构中,prometheus承担的角色是pullexporter指标并到远程端点。因此当某个Prometheus节点因为某些原因(如网络故障、prometheus节点本身故障等)离线,而无法向发送数据时(也即nodata场景),该节点所承载的监控数据(如}等)将全部丢失,并且监控系统无法感知该事件。在prometheus节点较少的情况下,我们可以通过枚举方法,配置。

2023-02-16 15:40:52 1522 2

原创 大规模Prometheus监控系统实践

刚毕业的几年,我的主攻方向是以zabbix为核心的监控系统构建与监控模板制作,那时候公司的基础设施形态以传统的裸金属集群为主,涵盖各种型号的服务器、交换机、防火墙、存储设施、专用设备等等。21年入职新司后,无缘再接触这些嗡嗡作响的大家伙,新司的基础设施则以虚拟机、云上服务、docker/k8s为主,主攻方向也由zabbix转向prometheus。两者孰优孰劣,网络上一直都有讨论。

2023-02-08 17:57:02 1248

原创 如何解决Prometheus的数据回填问题

去年10月底的时候,我们的监控系统因为一个偶然的网络离线问题,出乎意料地发生了重大的故障,这次故障暴露了当前监控系统存在的一下重大隐患,即无法处理Prometheus的数据回填,本文对该问题进行详细分析,并给出优化方案。

2023-01-18 18:03:57 2999

原创 如何监控NVIDIA GPU服务器?

可使用NVIDIA官方提供的dcgm-exporter监控GPU,项目地址:https://github.com/NVIDIA/dcgm-exporter,推荐使用docker安装:需要使用高版本docker,低版本docker无法使用参数。如上述镜像无法拉取,可使用我存在阿里云的镜像:指标地址为:Grafana dashboard:指标释义如下:指标释义可参看:

2022-12-05 17:21:28 1202

原创 ping回显间隔长或第一个包很久才显示是怎么回事?

在ping某些域名的时候,第一个回显十几秒才出现,但时延time正常,第二个包开始回显频率正常且最终统计结果为不丢包;或是每一个回显均间隔数秒才显示,但时延time又都是正常的,且统计结果为不丢包。从上述抓包结果可以看出,域名解析(序号151、154)、ICMP(序号167、170;序号186、189等)均在毫秒内即返回结果,因此域名解析及ICMP均是正常的,真正阻塞回显的序号155、158等。ping程序在成功解析域名后,试图查询IP的PTR记录(即反向解析记录,IP对应的域名/主机名)以打印回显,但经

2022-12-05 16:38:15 1871 1

原创 k8s集群内偶现无法访问外部域名怎么解?

容器内频现无法访问外部服务,是用测试有如下现象:从容器所在宿主机测试无异常,测试无异常。首先检查coredns pod运行是否正常:如果coredns pod不处于running状态,或pod频繁发生重启,则应检查pod运行异常原因:2、检查coredns日志如果pod状态正常,检查coredns日志:本次故障场景中,可在日志中看到大量如下报错:3、检查coredns负载情况看到上述报错,接着检查coredns pod负载情况:检查coredns资源限制情况:与top命令查询的负载情况比较

2022-12-05 12:12:20 2479

原创 云服务器重启后无法获取IP地址怎么办?

最近一位支撑厂家同事反馈,在执行了并重启服务器后,IP信息丢失,无法获取到IP地址,以下为该问题的排查思路。

2022-12-02 17:53:44 1910

原创 kubeadm kubernetes集群证书过期的处理方法

动态证书重载目前还不被所有组件和证书支持,所有这项操作是必须的。正确的重启方法是临时将清单文件从 /etc/kubernetes/manifests/ 移除并等待 20 秒(参考 KubeletConfiguration 结构 中的fileCheckFrequency 值)。此时kubelet 会自动终止这些pod。pod终止后再将文件移回去,kubelet将重新创建这些pod。

2022-11-16 10:53:26 864

原创 可观测性入门

可观测性是指可以在不了解系统内部运行机理的情况下,从外部诊断系统运行情况。它使我们能够轻松定位和处理新问题,并帮助我们了解为什么会发生这些问题。为了实现这个目标,必须正确地检测应用程序,也就是说应用程序代码必须发出调用链(trace)、指标(metric)和日志(log)。应用程序能够被正确检测,意味着开发人员不再需要添加更多的检测来解决问题,因为其已拥有所有的信息。

2022-10-19 11:27:30 634

原创 监控系统解决方案Thanos与VictoriaMetrics对比研究

目前主流的Prometheus长期存储及集群解决方案,包括Thanos、Cortex、VictoriaMetrics以及Grafana近期发布的Mimir,出现大一统趋势,其中以Thanos(receive模式)、Cortex、Mimir为代表的S3存储解决方案,架构、功能可以说基本一致。本文将从读写性能、资源成本、维护成本三个角度,简单对比Thanos与VictoriaMetrics的差异与优劣。

2022-10-12 16:31:45 1895

原创 process-exporter中namedprocess_namegroup_states指标的正确含义是什么

注意:process-exporter在计算指标namedprocess_namegroup_states时,会将进程名相同的进程合并(例如多个java进程),因此上述公式在这种情况下也是不准的。这个指标通过process-exporter采集,原意是计算节点上sleeping进程的数量,表面看起来没什么问题,实际上得出的结果却是完全错误的。这个指标的含义为处于Sleeping状态的进程sshd线程数为7,可以通过/proc/{pid}/status查看进程的状态及线程数。...

2022-08-30 17:06:43 871

原创 rsync: [sender] write error: Broken pipe (32) 问题排查

同步开始时进行正常,说明配置正确。中途"Broken pipe",检查源端与目标端之间的防火墙等安全设备配置,发现配置有DDOS防护,DDOS相关告警也佐证了传输中断的原因为数据同步因流量过大被判定为DDOS攻击,因此被拦截。同步初始化时总是中断,一般在传输4G左右暂停,重启lsyncd后传输一段时间再次中断。方法一:关闭DDOS防护。......

2022-08-16 10:19:23 3011

原创 Elasticsearch跨集群复制(CCR)介绍

跨集群复制(CCR,cross-clusterreplication)属于xpack增强包中的功能,需要白金级、企业级证书才可使用。对于分布在不同地域的Elasticsearch集群,您可以通过CCR进行数据备份。当其中一个集群发生故障时,您可以通过访问其他集群来获取故障集群的数据,保证数据不丢失。例如A集团下有多个子公司,各子公司所分布的地域不同。为了提高业务处理速度,可按照地理位置划分子公司要承担的业务,并通过CCR将业务数据分发给各地域中的Elasticsearch集群。...

2022-07-28 15:10:38 2258 1

原创 ping域名报错unknown host,nslookup/systemd-resolve可以正常解析,ping公网地址通怎么解决?

ping域名报错unknown host,nslookup/systemd-resolve可以正常解析,ping公网地址通。需要检查的异常点1、检查/etc/nsswitch.conf检查hosts行,是否为 files dns,files 表示使用 /etc/hosts 和 /etc/network 配置文件,dns 表示使用 /etc/resolv.conf文件中的DNS解析地址。ping 程序解析域名依赖于C库中的函数 gethostbyname() 和 gethostbyaddr...

2022-06-30 16:44:20 1147

原创 单节点高并发Linux服务器影响接入能力的因素有哪些

在单台服务器承载数十万并发的情况下,影响服务器接入能力的因素已经不在是CPU、内存、带宽等表层因素,而是内核参数、设备配置、应用优化等多种细节因素。Linux 中所有内容都是以文件的形式保存和管理的, 包括套接字、网络通信等资源,即一切皆文件,因此提升最大打开文件数是提高服务器并发性能的重要一步。Linux的最大打开文件数限制包括系统级(系统可打开的最大文件数)、用户级(单个用户可打开的最大文件数)、进程级(单个进程可打开的最大文件数),可分别通过如下方式修改:2、nf_conntrack对开启i

2022-06-29 17:43:12 1316

原创 K8S某些节点容器网络访问异常的一种原因——网卡“源/目的地址检查”

移动云环境,自建K8S,所有主机处于同一网段,CNI插件是用Calico,BGP模式。某些节点的容器无法与K8S其他node通信,表现为该节点的容器无法访问其他节点及节点上的容器和服务,其他节点和节点上容器也无法访问该节点上的容器,节点间通信正常,仿佛该节点的容器被隔离了一样。通过在容器内及节点上抓包可以看到,数据包在节点与节点网卡之间丢失,如图:异常节点的网卡开启了“源目的地址检查”。该选项移动云默认开启,但无相关介绍。我们从华为云的文档中找到了一些介绍:默认情况下,“源/目的检查”状态为“ON”,系统会

2022-06-28 10:58:03 1574 3

原创 Linux内核参数net.ipv4.ip_local_port_range对服务器连接数影响的正确解释

首先明确一下该参数的意义:net.ipv4.ip_local_port_range表示本机作为客户端对外发起tcp/udp连接时所能使用的临时端口范围。对于TCP连接,本机所能发起的tcp连接数受四元组(源地址*源端口*目标地址*目标端口)限制。而对于UDP连接,本机所能发起的udp连接数则受二元组(源地址*源端口)限制。(此处借用二元组的概念,并不表示udp套接字的二元组标识)。一个实际生产场景举例我们知道,在使用nginx作反向代理服务器时,会作为客户端向后端负载发起连接,在不考虑最大打

2022-04-29 16:57:09 3833

原创 关于Postgres主从复制延迟监控的错误告警问题

​在使用Prometheus监控的Postgres数据库时, 会发生主从复制延迟产生告警,但实际上数据库正常的问题,我们使用的exporter为https://github.com/prometheus-community/postgres_exporter,告警表达式为:pg_replication_lag > 300这个指标的说明如下:# HELP pg_replication_lag Replication lag behind master in seconds# TYPE pg_r

2022-04-22 17:50:36 1896

原创 Thanos如何为不同租户配置不同的数据保留时长

在之前的实践中我们已经实现了prometheus的多租户读写:Prometheus和Thanos Receiver的“写多租户”实现_洒满阳光的午后的博客-CSDN博客新的需求是要为不同的租户配置不同的数据保留时长。目前compactor组件天然是不具备多租户能力的,但是它有一个参数--selector.relabel-config=<content> Alternative to 'selector.relabel-co

2022-04-20 17:45:18 609

空空如也

空空如也

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

TA关注的人

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