自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 资源 (5)
  • 收藏
  • 关注

原创 SDK级的kubectl,client-go的深度封装:kom使用指南

kom是一个用于 Kubernetes 操作的工具,提供了一系列功能来管理 Kubernetes 资源,包括创建、更新、删除和获取资源。kom相当于SDK级的kubectl、client-go的使用封装。它让我们能够在代码中,以类似kubectl的通用、一致的管理方式,管理各种内置或者CRD资源。通过使用kom,你可以轻松地进行资源的增删改查和日志获取以及操作POD内文件等动作。在没有CR定义的情况下,如何进行增删改查操作。操作方式同k8s内置资源。

2024-11-20 17:31:11 1808

原创 如何在 Lua 中实现链式访问的 Kubernetes 客户端

本文介绍如何在Lua中实现链式访问的Kubernetes客户端。通过Go+Lua(github.com/yuin/gopher-lua)组合,开发者可以创建支持链式调用的Kubectl脚本接口,如kubectl:GVK().Namespace().List()。文章详细解析了实现链式访问的三大核心机制(:语法糖、返回self、userdata+metatable),并给出了Go代码实现步骤,包括注册结构体、设置metatable方法和实现链式函数。这种设计显著提升了脚本的可读性和易用性,适用于DevOps工

2025-06-11 14:30:11 268

原创 使用lua脚本检测k8s资源是否正常

本文介绍了一个基于Lua脚本的Kubernetes资源检测工具Grule,其主要功能包括:通过Lua脚本批量检测K8s资源(如Service、ConfigMap等);结构化输出检测结果;支持自定义脚本扩展;内置多种常用检测规则。工具依赖Go 1.18+、kom库和gopher-lua解释器。使用方法包括配置kubeconfig、编译运行和查看JSON格式的检测结果。核心结构包括LuaKubectl操作封装、检测脚本管理和事件上报机制,开发者可通过添加LuaCheck项扩展检测能力。示例展示了Service

2025-06-10 23:29:43 316

原创 Rootless和标准Docker的对比研究

例如,在一个需要大量数据传输的网络应用中,Rootless Docker的网络速度会明显低于标准Docker。例如,在一个对磁盘读写要求较高的应用中,Rootless Docker的性能会比标准Docker低。例如,在一个对性能要求较高的数据库应用中,标准Docker可以直接访问主机的硬件资源,提高性能。例如,在一个大型的文件存储系统中,标准 Docker可以利用原生驱动进行高效的存储和传输。例如,在一个大规模的分布式系统中,标准 Docker可以提供稳定的性能和可靠的功能支持。

2025-01-05 13:39:04 560 1

原创 LimitRange和ResourceQuota的配置语法

通过合理配置 LimitRange 和 ResourceQuota,可以有效地管理 Kubernetes 命名空间内的资源使用,确保资源的合理分配和系统的稳定运行。ResourceQuota 用于在命名空间级别设置资源配额。它的配置结构与 LimitRange 类似,也包含。LimitRange 用于为命名空间中的 Pod 和容器设置资源限制和默认值。

2024-12-29 08:40:24 548

原创 Kubernetes 中 LimitRange 与 ResourceQuota 的深度剖析

在 Kubernetes 中,资源分为两类:可计量资源(如 CPU 和内存)和命名资源(如 Pod 数量、PVC 数量等)。可计量资源以特定的单位进行衡量,例如 CPU 以核心数或毫核心(m)为单位,内存以字节(Byte)、千字节(KiB)、兆字节(MiB)等为单位。命名资源则是通过计数来管理。LimitRange 和 ResourceQuota 是 Kubernetes 中重要的资源管理工具,它们在不同层面发挥着关键作用。

2024-12-29 08:38:05 1002

原创 Kaniko 与 Spegel:革新容器镜像构建与分发的两大技术

