oceanweave
码龄10年
关注
提问 私信
  • 博客:462,649
    社区:130
    462,779
    总访问量
  • 147
    原创
  • 14,453
    排名
  • 435
    粉丝
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2014-12-11
博客简介:

叮当猫的喵i

查看详细资料
  • 原力等级
    成就
    当前等级
    5
    当前总分
    1,602
    当月
    25
个人成就
  • 获得689次点赞
  • 内容获得69次评论
  • 获得1,678次收藏
  • 代码片获得2,193次分享
创作历程
  • 22篇
    2024年
  • 37篇
    2023年
  • 96篇
    2022年
  • 16篇
    2021年
  • 1篇
    2019年
  • 1篇
    2017年
成就勋章
  • 入选《云原生领域内容榜》第33名
TA的专栏
  • k8s核心内容
    付费
    9篇
  • Kubernetes学习笔记
    77篇
  • mac使用
    2篇
  • Go学习笔记
    32篇
  • 环境配置
    6篇
  • Docker
    8篇
  • 网络学习笔记
    15篇
  • git
    4篇
  • linux命令
    15篇
  • 容器学习笔记
    3篇
  • kubernetes网络
    1篇
  • linux基础知识
    1篇
  • 基础知识
    1篇
  • k8s排错及配置
    10篇
  • linux工具
    1篇
  • Kubernetes
    1篇
  • etcd
    1篇
  • go
  • 学习笔记
    1篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

347人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【k8s 深入学习之 event 聚合】event count累记聚合(采用 Patch),Message 聚合形成聚合 event(采用Create)

【代码】【k8s 深入学习之 event 聚合】event count累记聚合(采用 Patch),Message 聚合形成聚合 event(采用Create)
原创
发布博客 2024.12.03 ·
420 阅读 ·
5 点赞 ·
0 评论 ·
2 收藏

【k8s深入学习之 event 记录】初步了解 k8s event 记录机制

