在 go 中如果希望调用某些模块的私有方法,可以使用 //go:linkname
来实现,过程很简单,以调用 runtime.fastrand
为例
go http 中间件
在 go 里实现一个 http 中间件并不难,使用洋葱模型即可。本篇代码参考 https://github.com/urfave/negroni
Golang I/O 的限流与计数
这里的限流指,对于某个 I/O 接口,例如 HTTP handler 的 resp.Body,实现一个方法实现限流,比如限制这个接口的传输速度是 5MB/s 。而计数指,对于某个 I/O 接口,例如 io.Reader,实现一个方式实现对其 Read 方法读取数据速率的实时计算,这样子在实现 http get 的时候就可以实时打印下载速度了。
k8s debug cli 最初版
一次偶然的机会看到了这篇文章 《简化 Pod 故障诊断: kubectl-debug 介绍》,感觉这个实现挺有意思的,准备自己实现一个。这里借鉴了文章中工具的大体设计思路以及获取容器 ID 的方式,其他的大体都是自己思考和实现的,同时,实现的功能比较粗糙,比如诊断容器写死为 busybox、只能进入 exec -it 风格的交互模式等、数据传输过程未加密、执行加入 Pod 中第一个容器的命名空间、容器运行时只能使用 docker 不兼容 containerd 等。
kubebuilder 构建 deployment + service
参(抄)考(袭) [https://github.com/cnych/opdemo]
目前我对于 CRD 以及自定义 Operator 的理解是,利用 Kubernetes 已有的资源,例如 Deployment、Service、Pods 通过组合构建出更加复杂的应用。就像是这个 appservice-operator 一样,利用 Deployment + Service 构建出了一个 AppService 资源,这样在部署的时候不用分别部署 Deployment 和 Service,而是直接部署 AppService 即可。下面简述一下 AppService Operator 构建的过程。
CNI 插件 flannel-vxlan 使用实操
这里主要研究 flannel-vxlan ,flannel-vxlan 是 overlay 类型的网络。本次实操无需安装 Kubernetes,直接调用插件来配置容器网络。
Kubernetes 网络插件 CNI 初探
仅仅是初步学习一下 CNI 的运作流程
2021暑期实习总结
第一次面试,精神压力贼大
如果删除程序正在打开的文件会发生什么
依旧是面试字节实习生时遇到的面试题,当时没答出来,现在来学习一波。