这样,在集群内的工作负载进行部署时,就可以迅速从本地的 Spegel 缓存中获取所需的镜像,从而实现了从镜像构建到部署的高效、安全的一体化流程。此外,Spegel 还具备智能的镜像缓存管理策略,它会根据镜像的使用频率、更新时间以及本地存储资源的使用情况等因素,动态地对本地镜像缓存进行清理和优化,确保本地缓存始终保持在一个合理的大小范围内,既能满足大部分工作负载的镜像需求,又不会因缓存过多无用镜像而占用过多的本地存储资源,从而实现了高效的本地镜像缓存管理和资源利用的平衡。(一)金融科技公司的容器化实践。

2024-12-26 08:24:34 827

原创 基于Kubernetes Node节点的镜像管理策略研究

当磁盘使用率大于等于 imageGCHighThresholdPercent 时,触发镜像的删除行为,镜像会按照上次使用时间顺序从最久未被使用开始逐个删除,每删除完一个镜像,都会再次获取磁盘使用率并判断是否小于等于 imageGCLowThresholdPercent ,一旦降至低水位线,则停止删除镜像,通过这种动态的阈值判断机制,确保了磁盘空间的有效利用和镜像的合理保留,避免了因过度回收镜像导致应用再次启动时需要重新拉取镜像的额外开销,同时也防止了磁盘空间被镜像过度占用而影响系统正常运行。

2024-12-26 08:17:39 754

原创 AMIS实现对k8s status.conditions的状态界面化展示

AMIS实现对k8s status.conditions的状态界面化展示。

2024-12-24 21:38:36 306

原创 在 AMIS 中封装一个支持自定义背景色的 HTML 内容组件

这个组件非常适合日志、代码块或其他文本展示场景,能够提高可读性并增强用户体验。通过 AMIS 的自定义渲染器功能,我们封装一个组件。,并注册为可复用的渲染器。在 AMIS JSON 配置中,通过。显示的html块为正常背景色。显示的html块为浅红色。

2024-12-17 19:50:16 1145

原创 k8m新增 Describe内容AI解读功能,再也不怕看不懂了

是一款集 AI 与 Kubernetes 于一体的轻量级控制台工具,专为简化集群管理设计。基于 AMIS 构建,并通过 kom作为 Kubernetes API 客户端,内置了 Qwen2.5-Coder-7B 模型交互能力,同时支持接入您自己的私有化大模型。

2024-12-17 19:43:13 1263

原创 k8M 新增 资源Describe 功能,保持与kubectl 显示格式一致,方便快捷

是一款集 AI 与 Kubernetes 于一体的轻量级控制台工具,专为简化集群管理设计。基于 AMIS 构建,并通过 kom作为 Kubernetes API 客户端,内置了 Qwen2.5-Coder-7B 模型交互能力,同时支持接入您自己的私有化大模型。

2024-12-17 07:00:00 512

原创 imap邮件备份工具对比分析

imap downloader 是一款开源 高效 安全的邮箱备份工具

2024-12-16 17:20:59 1332

原创 年底将至,又要备份邮箱了。推荐一个开源安全备份工具

可以将邮件从服务器端完整地下载到本地,包括邮件的正文内容以及所有附件,确保信息的完整性。支持按照指定的文件夹前缀进行有针对性的邮件备份,方便用户根据自己的需求选择特定的邮箱文件夹进行备份操作。最新版本为 v0.3,不断在功能和稳定性上进行优化和提升。

2024-12-16 16:22:20 1663 4

原创 CRC与常见哈希算法介绍与对比

在数字信息的高速发展中,确保数据的完整性和准确性成为至关重要的任务。无论是在网络传输、数据存储还是软件应用中,如何有效地验证数据是否被篡改或损坏都需要依赖高效的算法。它们通过生成固定长度的校验值来检测数据的完整性,并广泛应用于各种技术领域。本文将探讨这些算法的原理、特点、应用及相互比较,帮助读者全面了解它们的功能和适用场景。CRC算法基于多项式除法,它将数据视为一个多项式,并使用预设的生成多项式进行除法运算,最终余数作为CRC校验值。DJB2是一种简单的哈希算法,主要依赖乘法和位移操作来更新哈希值。

2024-12-13 15:33:06 676

原创 如何使用 Go 和 ANTLR 解析 SQL 查询中的 WHERE 子句