通常这种信号用于通知相关的 goroutine 或者处理流程,广播器已经停止工作,可以做一些清理操作或者退出。实现 Kubernetes 控制器中的事件管理,适合用于开发自定义控制器或调试集群事件处理逻辑。对象的停止和关闭控制。具体来说,它的作用是在广播器的生命周期中进行信号传递,用于通知。无缓冲的通道用于信号传递,表示某个事件的发生,而不需要传递具体数据。,控制写入时的并发,避免同一时间写入 event 过多导致错乱(这部分逻辑在。中的作用是提供一个停止信号,通知正在运行的 goroutine(如。
原创
发布博客 2024.12.02 ·
1302 阅读 ·
27 点赞 ·
0 评论 ·
18 收藏

【k8s深入理解之 Scheme 补充-7】理解无版本资源、有版本资源、元数据信息等联系和区别

无版本资源在 Kubernetes 中主要用于描述全局性的信息和状态,它们不参与版本控制,也不进行版本转换。常见的无版本资源包括Status和等。这些资源通常用于提供 API 资源的发现、反馈信息或元数据,而不是用于代表长期存在的 API 对象。位于位于无状态资源的用途通过和等资源,用户可以查询 Kubernetes 集群支持的所有 API 版本和 API 组。它们提供集群的元数据,帮助客户端了解哪些资源是可用的。通过查询APIGroup。
原创
发布博客 2024.11.28 ·
1076 阅读 ·
24 点赞 ·
0 评论 ·
25 收藏

【k8s深入理解之 Scheme 补充-6】理解资源外部版本之间的优先级

中,记录的是版本的优先级顺序。中,记录的是版本的注册顺序。都是 Kubernetes。
原创
发布博客 2024.11.28 ·
703 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

【k8s深入理解之 Scheme 补充-5】理解 Scheme 中的 converter(记录版本转换函数)和 fieldLabelConversionFuncs(记录标签转换函数)

附录1 | Scheme 中 fieldLabelConversionFuncs 和 converter 有什么关联或区别吗在 Kubernetes 的代码中, 是核心的类型注册和处理工具,而其中的 和 是两种不同但相关的机制,分别处理字段标签转换和对象转换。以下是它们的定义、作用和相互关系的详细解析: 是 中一个字段,它是一个映射(map),用于存储特定资源的字段标签转换函数。类型定义(伪代码):作用功能:处理 Kubernetes API 查询中的字段选择器()。当用户在 API 请
原创
发布博客 2024.11.28 ·
611 阅读 ·
17 点赞 ·
0 评论 ·
11 收藏

【k8s深入理解之 Scheme 补充-4】理解资源的内外部版本(存放位置不同、版本转换函数自动生成、版本新增字段等)

实现的。这种设计确保了不同版本的 API 能够保持兼容性,同时使内部版本的结构更适合核心逻辑处理。以下是转换机制的详细解析,包括内部版本是否包含所有外部字段以及转换过程是否需要通过内部版本中转。
原创
发布博客 2024.11.28 ·
1149 阅读 ·
22 点赞 ·
0 评论 ·
20 收藏

【k8s深入理解之 Scheme 补充-3】理解 k8s 各个库(apimachinery、api、kubernetes)的关系

是 Kubernetes 的核心模块,它们在功能上有明确的分工,共同构建 Kubernetes 的生态系统。与 Kubernetes API Server 交互时引用这些类型。用于编写客户端代码,比如使用。
原创
发布博客 2024.11.28 ·
1031 阅读 ·
16 点赞 ·
0 评论 ·
20 收藏

【k8s深入理解之 Scheme 补充-2】理解 register.go 暴露的 AddToScheme 函数

是专门设计为供外部调用的接口,用于将当前 API 组的所有资源类型和相关逻辑(如默认值和转换函数)注册到全局 Scheme 中。它通过封装复杂的注册逻辑,提供了一个统一、简单且易于使用的接口,大大降低了集成的复杂性。是专门供外部调用的接口。它的主要作用是将当前 API 组的所有资源类型、元数据、版本等注册到全局的。,从而支持这些类型的序列化、反序列化、默认值设置和版本转换等操作。测试代码中需要模拟某些资源的序列化或反序列化操作时,也需要调用。通常会被 Kubernetes 的核心组件或工具(如。
原创
发布博客 2024.11.28 ·
1024 阅读 ·
7 点赞 ·
0 评论 ·
18 收藏

【k8s深入理解之 Scheme 补充-1】理解 Scheme 中资源的注册以及 GVK 和 go 结构体的映射

是对 API的初始化,通常是注册流程的起点。是高层次的封装,用于批量注册资源类型。是低层次的实现,用于更精细地注册单个资源类型,特别是需要自定义Kind的场景。获取的是指针类型所指向的元素类型的名称,通常用于获取结构体类型的名称。
原创
发布博客 2024.11.28 ·
1095 阅读 ·
16 点赞 ·
0 评论 ·
8 收藏

【k8s深入理解之 Scheme】全面理解 Scheme 的注册机制、内外部版本、自动转换函数、默认填充函数、Options等机制

这段代码的作用是将多种与资源操作相关的选项类型(如GetOptions等)注册到Scheme中,以便 Kubernetes API 服务器在处理这些操作时能够识别和正确序列化/反序列化这些类型。这样可以确保 API 请求中的参数能够在不同版本的 API 之间正确处理,并且在资源操作(如列出、获取、创建、删除)时提供灵活的选项。是 Kubernetes API 中列出资源时的参数,允许你控制返回的资源内容、过滤方式、分页和排序。在 Kubernetes Go 客户端中,通过。
原创
发布博客 2024.11.27 ·
1035 阅读 ·
4 点赞 ·
0 评论 ·
25 收藏

【k8s之深入理解调度】调度框架扩展点理解

参数主要控制调度器在Permit阶段等待的行为,具体来说,它定义了调度器等待 Pod 获得“Permit”(许可)的最大时长。也就是说,如果一个 Pod 在Permit阶段被插件要求等待,调度器会根据设定的时间限制,等待这个 Pod 获得许可。的作用是在Permit阶段控制调度器等待 Pod 被允许调度的时间,适用于需要等待特定条件的场景,如 Pod 协同调度、资源协调、或任务队列管理。如果在指定时间内没有获得许可,调度将超时并失败。
原创
发布博客 2024.10.03 ·
1573 阅读 ·
19 点赞 ·
0 评论 ·
12 收藏

【k8s深入理解之csi插件】理解存储 csi 插件的总体逻辑框架

下面的分析是k8s通过ceph-csi(csi plugin)接入ceph存储(csi相关组件的分析以rbd为例进行分析),对csi系统结构、所涉及的k8s对象与组件进行了简单的介绍,以及k8s对存储进行相关操作的流程分析,存储相关操作包括了存储创建、存储扩容、存储挂载、解除存储挂载以及存储删除操作。CSI是Container Storage Interface(容器存储接口)的简写。
原创
发布博客 2024.10.03 ·
1242 阅读 ·
15 点赞 ·
0 评论 ·
14 收藏

【环境配置】go多版本管理工具gvm

Go语言版本管理器(Gvm)是管理Go语言环境的开源工具。支持安装多个版本的Go并管理每个项目的模块。它最初由开发,Gvm与Ruby RVM类似,允许你为每个项目或一组项目创建一个开发环境,分离不同的Go版本和包依赖关系,来提供更大的灵活性,以防不同版本造成的问题。Gvm管理Go的多个版本,包括安装、卸载和指定使用Go的某个版本查看官方所有可用的Go版本,同时可以查看本地已安装和默认使用的Go版本管理多个GOPATH,并可编辑Go的环境变量可将当前目录关联到GOPATH可以查看GOROOT。
原创
发布博客 2024.08.05 ·
1233 阅读 ·
3 点赞 ·
1 评论 ·
8 收藏

【kubebuilder 学习之初学】编写官方样例 Cronjob Controller

/ +kubebuilder:object:root=true 标记这是一个根对象,这个类型直接对应于一个 Kubernetes API 资源,而不是嵌套在其他资源中的子资源。// +kubebuilder:resource:shortName=cj2 执行该类型的缩写为 cj2// +kubebuilder:subresource:status 为该类型生成个 status 子资源// 用户自定义 crd。
原创
发布博客 2024.06.25 ·
862 阅读 ·
20 点赞 ·
0 评论 ·
13 收藏

【k8s调度】梳理调度相关知识与device plugin

比如,PodFitsHost 算法(负责的是,检查 Pod 的 nodeSelector 与 Node 的名字是否匹配),这种情况下,除非 Node 的名字发生变化,否则你即使删除再多的 Pod,抢占者也不可能调度成功。具体来说,在为某一对 Pod 和 Node 执行 Predicates 算法的时候,如果待检查的 Node 是一个即将被抢占的节点,即:调度队列里有 nominatedNodeName 字段值是该 Node 名字的 Pod 存在(可以称之为:“潜在的抢占者”)。
原创
发布博客 2024.03.25 ·
1415 阅读 ·
13 点赞 ·
1 评论 ·
11 收藏

【k8s网络】梳理cni发展脉络

设备非专业术语作用Docker0网桥理解为二层交换机,处理包头为 mac 的数据包网络栈存储用于通信的网络设备和规则等(网卡、路由表、iptables规则等)一个 net namespace 可以简单理解为,一个主机–net=host,表示容器共享宿主机的网络栈(此时可理解为两个人共用一套设备),此时可提高通信效率,但可能会端口冲突veth pair网线用于联通不同的 net namespace,可以理解为连接两个主机间的网线。
原创
发布博客 2024.03.25 ·
1581 阅读 ·
13 点赞 ·
0 评论 ·
31 收藏

【K8S内外部版本】一文了解 Kubernetes 资源内部版本internal与外部版本v1等及Schema注册

以Pod资源代码定义为例,代码示例如下。
原创
发布博客 2024.03.05 ·
1294 阅读 ·
18 点赞 ·
0 评论 ·
10 收藏

【K8S类型系统】一文梳理 K8S 各类型概念之间的关系(GVK/GVR/Object/Schema/RestMapper)

Group 组、Version版本、Namespace 命名空间,这些都很容易理解,都是为了隔离,资源版本隔离(Group、Version)和用户资源隔离(Namespace)Kind 对象类型,如 Kind=Sh 对应 sh 类型文件,Kind=Doc 对应 doc 类型文件Resource 可以理解为 Kind 的含义补充,用于获取真正的资源对象;GVK 专注于类型定义,确定是哪种资源对象,GVR 专注于获取资源对象或对资源对象进行操作;
原创
发布博客 2024.03.01 ·
1219 阅读 ·
10 点赞 ·
1 评论 ·
28 收藏

【git使用】常用的 git 撤销操作(restore、reset、revert)

注意坑新增文件是未被跟踪状态(untracked),也就是下面命令不会对此文件生效所以新增文件,需要先被 git 记录到,也就是 git add new-file之后执行这些操作,就会生效了# 丢弃工作区的修改(不包括对文件自身的操作,如添加文件、删除文件)# 将暂存区的修改重新放回工作区(包括对文件自身的操作,如添加文件、删除文件)# 撤销最新的 commit,将其改动放回到 工作区git reset HEAD~ # 或 git reset --mixed HEAD~ 都是同一个意思。
原创
发布博客 2024.01.04 ·
1569 阅读 ·
10 点赞 ·
1 评论 ·
17 收藏

【git使用】深度理解 git merge合并的使用场景

因此对于 merge commit,只需要记录究竟是保留了 A 的改动还是 B 的改动即可,因此大多数情况下我们 merge commit 都是没有变更的,只是个记录。首先,关于 commit,我们可以理解为,每个 commit 会保留一个 pointer 指向它的 parent commit,并且一般我们的 commit 只有一个 parent。例如上面的例子,A 改成了 123,B 改成了 456,因此存在冲突,解决冲突的时候改成了 789,因此 merge commit 有了改动。
转载
发布博客 2024.01.04 ·
1912 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏
加载更多