Skip to main content

半月刊 19 期 - 充实 3️⃣ 月

· 3 min read

时长: 一个月

凯旋门 - 香街

影视动漫

动漫

3 月 4 号手贱点开《吞噬星空》,万恶的视频号老给我推,导致一个星期沉迷动漫,看完 160 集。

学习阅读

阅读

重看《高效能人士 7 个习惯》互赖篇,我在这方面仍然需要时间摸索。

自媒体 - 小红书

找对标,改东西,做测试,爆了之后再复制。
一个人多做 3,4 个号
一天一更,找到对标后就行动,执行力要强

博客

AI 编程中的常见问题与挑战 - 开发人员使用 AI 工具的经验分享
股价系统图解:从基本面到心理分析的完整框架

AI编程中的常见问题与挑战 - 开发人员使用AI工具的经验分享

· 3 min read

现在的 AI 工具,已经能够:

  • 执行测试和开发任务,自动检测并修复代码规范和编译错误,并能够尝试修复偶误
  • 联网研究,并编写代码
  • 继承浏览器预览,通过预览结果捕捉错误

我不得不掌舵的地方

在编程过程中,ai 需要编写的内容越多,它就越容易出错。

系统图-01:股价, 从基本面到心理分析的完整框架

· 26 min read

最近编程太多,需要歇息一下,笔记主题也没新内容,所以打算做一张图搞懂某事/某物系列。想做这个系列跟我对系统思考执念有很大关系,要解决某些事情往往不是表面上看到的那么简单。我们常说头痛医头,脚痛医脚,就是医不好,还老反复就是这个道理。你以为是假新闻,其实是真实的明星奇葩经历;你以为班上那个怪咖不可能成为你的朋友,莫名其妙就成为你的好朋友;你以为再来一把就只是再来一把,天亮了。

个人博客网站备案完整指南:ICP备案和公安备案流程详解

· 4 min read

背景

  • 阿里云服务器: 备案要求你在阿里云有一个域名并且在阿里云有一台服务器
  • 准备基础的身份证明文件: 身份证,网站信息说明,网站负责人等
  • 签署《互联网信息服务备案承诺书》,阿里云会提供模板

备案说明

国内备案需要有两个申请,分别是 ICP 备案,另一个则是公安备案。

  • ICP 备案是针对网站的主题和网站本身基本信息的审查,证明网站合法性,提交对象是中国工业和信息化部
  • 公安备案则是关注网站内容的安全性和访问者的数据保护,侧重网站的安全性和内容审查,提交对象是公安机关

半月刊 15 期 - 阅读影视动漫

· 4 min read

调整: 将 周刊 改成 半月刊

阅读影视

《雨中曲 singin'in the rain》
I'm singin'in the rain~,
Just singin'in the rain~,
What a glorious feeling,
I'm happy again.
I'm laughing at clouds,
So dark up above,
The sun's in my heart,
And I'm ready for love.

《雨中曲 singin'in the rain》-歌词

《七年之痒 Seven-year itch》Happy ending 结局是真没想到。

这个镜头并未在电影里出现,只看到腿 🦵,拿这个做电影宣发确实吸引男人的目光。

《我独自升级》

爽动漫,草根变强,跟周星驰电影,我爱吃番茄的小说有着类似的故事结构。展现形式各不同,动漫、社会草根代表、修仙侠侣。

《火凤燎原》

三国时代没有正义,没有邪恶,是一帮绝顶聪明人的角斗场。愚昧迂腐肯定不是大上位者的品质,这是一个主角和反派智商全部在线的作品,反转颇多,细思极恐,动漫竟能过审也是神。缺点是出的太慢,这里出一部,日本最少出十部。

Kubernetes Operator 项目实践

· 5 min read

Kubernetes Operator Architecture 架构

典型工作流示例

1. 编写代码、生成 CRD 和 部署清单

1. 安装依赖

brew install kubernetes-cli
brew install kubebuilder

2. 创建项目

mkdir k8s-operator-deploy-scaler
cd k8s-operator-deploy-scaler

# Option
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPROXY=https://proxy.golang.org,direct # Default

kubebuilder init --domain scaler.com --repo github.com/xiaokatech/k8s-operator-deploy-scaler
go mod tidy # Update dependencies

  • domain: 指定 Kubernetes Operator 的  API 组(API Group)的域名部分。这是 Kubernetes API 资源定义中的一个关键字段,用于唯一标识你的自定义资源(CRD - Custom Resource Definition)。
    • 作用 1: Kubernetes API 资源通过  apiVersion  字段标识,格式为:<group>/<version>(例如  scaler.com/v1)。这里的  --domain  就是  <group>  的一部分,通常与你的组织或项目域名相关。
    • 作用 2: 使用域名(如  scaler.com)可以确保全局唯一性(类似 Java 的包名),防止与其他 Operator 的 API 组冲突。即使别人也创建了同名的资源(如  Deployment),但通过不同的域名可以区分开(如  yourcompany.com  和  scaler.com)。