我正在开发一个开源项目 `kom`,目标是实现通过 SQL 查询 Kubernetes 资源。因为 Kubernetes 资源是 JSON 格式的嵌套结构,而不是传统的 db.table 结构,所以在处理 SQL 查询中的 `WHERE` 语句时,必须先将像 `x.y.z.m` 这样的属性改写为一个整体的字段,以便能够正确查询 Kubernetes 中的资源。

2024-12-13 15:18:51 788

原创 Kom——基于 SQL 查询的 Kubernetes 资源管理新思路

Kom 作为一款专为 Kubernetes 资源查询设计的工具,其新增的 SQL 查询功能为 Kubernetes 资源管理带来了显著的提升。通过全面支持各种资源类型、提供灵活多样的查询条件、实现简洁高效的查询操作以及强大的排序功能,Kom 在与传统的 Kubernetes 资源获取方式对比中展现出了明显的优势。无论是对于简单的内置资源查询还是复杂的自定义资源检索,Kom 都能够轻松应对,大大降低了查询的复杂性,提高了查询效率,并且方便了开发人员和运维人员在 Kubernetes 集群中的资源管理工作。

2024-12-11 22:12:51 833

原创 你敢相信吗,用SQL竟然能查k8s资源了,select * from deploy

使用sql语句查询k8s资源

2024-12-11 21:58:37 1291

原创 OCI 镜像格式全面解析与实践指南

在实际的容器化应用开发、部署和运维过程中,深入理解和熟练掌握 OCI 镜像的相关知识和技术,能够帮助开发人员和运维人员更好地构建和管理容器化应用,提高应用的质量和效率,促进容器技术在云计算、微服务架构等领域的广泛应用和持续发展。镜像层是容器镜像的实际数据存储单元,是 OCI 镜像的重要组成部分。本教程将深入探讨 OCI 镜像的各个方面,包括其标准格式、相关工具的使用以及与其他类似镜像格式(如 Docker 镜像、OSI 操作系统镜像)的对比等内容,旨在为读者提供全面、深入且实用的 OCI 镜像知识体系。

2024-12-10 15:44:54 1629

原创 基于Docker与Containerd的HTTP镜像仓库拉取配置全解析

本文详细阐述了Docker和Containerd在拉取HTTP镜像仓库时的配置过程,包括从配置文件的编辑到服务的重启,再到镜像的拉取以及常见问题的解决方案。在实际应用中,无论是构建企业内部的容器化应用环境,还是在测试和开发场景下使用HTTP镜像仓库,正确配置Docker和Containerd都是至关重要的。通过深入理解这些配置步骤和相关知识,可以更好地利用容器化技术,提高应用部署和管理的效率,同时也能够在遇到问题时快速定位并解决,保障容器化应用的稳定运行。(四)拉取HTTP镜像仓库中的镜像。

2024-12-10 15:27:10 1676

原创 Nginx Ingress Controller 基于选举 ID 的 Leader 选举机制深度剖析

摘要: 本文深入探讨了 Nginx Ingress Controller 如何通过选举 ID 实现 leader 选举机制,详细阐述了其原理、代码实现细节以及与 Endpoints 的交互过程,旨在全面解析该机制在保障系统高可用性方面的作用与实现方式,为深入理解 Nginx Ingress Controller 的分布式特性提供详尽参考。在 Nginx Ingress Controller 的代码库中,与 leader 选举相关的代码通常位于特定的包或模块中。(二)更新 Endpoints 选举标记代码。

2024-12-10 13:54:55 679

原创 看Kubernetes v1.31 如何解决大模型镜像大的问题? ImageVolume深度解析与应用实践

在镜像下载完成后,kubelet 并不会像处理普通容器镜像那样将其展开并运行容器进程,而是将镜像的文件系统以只读的方式挂载到 Pod 容器内指定的挂载点。容器运行时负责为容器创建一个隔离的文件系统视图,并将 ImageVolume 对应的镜像文件系统挂载到指定的路径下,使得容器内的应用程序能够像访问本地文件系统一样访问镜像中的 artifacts。在 Pod 启动过程中,Kubernetes 会自动处理该镜像的拉取(如果本地不存在)和挂载操作,将镜像中的内容以只读的方式挂载到容器内指定的目录路径下。

