自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1836)
  • 收藏
  • 关注

原创 RocketMQ 消息存储机制 CommitLog和ConsumerQu

摘要:RocketMQ通过CommitLog文件存储所有消息,采用顺序写入提升性能。为优化消费效率,引入ConsumeQueue作为索引,按Topic/QueueId组织,记录消息在CommitLog中的物理偏移量。CommitLog默认1G大小,写满后创建新文件;ConsumeQueue采用定长设计(20字节/条目),实现快速检索。这种物理存储+逻辑索引的架构既保证了消息持久化,又提升了消费性能,同时支持消费者偏移量管理以实现故障恢复。

2025-08-13 20:11:43 755

原创 velero 资源备份测试

摘要:本文介绍了使用Velero工具进行Kubernetes集群备份和恢复的操作流程。主要内容包括:1)通过velerobackup create命令创建带时间戳的命名空间备份;2)使用velerobackup describe查看备份状态;3)演示删除命名空间后,通过velero restore create从指定备份恢复应用和数据;4)验证恢复后Pod和数据完整性。整个过程展示了Velero在K8s环境中的备份恢复能力,包括元数据备份、持久化数据恢复等功能。

2025-08-13 16:20:40 357

原创 containerd 配置镜像加速

本文介绍如何配置containerd镜像加速器。首先修改config.toml文件,添加registry插件配置,指定证书目录。然后创建对应的certs.d目录结构,为docker.io、registry.k8s.io等镜像仓库配置hosts.toml文件,添加阿里云、DaoCloud、163等国内镜像源。配置完成后需重启containerd服务。注意ctr命令与crictl命令的差异,以及不同镜像仓库的配置方法。文中提供了docker.io、registry.k8s.io和k8s.gcr.io三种常见镜像

2025-08-13 14:06:46 656

原创 Velero 简介和部署

摘要:Kubernetes集群备份工具Velero支持资源备份和PV数据迁移,与etcd备份形成互补。Velero通过API server进行细粒度备份(如按命名空间、标签等),支持周期性备份,而etcd直接备份整个数据库。部署Velero需安装客户端和服务端(控制器),配合对象存储(如Minio)使用,需配置访问凭证。Velero备份流程包括创建Backup对象、资源收集和存储上传,恢复时通过Restore控制器完成。相比etcd,Velero提供了更灵活的备份策略和迁移能力,适合生产环境集群数据的管理和

2025-08-05 16:47:43 1164

原创 如何使用 Nginx Ingress 实现金丝雀发布

本文详细介绍了如何使用Nginx Ingress实现金丝雀发布,包括两种主要场景:1)基于Header/Cookie的定向灰度发布,可将新版本面向特定用户群体;2)基于权重的流量比例切分(0-100%)。文章提供了完整的YAML配置示例,涵盖v1/v2版本部署、常规Ingress创建以及三种Canary策略实现(Header匹配、Cookie识别和权重分配)。同时指出了Nginx Ingress在Canary发布中的局限性,如仅支持两个版本共存、必须配置域名等。该方案适合使用Nginx Ingress且发布

2025-08-01 13:58:26 1407

原创 如何根据不同业务场景调节 HPA 扩缩容灵敏度

Kubernetes HPA自动扩缩容灵敏度控制指南 Kubernetes 1.18对HorizontalPodAutoscaler(HPA)进行了重要更新,新增了behavior字段用于控制扩缩容灵敏度。该功能允许用户根据业务需求定制化扩缩容策略:关键业务可配置快速扩容(立即新增9倍副本)和缓慢缩容(每10分钟缩1个Pod);非关键业务可设置缓慢扩容(每次新增1个Pod);还可禁止自动缩容或延长扩缩容时间窗口(最长10分钟)以避免误操作。这些特性通过scaleUp/scaleDown策略实现,使HPA能更

2025-07-23 15:16:04 1334

原创 Kubernetes 探针原理、效果以及配置建议

Kubernetes容器探针主要包括启动探针(StartupProbe)、存活探针(LivenessProbe)和就绪探针(ReadinessProbe)。启动探针用于检测容器初始化完成,存活探针判断容器是否正常运行,就绪探针确认容器是否准备好接收流量。探针支持HTTP请求、TCP连接和执行命令三种检测方式,并可通过参数调整探测行为。配置建议包括:慢启动应用应优先配置启动探针,调整合适的探测时间间隔,存活探针失败阈值应大于就绪探针等。探针失败时,存活探针会导致容器重启,就绪探针则从服务中移除实例。

2025-07-21 14:56:44 1532

