在使用 Goland 看代码的过程中,经常使用查看代码引用点的功能,但是在查阅大型项目源码时,引用大部分为 test 文件的,导致看代码逻辑效率很低。
envtest 安装踩坑笔记
controller-runtime/pkg/envtest
使我们在写单测的时候可以不依赖 K8s 组件(API Server、Kubelet 等)去模拟 K8s 资源。
本文对于自己在 Mac 环境下安装 envtest 过程遇到的坑做一些记录。
K8s Pod 何时会被删除?
最近在梳理 Kubelet 的源码实现,从源码入手整理了下 Kubelet 以及 kube-controller 删除 Pod 的场景。
本文K8s版本参考v1.20.6
K8s Pod 状态何时会为 Failed
Client-go 的 UpdateStatus 接口你用对了吗?
最近发现一个问题,发现使用 client-go 并行调用 UpdateStatus 接口与 PATCH 更新 annotation 会出现覆盖写的问题,这与之前的理解不一致,这里做一个记录。
先说结论:client-go 的 UpdateStatus 会 PUT 更新 Pod 的 Status 字段与 metadata 字段。
K8s 集群证书问题记录
最近在环境中部署了一个 Virtual-Kubelet,由于它与 APIServer 的证书交互出了一些问题,导致了一些功能不可用,故去了解了下 K8s 集群的所有证书与关系,做一个梳理。
如何看到 Pod 的失败原因
在生产环境中,如果没有配置合适的告警,可能会发现某个 Pod 有 restartCount,但是由于已经重启了超过一小时,没有相关的 Events,导致无法看到响应的 Pod 重启原因。想要捕获每一次 Pod 退出异常,K8s 为我们提供了 Pod.spec.container[0].terminationMessagePath field ,来记录 Pod 异常退出时的信息。