2024-12-10 13:37:23 1207

原创 Kubernetes Informer 机制全解析教程

在 Kubernetes(k8s)中,Informer 是一种极为关键的机制,用于缓存和高效检索资源对象信息,它能够有效减少对 API Server 的查询压力,并实现事件驱动的编程模型,使得客户端应用可以及时响应集群中资源的变化。通过以上对 Informer 机制核心源码的解析,我们可以深入理解其在 Kubernetes 集群中如何高效地管理资源对象信息,以及如何实现与客户端应用的有效交互,为开发基于 Kubernetes 的应用提供坚实的基础。一、Informer 概述。(三)事件处理及回调相关。

2024-12-10 13:11:28 951

原创 HTTP/3 教程:全面解析下一代网络协议

一、HTTP/3 简介HTTP/3 是 HTTP 协议的第三个主要版本,它在 HTTP/2 的基础上进行了改进,主要是为了解决 HTTP/2 在传输层存在的一些问题,特别是与 TCP 和 TLS 相关的延迟问题。HTTP/3 使用 QUIC(Quick UDP Internet Connections)协议作为其传输层协议,而不是传统的 TCP。二、QUIC 协议基础QUIC 是一种基于 UDP 的低延迟、高可靠的网络传输协议。它具有以下特点:(一)多路复用与 HTTP/2 类似,QUIC 允许在

2024-12-10 10:04:44 1334

原创 KCP 协议:优化 UDP 传输的高效可靠解决方案

同时,KCP 在接收端设有数据缓存与排序功能,将收到的数据依序列号缓存并重组,有效解决了 UDP 数据可能乱序的问题,保证应用层接收数据完整有序。KCP 的重传超时时间计算更灵活,如连续丢包时,TCP 的 RTO 翻倍增长,KCP 仅增长 1.5 倍,能更快重传数据。综上所述,KCP 协议凭借其在可靠性、传输效率、延迟和灵活性等方面的卓越特性,在众多对网络传输有特殊要求的领域发挥着不可替代的作用,无论是游戏开发、音视频通信还是分布式系统构建等方面,都为开发者提供了一种高效且可靠的网络传输解决方案。

2024-12-10 09:48:36 677

原创 浅析Ingress、GatewayAPI、Istio、Nginx对灰度发布的支持

浅析Ingress、GatewayAPI、Istio、Nginx对对度发布的支持

2024-12-09 09:43:07 1088

原创 九个例子带你解锁 Go 高性能编程的秘籍

在当今的软件开发领域,Go 语言凭借其出色的并发性能、简洁的语法和高效的内存管理,广泛应用于后端开发、云计算、分布式系统等众多领域。然而,要想让 Go 程序在各种复杂的场景下都能高效运行,开发者需要深入了解并运用一系列性能优化技巧。本文将为您详细介绍九大提升 Go 程序性能的实用秘籍,帮助您构建更加快速、稳定和资源高效利用的应用程序。但需牢记,在实际应用中应依据具体场景灵活运用,并且在优化后务必进行全面测试,确保程序在性能提升的同时保持正确稳定的运行状态。七、切片的优化操作与内存管理。

2024-12-09 07:00:00 585

原创 go语言读写锁中的lock unlock 跟互斥锁中的lock unlock有什么区别?

如果已经有其他goroutine持有读锁或写锁,则该goroutine会被阻塞,直到所有读锁和写锁都被释放。方法时,它会获取互斥锁,如果锁已经被其他goroutine持有,则该goroutine会被阻塞,直到锁被释放。中,所有操作(无论是读还是写)都是互斥的,这意味着在任何时候,只有一个goroutine可以访问共享资源。中,多个goroutine可以同时获取读锁(即并发读),只有当写锁被请求时,才会阻塞其他读和写操作。只提供一种锁,即互斥锁,无论是读操作还是写操作,都必须获取同一把锁。

2024-12-08 08:34:26 404

原创 认识Go语言中的锁,别再傻傻分不清