原创 K8s 集群CoreDNS监控告警最佳实践

CoreDNS作为Kubernetes集群的核心DNS服务,其性能监控至关重要。关键监控指标包括:请求速率(按协议、记录类型分组)、响应速率(按状态码)、UDP/TCP请求/响应数据包大小(P50/P90/P99)、响应时延(P99阈值建议设为1s)以及缓存指标(记录数、命中/丢失率)。这些指标通过Prometheus采集,使用PromQL进行查询和告警配置。重点需关注P99响应时延、请求速率和缓存命中率,其中响应时延初始告警阈值可设为1秒(基于DNS解析超时时间2s),后续根据实际数据优化。

2025-07-21 11:18:50 1148

原创 Kubernetes NodeLocal DNSCache 简介

DNSConfig动态注入控制器,基于Admission Webhook机制拦截Pod创建的请求,自动注入使用DNS缓存的Pod DNSConfig配置;DNS缓存代理,在每个集群节点上创建一个虚拟网络接口(默认监听IP 169.254.20.10),配合Pod的DNSConfig和节点上的网络配置,Pod内产生的DNS请求会被该服务所代理。工作原理图如下图所示:1、已注入DNS本地缓存的Pod,默认会通过NodeLocal DNSCache的服务地址(169.254.20.10)解析域名;

2025-06-27 10:59:01 1981

转载 记一次 k8s dns解析异常故障分析

事情是这样的,有天有个客户找到我,说他在k8s集群里面部署了一套KubeFlow,pod状态都是正常的,但是登录的时候界面报了一个500错误,并给我发了下面这张截图,我当时也不知道KubeFlow是啥,但是我注意到了截图上面显示的url地址,“oauth2/callback”看名称是一个认证回调相关的地址,初步怀疑是调用这个oauth2接口异常了所以报错。只能去提供这个接口的pod里找日志了,以下是客户部署的KubeFlow的pod,注意到最底下的2个pod,就是提供认证接口的pod。

2025-06-25 15:48:41 1351

原创 CoreDNS 配置优化实践

如果在云容器引擎集群中部署的应用容器使用了Alpine作为基础镜像,可能会因为下述musl libc特性导致无法正常解析域名,此时建议尝试更换基础镜像,如Debian、CentOS等。当集群的kube-proxy负载均衡模式为IPVS时,缩容或重启CoreDNS可能会遇到DNS概率性解析超时的问题。该问题由社区Linux内核缺陷导致,具体信息请查看社区。。。CoreDNS启动时会默认获取实例所在节点中的DNS配置而且在CoreDNS重启之前不会再重新加载该节点上的resolve.conf配置。

2025-06-24 11:02:30 2322

原创 Kubernetes CoreDNS策略配置和域名解析说明

本文介绍了在Kubernetes集群中配置Pod DNS策略的方法,主要包含四种场景:1) 使用ClusterFirst策略默认采用集群CoreDNS解析域名;2) 通过None策略自定义Pod的DNS配置;3) 使用Default策略继承节点ECS的DNS配置;4) 在HostNetwork模式下采用ClusterFirstWithHostNet策略访问集群服务。文章详细说明了每种策略的适用场景、示例配置和关键参数,并提供了集群DNS服务的基本查询方法,帮助用户根据实际需求选择合适的DNS解析方案。

2025-06-09 09:56:31 2416

原创 Kubernetes CoreDNS 概述