kubebuilder create api --group api --version v1alpha1 --kind Scaler
make manifests # Update CRD

3. 更新 CRD 组件结构

make manifests # Reupdate CRD

apply -f config/crd/bases/api.scaler.com_scalers.yaml

每次更新 api/v1alpha1/scaler_types.go 文件后,记得运行 make manifests 然后安装 CRD apply -f config/crd/bases/api.scaler.com_scalers.yaml

4. 更新 CRD Controllers 组件结构

make run # Launch CRD Controller locally

kuberctl apply -f config/sample/api_v1alpha1_caler.yaml # @Test: test controller (CRD sample yaml file)

make install # Install CRD Controller into K8s cluster

5. 优化 CRD Controllers 组件结构

2. 构建镜像

export IMG=your-registry/your-operator:v1
make docker-build docker-push IMG=$IMG
  • 镜像内容包含编译后的 Operator 二进制文件和依赖项。

3. 部署到 Kubernetes 集群

关键操作

  1. 通过  kustomize  渲染最终部署文件(config/default/)。
  2. 依次创建以下资源:
    • CRD(如  myresources.mygroup.example.com
    • Namespace(默认  operator-system
    • RBAC(ServiceAccount/Role/ClusterRoleBinding)
    • Deployment(运行 Controller Pod)

4. Controller 启动流程

  1. Pod 启动

    • Kubernetes 根据  Deployment  创建 Pod,拉取镜像并运行 Operator 二进制。
    • 入口为  main.go  中定义的  Manager  启动逻辑:
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
setupLog.Error(err, "problem running manager")
os.Exit(1)
}

  1. 初始化 Controller

    • Manager 加载所有注册的  Reconciler(通过  SetupWithManager  方法)。
    • 建立 Informer 监听目标资源(Custom Resource/内置资源)。
  2. 事件监听

    • 通过  client-go  的  Informer  监听资源变更(Add/Update/Delete)。
    • 将事件转化为  Reconcile  请求,提交到工作队列。

5. 验证部署

object="operator-system"
kubectl get pods -n $object
kubectl logs -n $object deploy/operator-controller-manager -f

6. 卸载部署

make undeploy  # 删除所有部署资源
kubectl delete crd myresources.mygroup.example.com # 可选:删除CRD

Kubernetes Operator 项目常用的 make 指令

Kubebuilder 项目中,make 命令是与项目构建、代码生成和部署相关的核心工具。以下是常用的 make 指令及其作用详解:


1. 项目初始化与脚手架

指令作用示例场景
make init初始化 Kubebuilder 项目,生成基础目录结构(如 api/config/首次创建项目时执行
make create-api创建新的 API(CRD)和 Controller 脚手架需要新增自定义资源时:make create-api GROUP=mygroup VERSION=v1 KIND=MyApp

2. 代码与 CRD 生成

指令作用输出位置
make generate生成客户端代码(如 deepcopy 函数)zz_generated.deepcopy.go
make manifests生成 CRD YAML 文件(基于 // +kubebuilder 标记)config/crd/bases/ 目录
make generate manifests同时执行 generatemanifests(常用组合)修改 API 定义后必须执行

3. 构建与测试

指令作用注意事项
make build编译 Operator 二进制文件输出到 bin/ 目录
make test运行单元测试需提前编写 _test.go 文件
make test-e2e运行端到端测试(需已部署 Kubernetes 集群)依赖 kubectl 和集群连接

4. 镜像与部署

指令作用关键参数
make docker-build构建 Operator 的 Docker 镜像通过 IMG=my-operator:v1 指定镜像名
make docker-push推送镜像到远程仓库需提前登录 docker login
make deploy将 Operator 部署到集群(依赖 config/manager 配置)通常配合 IMG 使用:make deploy IMG=my-operator:v1
make undeploy从集群中卸载 Operator清理所有相关资源

5. 开发调试

指令作用使用场景
make install将 CRD 安装到当前集群(不部署 Operator)快速测试 CRD 定义
make uninstall卸载 CRD清理测试环境
make run本地运行 Operator(脱离集群,用于调试)依赖 kubeconfig 访问集群

6. 清理与辅助

指令作用备注
make clean删除构建产物(如二进制文件)不删除生成的代码或 CRD
make help显示所有可用的 make 指令及其说明快速查阅