读锁,当有写锁时,无法加载读锁,当只有读锁或者没有锁时,可以加载读锁,读锁可以加载多个,所以适用于“读多写少”的场景。在并发编程中,锁是一种基本的同步机制,用于保护共享资源不被多个goroutine同时修改,从而避免数据竞争和保证数据一致性。当一个goroutine获取了互斥锁后,其他所有尝试获取该锁的goroutine都会被阻塞,直到锁被释放。方法用于获取互斥锁,如果锁已被其他goroutine持有,则等待直到锁被释放。调用会从获得的锁中排除新的读取锁,即写锁权限高于读锁,有写锁时优先进行写锁定。

2024-12-08 08:30:23 471

原创 让golang内存对齐不再神秘

而 int8 类型的 Gender 字段虽然只占用 1 字节,但由于要保证后续 NickName 字段(按照 8 字节对齐)的对齐要求,编译器会在 Gender 字段后填充 7 个未使用的字节,使得 NickName 的偏移量为 16。开发者应该在设计结构体和数据布局时,充分考虑内存对齐的影响,根据实际需求合理调整字段顺序,以达到最佳的编程效果。了解了内存对齐的原理后,我们可以通过调整结构体中字段的顺序来优化内存布局,减少填充字节的数量,从而节省内存空间。二、内存对齐的原理与规则。

2024-12-08 07:38:43 929

原创 golang轻松解析 JSON 数据方案

假设存在 JSON 字符串 {“name”: “Alice”, “age”: 25, “hobbies”: [“reading”, “swimming”]}。对于嵌套结构的 JSON 数据,如 {“person”: {“name”: “Bob”, “address”: {“city”: “New York”}}}。当 JSON 数据包含数组时,例如 {“fruits”: [“apple”, “banana”, “cherry”]}。上述代码会输出 Alice。四、gjson 的优势。

2024-12-08 07:38:21 854

原创 深入解析 Golang 并发读写锁

它通过合理的锁机制,有效平衡了读操作的并发性能与数据一致性保障之间的关系,允许多个协程同时进行读操作,但在写操作时保持独占性,防止数据竞争与不一致问题。当写操作协程获取写锁时,读操作协程会被阻塞在 rwMutex.RLock() 处,直到写操作完成并释放写锁后,读操作才能继续执行,清晰地展示了读写锁的互斥特性。缺点:同一时间只能有一个协程持有写锁,无论是读操作还是其他写操作都会被阻塞,在写操作频繁的场景下,会严重降低系统的并发性能,导致整体效率低下。(一)读锁(RLock)与释放读锁(RUnlock)

2024-12-08 07:38:05 635

原创 Git 提交信息重塑:清理多邮箱乱象,规整开发记录

在项目开发进程中,我们遭遇了一个棘手的问题:因众多开发环境的存在,代码提交记录里一人多邮箱与多名称的现象屡见不鲜。这仿佛在本应清晰的代码贡献版图上,搅起了层层迷雾,令开发贡献的统计与管理陷入困境,难以前行。待指令执行完毕,昔日繁杂无序的提交信息将焕然一新,统一的名称与邮箱标识将贯穿整个开发轨迹,使代码演进的脉络一目了然,开发数据的梳理与分析也将重回正轨,高效有序。别慌,Git 赋予了我们化解难题的利器。

2024-12-08 07:37:43 173

原创 Go 语言 context 用法全面解析

子协程在执行过程中,通过监听 ctx.Done() 通道来接收取消信号。在 Go 的并发编程中, context 是一个极为重要的工具,它为我们在处理多个 goroutine 以及复杂的请求处理流程时,提供了一种有效的控制手段。在实际的 Go 并发编程中,熟练掌握 context 的这些用法,并根据具体的业务需求合理选择和组合使用,能够帮助我们更好地管理 goroutine 的生命周期、控制操作的执行时间和范围以及实现请求范围内数据的共享,从而构建出更加高效、健壮且易于维护的并发程序。

2024-12-07 11:42:46 833

原创 使用 crictl 调试 Kubernetes POD

本文主要介绍了 crictl 的相关内容,包括其基本情况、安装方式、通用用法以及一些常见的命令示例,旨在帮助使用者利用 crictl 对 Kubernetes 节点上的容器运行时及应用进行检查和调试。