Kubernetes集群中的DNS解析机制主要依靠CoreDNS和NodeLocalDNSCache组件实现。CoreDNS负责解析集群内服务域名(格式为<servicename>.<namespace>.svc.<ClusterDomain>)和外部域名,作为集群默认DNS服务器运行。NodeLocalDNSCache则在每个节点部署DNS缓存,减轻CoreDNS负载并提升解析效率。集群DNS配置包含三个层面:全局的ClusterDomain设置(默认cluster.l

2025-06-06 10:40:59 2231

原创 etcd 性能 FIO测试

etcd作为一个分布式键值存储系统,其性能主要由延迟和吞吐量两个因素决定。延迟指完成操作所需时间,而吞吐量则是在特定时间内完成的操作数量。在并发客户端请求下,etcd的平均延迟会随吞吐量增加而增加。在标准云环境中,三成员etcd集群在轻负载下可实现低于1毫秒的请求完成时间,重负载下每秒可处理超过30000个请求。etcd使用Raft算法确保数据一致性和复制,其性能受网络和磁盘IO延迟限制。为提高吞吐量,etcd采用批量处理策略。此外,etcd的性能还受到MVCC存储引擎、快照、压缩和gRPC系统的影响。通过

2025-05-23 09:50:47 2430

原创 云原生|kubernetes|kubernetes的etcd集群备份策略

总结:etcd恢复还是比较快的,脚本做了一些工作,比如,停服务,因此,恢复完要先启动etcd,然后在其它节点启动etcd,最后启动kube-apiserver服务,顺序不要搞错了哦。可将备份脚本放入计划任务,实现自动备份哈,这里我就不演示啦,然后恢复的时候根据需要恢复任意天的etcd。再次强调,集群恢复是所有节点都恢复,不能只恢复一个节点,那样会劈叉的,根据每个节点的etcd配置文件修改脚本。

2025-05-13 15:04:03 3755

原创 ETCD 集群的常见问题处理(2)

本文介绍了ETCD集群在日常运维中常见问题的处理方法。ETCD是一个高可用的分布式Key/Value存储系统,使用Raft算法保持集群一致性。文章详细描述了三种常见问题的解决步骤:1)单个节点宕机的恢复,包括查看状态、摘除异常节点、重新部署和加入集群;2)超过半数节点宕机的恢复,涉及备份数据恢复、启动服务和检查状态;3)数据库空间超限的恢复,包括备份数据、获取reversion、compact、defrag和删除报警。文章还建议定时备份和压缩数据,并增加集群监控以确保服务稳定运行。

2025-05-12 10:34:09 3276

原创 Etcd 数据存储文件 配置建议和管理

etcd集群在正常服务时,成员分为Leader和Follower两种状态,确保数据强一致性。所有数据从Leader流向Follower,Follower数据必须与Leader一致,否则会被覆盖。Leader处理所有写操作,并需等待超过半数的成员确认写操作成功,而Follower可直接响应读操作。etcd采用预写式日志(WAL)记录所有数据库事务,确保数据持久化。此外,etcd定期生成数据库快照(snapshot),记录某一时间点的数据状态,以减少日志体积并辅助数据恢复。快照与WAL日志结合,可快速同步故障实

2025-05-09 17:20:32 2683

原创 Vue 生命周期详解

vue的生命周期,是vue中比较重要的知识点,在面试中也经常会被问到,所以就打算写一篇关于vue生命周期的文章。世间万物都有自己生命周期⏱,vue也有这一特点,vue的生命周期可以简单分为四个阶段:创建阶段,挂载阶段,运行阶段,销毁阶段。每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。❝在这个过程中会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会❞每个阶段都有两个。

2025-05-09 11:19:58 3365

原创 Kubernetes etcd 故障恢复(1)

本文介绍了处理ETCD集群故障的步骤,包括查看集群状态、剔除故障节点、重新添加故障节点以及备份恢复集群的方法。首先,通过etcdctl命令查看集群状态,识别主节点和故障节点。接着,使用member remove命令剔除故障节点,并通过member list验证剔除是否成功。随后,详细说明了重新添加故障节点的步骤,包括清空旧数据、修改配置文件、拷贝证书以及执行member add命令。最后,文章还提供了备份恢复集群的流程,强调停止相关服务、恢复数据后重启服务的操作顺序。通过这些步骤,可以有效维护ETCD集群的

2025-05-09 11:04:05 3473

原创 Etcd 压缩整理

内存中的存储除了顺序化的记录下所有用户对节点数据变更的记录外,还会对用户数据进行索引、建堆等方便查询的操作。历史版本越多,存储空间越大,性能越差,直到etcd到达空间配额限制的时候,etcd的写入将会被禁止变为只读,影响线上服务,因此这些历史版本需要进行压缩。由于ETCD数据存储多版本数据,随着写入的主键增加历史版本需要定时清理,默认的历史数据是不会清理的,数据达到2G就不能写入,只是对给定版本之前的历史版本进行清理,清理后数据的历史版本将不能访问,但不会影响现有最新数据的访问。

2025-04-17 11:10:44 4159

原创 etcdctl工具 管理操作etcd集群 存储调整

etcd就是个分布式非关系型数据库,3 个节点组成的集群,可以容忍 1 个节点故障。生产环境中,不推荐使用单个节点的 etcd 集群。etcd 支持存储多个版本的数据,允许查询指定 key 历史版本的数据。etcd 为了控制数据总空间,会周期性的清理数据的历史版本。etcd 不支持修改旧版本的数据。etcd 中,数据以二进制的方式存储在磁盘中。#/bin/bash。

2025-04-16 10:34:12 4002

原创 Etcd 推荐配置(生产环境)

