3.2k3 分钟

# 实验准备(制造测试数据) 在备份前,先在集群中创建一点数据,用于后续验证恢复效果: kubectl create namespace etcd-test kubectl run test-pod --image=nginx -n etcd-test # 阶段一:执行快照备份 (Backup) 1. 确认参数并执行备份 备份必须携带三个证书,并且务必加上 ETCDCTL_API=3 环境变量。考场上快照的目标路径会由题目指定(例如 /opt/etcd-backup.db)。 ETCDCTL_API=3 etcdctl \ --endpo
2.9k3 分钟

实验拓扑规划: Master 节点: 192.168.44.121 (Hostname: master) Worker 节点 1: 192.168.44.122 (Hostname: node1) Worker 节点 2: 192.168.44.123 (Hostname: node2) 当前版本 v1.29.15,目标版本 v1.30.14),升级必须遵循**先控制平面(Master),后工作节点(Worker)**的铁律。且不能跨次版本升级,比如 1.29 升到 1.31,必须经过 1.30。 整体步骤: 阶段一 1. 修改 Yum 源并更新缓存 2. 查找可用的目标版本 3. 安装选
7.5k7 分钟

下面是针对 CentOS 环境搭建K8s集群。 实验拓扑规划: Master 节点: 192.168.44.121 (Hostname: master) Worker 节点 1: 192.168.44.122 (Hostname: node1) Worker 节点 2: 192.168.44.123 (Hostname: node2) 基础网络环境部署参考使用VMware安装3台虚拟机.pdf # 第一阶段:全局基础环境配置 在 CentOS 系统中,必须先处理 Firewalld 和 SELinux,否则组件之间的通信会被拦截。登录你的终端,分别在三台机器上执行。 1. 设置主机名与 h
2k2 分钟

我们将采用**“宏观架构 -> 核心链路 -> 设计哲学”的顺序进行源码阅读 第一阶段(宏观架构)的目标不是看懂每一行代码,而是要像架构师一样思考:Cobra 是如何定义“命令”这个概念,以及它们是如何组装在一起的? 1、核心抽象:一切皆是节点 (The Node) 在 Cloud Native 的世界里(比如 K8s 的资源定义),我们习惯了看 YAML 里的层级结构。Cobra 的源码其实就是用 Go 语言的结构体(Struct)在内存中还原这种层级。 在 command.go 中定位到 type Command struct这个结构体,这个结构体非常大,但主要关注三类字段:
5.2k5 分钟

现在,我们要追踪一个请求从进入 Gin 到处理完成的全过程。在系统设计中,这被称为 “Hot Path”(热路径) —— 即系统运行最高频、对性能影响最大的那段代码。 # 1、接管请求–唯一的入口 gin.go 文件中找到 ServeHTTP 方法 func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) { ... // 1. 复用上下文实例 (Resource Pooling) // 从 sync.Pool 中获取 Context 对象,显著
2k2 分钟

这里会通过源码基本阅读流程阅读gin源码,通过三步源码阅读策略掌握打破恐惧,掌握基本源码阅读视角。 # 核心文件 gin.go: 项目叫 Gin,同名文件。 在 Go 项目中,与包名同名的文件通常包含库的入口函数、版本信息或者核心结构体初始化逻辑。 context.go: 上下文。 Context 用来串联请求生命周期的(存参数、存响应、控制超时)。 tree.go: 树。 看到数据结构命名的文件,通常是核心算法所在。对于 Web 框架,它是处理路由匹配的地方。 routergroup.go: 路由组。 这对应我们写代码时的 r.Group("/v1"
6k5 分钟

当程序跑起来后,如何优雅地处理错误,以及如何让 CLI 工具与操作系统(信号)完美对话,是区分“脚本”与“工程”的关键。 普通的“脚本”就像一个一次性纸杯,用完即丢,报错了就直接崩溃。但“工程级工具”(如 kubectl 或 docker)需要像一台精密的工业机器:它得知道什么时候该初始化(Hook),报错时得体面(Error Handling),最重要的是,当有人想“拔插头”时(Ctrl+C),它不能把数据搞坏(Context)。 这三者之间的逻辑链条是: 反馈机制:先解决“程序出错了怎么优雅地告诉用户”(RunE & Silence)。 执行流程:再解决“程序运行前后的标准化动作
7.1k6 分钟

# 准备工作 安装 cobra-cli,会被安装到 %GOPATH%\bin\cobra-cli.exe(默认:C:\Users\你的用户名\go\bin\cobra-cli.exe) go install github.com/spf13/cobra-cli@latest 初始化工作 mkdir cobra-study cd cobra-study go mod init cobra-study cobra-cli init 可以得到如下内容 PS C:\Users\Bondrewd\Desktop\Project\PAB\code_study\cobra-study
8.8k8 分钟

• 源代码地址:go/src/context/context.go at master · golang/go · GitHub # 功能简介 为什么需要:Go 的协程(Goroutine)是一旦启动就很难从外部强行关闭的。Context 的核心作用就是通知协程:“任务取消了,或者时间到了,别干了,赶紧退出。” 设计核心思想是什么:可以把 Context 想象成一棵树:根部发出信号,所有枝叶(协程)都要监听这个信号 # 功能分析 # 0. 接口核心 定义: type Context interface {     Deadline(
1.6k1 分钟

《鸟人》展现了一个被困在过去的有限游戏胜利(“鸟人头衔”)中的演员里根,如何试图通过发起一场无限游戏(排演一部严肃话剧)来救赎自己,却因过于严肃追求“艺术真实性”这个新头衔,而险些将新游戏也变成另一场有限游戏的挣扎过程。 过去的里根是商业电影明星,拥有“超级英雄鸟人”这个头衔,是这个有限游戏的赢家。但电影结束了,大众媒体赋予他头衔,却成为了无法摆脱的幽灵。头衔也吞噬了他,他不再是里根-汤姆森,而是“那个扮演鸟人的人”。这个幽灵代表了过去有限游戏的规则,诱惑里根回到那个简单的、来钱快、能获得即时认可的商业游戏中去,否定他现在的努力。 为了摆脱这个“鸟人”的头衔,里根押上全部身家,自编自导一部严肃