2024-12-07 07:19:58 685

原创 KinD(Kubernetes in Docker)简介

KinD(Kubernetes in Docker)是一个用于在本地机器上运行和测试 Kubernetes 集群的工具。它基于 Docker 容器技术,通过在容器中运行 Kubernetes 节点,为开发人员提供了一个轻量级、易于设置的 Kubernetes 集群环境。KinD 主要用于开发、CI/CD 流程中的测试环境搭建,或者用于在本地机器上进行快速的 Kubernetes 学习和实验。KinD 是一个强大的工具,可以帮助开发人员快速构建和管理 Kubernetes 集群,适用于本地开发、学习和测试。

2024-12-07 07:19:41 1406

原创 crictl 入门基础教程

是一个为 CRI(容器运行时接口)兼容的容器运行时提供的命令行工具。它允许开发人员直接与容器运行时交互,进行调试、查看状态和管理容器,而无需依赖 Kubernetes 的其他组件。,用户可以轻松地创建、管理、调试容器和镜像,查看资源使用情况,执行命令等。它对 Kubernetes 和容器运行时的开发者非常有用,尤其是在调试和管理容器时。是一个功能强大的命令行工具,可以帮助开发者与 CRI 兼容的容器运行时进行交互。提供了丰富的命令,可以帮助容器运行时的开发者调试和管理容器。更多详细信息和用法,参考。

2024-12-06 16:30:51 883

原创 使用 Docker `buildx` 进行跨架构构建与构建缓存

构建一个简单的 Go Web 应用,并编写了支持多平台的Dockerfile。配置了 Docker 环境,启用了binfmt和buildkit支持,确保可以进行跨平台构建。使用构建了支持x86_64和ARM64架构的镜像。启用了构建缓存,提高构建速度。将构建的镜像推送到 Docker Hub。通过使用,我们能够轻松实现跨架构的构建,并且优化了构建过程。如果你有更多问题或想要深入了解 Docker 构建的其他方面,随时联系我!

2024-12-06 16:26:31 998

原创 高可用性架构演练实验:如何配置 Keepalived 和 HAProxy 保证服务不停机

本实验通过模拟一个高可用性架构,展示了如何使用 Keepalived 和 HAProxy 配置实现主备节点的自动切换。通过 Docker 容器化部署,可以快速验证高可用性架构的实现过程。VRRP 协议的工作原理和应用;如何通过 Keepalived 配置主备节点的故障切换;使用 HAProxy 进行负载均衡与 VIP 流量转发;如何模拟故障转移与恢复操作,确保高可用性。掌握这些技能,对于搭建高可用服务和进行容错处理具有重要的实践价值。

2024-12-06 14:05:08 1332

原创 其实开发k8s controller也很简单

Kubernetes 控制器是一种控制循环(Control Loop),其目的是确保集群中资源的状态与期望的状态一致。控制器通过监视 Kubernetes 集群中的资源,并根据特定规则进行调整和操作,从而实现自动化和自愈机制。在文件中修改 CRD 结构,添加和字段。package v1import (在这里,字段是一个类型,允许用户定义标签选择器来过滤要操作的 Pod。是一个字符串,用于定义要标记到 Pod 注解中的集群名称。

2024-12-06 13:09:42 1357

keepalive实验全部脚本及代码

keepalive实验全部脚本及代码

2024-12-06

543876fd05734ccdfcf755f80f748c31.gif

543876fd05734ccdfcf755f80f748c31.gif

2024-12-03

PPT技巧大全

一些实用的ppt制作技巧,包括添加音乐等

2012-07-26

sqlite-3_5_9.zip

sqlite-3_5_9.zip 简单的数据库

2008-06-29

eWebEditor.rar

我自己常用的eWebEditor,绝对好用,我的系统都是用这个,呵呵

2008-06-29

CCword 操作 类 word 文字 插入 替换

CCword 用来操作word 插入文字等

2009-07-21

QuickJumplist

QuickJumplist 不错的跳转工具

2012-10-26

空空如也

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

TA关注的人

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