读写 QPS 为 etcd 100 连接,1000 客户端 下的 etcd benchmark 结果。

2025-04-15 17:48:41 3294

原创 Vue 局部布局 K8s项目 header部分 下拉选择框 [el-select]

整体布局写完了,那么就可以写main这部分的局部布局了,一般在做后台系统的时候,大部分时候,在做一些数据展示的时候基本上都会使用table的方式去做应该数据的展示,以及各种操作。按钮也可以放在table里面去,头部会给一些搜索的逻辑,基于什么样的条件去做一个搜索。在开发之前,先开发header,最后开发table。(也就是main里面的header)搜索之后数据就会慢慢展示出来了,然后对每条数据进行什么样的操作。

2025-04-14 09:16:46 3187

原创 Vue Kubernetes项目 局部布局面包屑 el-breadcrumb

这种一项一项手写面包屑的方法带来了很多重复性工作,比如每个页面中都需要写一遍“首页”的面包屑,所有“活动管理”下的所有页面,也都需要写一遍“活动管理”。这时如果路由需要调整,那么所有页面的面包屑都要进行修改,非常繁琐。因此如果可以自动生成面包屑,就能够减轻很多重复性工作,也方便代码维护。

2025-03-29 14:17:07 4172

转载 Kubernetes Pod OOM 和 CPU 限制

中看到的,当我们想要限制进程的资源消耗时,设置限制或请求非常重要。不过,请注意不要将总请求设置为大于实际 CPU 大小,因为这意味着每个容器都应该有一定数量的 CPU。实际上,如果所有容器使用的内存多于请求的内存,则可能会耗尽节点中的内存。通过设置不切实际的限制或过度使用,您可能不会意识到您的进程受到限制,并且性能受到影响。限制是设置节点中资源最大上限的一种方法,但需要谨慎处理,因为最终可能会导致进程被限制或终止。云应用程序中的 CPU 和内存要求变得越来越重要,因为它们与您的云成本直接相关。

2024-12-10 10:55:32 6795

原创 如何导出和导入Grafana仪表盘

您可以使用导出导入Grafana仪表盘功能对Grafana仪表盘进行备份,或将仪表盘从一个Grafana实例迁移到另一个实例中。本文介绍如何导出和导入Grafana仪表盘。

2024-12-04 15:48:39 9536

原创 CoreDNS Plugins ---> hosts 添加hosts解析记录

虽然格式"172.30.200.21 172.30.200.22 172.30.200.23 kubenode1"可以正常下发configmap资源,但只有第一个ip生效。通过coredns的hosts插件配置kubernetes集群的dns服务,使集群内部可通过hostname/域名访问外部服务。kubernetes集群外部有少量服务,kubernetes集群内部pod需要通过服务所在的主机的hostname访问服务。# 省略了”FILE“,"ZONES"等字段。# ping外部hostname。

2024-10-08 16:40:33 7878

原创 Alertmanager 路由匹配

2、第二种方式则基于正则表达式,通过设置match_re验证当前告警标签的值是否满足正则表达式的内容。当前告警中是否存在标签labelname并且其值等于labelvalue。1、一种方式基于字符串验证,通过设置。告警的匹配有两种方式可以选择。

2024-09-26 17:48:24 5122

原创 你真的理解 Kubernetes 中的 requests 和 limits 吗?

为了实现 Kubernetes 集群中资源的有效调度和充分利用, Kubernetes 采用requests和limits两种限制类型来对资源进行容器粒度的分配。每一个容器都可以独立地设定相应的requests和limits。这 2 个参数是通过每个容器 containerSpec 的 resources 字段进行设置的。一般来说,在调度的时候requests比较重要,在运行时limits比较重要。

2024-09-09 18:03:30 4758

原创 kubernetes Pod failed to create fsnotify watcher: too many open files

fs.nr_open: 控制单个进程可以打开的文件描述符的最大数量。单个进程的文件描述符限制可以通过 ulimit 命令来设置。单个进程能够打开的文件描述符总数的限制。当前系统可打开的最大数量指定用户可以打开的最大数量。

2024-09-06 10:20:17 5389 1

原创 prometheus cadvisor 容器相关指标

3、 container_cpu_user_seconds_total与container_cpu_system_seconds_total的总和,代表容器占用CPU的总和。6、 查询容器相关的 数据:查询所有POD的1min内CPU使用情况,用到的数据指标是k8s通过request(下限)和limit(上限)限制容器的CPU和内存的使用范围,在容器运行的过程中需要实时监控容器对cpu的使用情况。1、 容器用户态占用CPU的时间总和。

2024-09-04 10:17:25 6398

原创 Kubernetes 如何给pod的 /etc/hosts文件里面添加条目

上面就是可以将aa/bb.local可以解析为10.1.1.1的地址。cc/dd.local就可以解析为10.1.1.2的地址。可不可以在创建pod的时候指定一些条目在hosts里面?创建pod的时候,pod会在其/etc/hosts里面添加一个条目。这样就完成添加hosts解析了!

2024-08-21 21:31:12 3907 1

原创 JavaScript getElementById 使用方法

在JavaScript中,document.getElementById()是一种用于通过元素的id属性获取DOM元素的方法。它的作用是返回与指定id匹配的HTML元素。使用document.getElementById()可以通过元素的id属性直接获取该元素的引用,在标签上定义一个ID,然后JS基于这个ID去调用它。然后可以使用该引用对元素进行各种操作。(1) 修改元素的内容或属性。(3)获取表单元素的值。(2)添加事件监听器。

2024-08-14 16:53:41 6465

原创 kubernetes Pod在容器内获取Pod信息

从日志中我们可以看到Container的requests.cpu、limits.cpu、requests.memory、limits.memory等信息都被正确保存到了Pod的环境变量中。注意valueFrom这种特殊的Downward API语法,目前resourceFieldRef可以将容器的资源请求和资源限制等配置设置为容器内部的环境变量。从日志中我们可以看到Pod的IP、Name及Namespace等信息都被正确保存到了Pod的环境变量中。◎ requests.cpu:容器的CPU请求值。

2024-08-10 15:58:59 4029

原创 nginx 405错误是什么意思

当Web服务器收到一个它不支持的HTTP请求方法时,就会返回405错误。405错误通常是由于客户端发出了不兼容或不支持的HTTP请求方法。例如,客户端可能请求一个只能通过GET方法访问的资源,但使用了POST方法。要解决405错误,需要确保客户端发送正确的HTTP请求方法。可以查看服务器文档或使用HTTP请求测试工具来确定正确的请求方法。

2024-08-07 11:27:34 5846

原创 JVM 性能测试分析工具: jps、jstack、jmap、jhat、jstat、hprof 使用详解

今天这篇文章,我们来一起聊聊在做性能测试常用到的性能分析工具。这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。

2024-07-31 17:03:04 4363

原创 RocketMQ 搭建

Producer:消息的发送者;举例:发信者Consumer:消息接收者;举例:收信者Broker:暂存和传输消息;举例:邮局NameServer:管理Broker;举例:各个邮局的管理机构Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接受者可以订阅一个或者多个Topic消息Message Queue:相当于Topic的分区;用于并行发送和接收消息。

2024-07-19 09:58:42 4249

原创 8个步骤彻底清理Docker镜像

镜像积累如山,不仅占用宝贵的磁盘空间,还可能给我们的工作带来不便。今天,就让我带大家深入了解如何高效清理 Docker 镜像,保持我们的开发环境干净整洁。通过上面的分享,相信大家已经对如何清理 Docker 镜像有了更加全面和深入的认识。检查一下这些镜像,评估哪些是必要的,哪些是可以删除的。如果有一系列复杂的清理规则,我们可以编写一个简单的脚本来自动化这个过程。上面的命令会删除所有创建时间超过168小时(7天)的镜像。这样我们可以直观地看到哪些镜像占用空间较大,然后手动删除。那么,今天的内容就到这里。

2024-07-17 17:59:13 5640

原创 JVM 调优参数

XX:TargetSurvivorRatio表示,当经历Minor GC后,survivor空间占有量(百分比)超过它的时候,就会压缩进入老年代(当然,如果survivor空间不够,则直接进入老年代)。而新生代是用来存放新创建的对象,大小是随着堆大小增大和减少而有相应的变化,默认值是保持堆大小的十五分之一,-Xmn参数就是设置新生代的大小,也可以通过-XX:NewRatio来设置新生代与年老代的比例,java 官方推荐配置为3:8。所以如果设置新生代大小的调整,则需要严格的测试调整。在jdk5以上的版本,

2024-07-17 09:19:22 3837

原创 ES证书过期替换方案

1.批量下发证书,从各个节点日志可以看出,证书已更新2.集群中的某个节点,重启时,如果自己的证书和其他节点不一致,可以启动但是无法被其他节点识别,无法加入集群直接替换证书,自动就被其他节点识别到,然后节点正常加入集群3.查询命令:查询证书过期验证证书是否有效。

2024-07-13 17:07:57 3993

空空如也

空空如也

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

TA关注的人

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