欢迎来到我的博客,也欢迎在Telegram交流

毕业季
你永远不知道意外和明天哪一个先到来,就像我不知道实习转正失败这种时期会发生在我的身上 大概是怪我秋招运气不好,没有任何一家公司愿意面我,朋友给的内推也完全没有用上 总之,快到寒假的时候,我就稀里糊涂的在boss上接到了面试邀请,稀里糊涂就在深圳开启了我的第二段实习 第二段实习总归没有遇到黑心公司让我实习带实习了,mt也非常负责任,公司说可以转正,mt也可以说是把很多东西教会给了我 做了一个多月,搓了一堆小工具,然后ld竟然认为这个算是“产出” 到了三月份,突然有机会接手各类排障工单,也在这个过程中学到了非常多的东西,后面基本所有的排障我都能找出原因,我认为我已经成长为了拥有3-5年经验的sre了(至少在排障上 突然四月份,总部那边进来了两个实习生,又过了几个星期,说hc全部冻结,这个时候我以为除了我们这些转正的后面不会招人了,没想到这只是个开始 就这样靠着ld画的饼干到了6月份,结果有一个实习生去打探风口,就直接说不能转正,一开始包括我在内的三个实习生都以为是只是走一个人,因为当时的mt还跟我说有两个实习生转正名额 再过了一个星期,在周一的一次ld让我排障的时候,他突然问了嘴:“你实习到什么时候?” 那其实意思很明确了,那就是没得转正,就这样,我提起了离职,混到了周五,自此,我就这样从公司“毕业” 躺尸了几天之后我就回了学校,对外嘴硬说是因为学校有大显示器打游戏爽,其实只有自己知道,屏幕上跳动的全是投出去、又石沉大海的简历 当然回学校也有个原因,去年我的习概挂了,结果考试精准安排在正常拿毕业证的那一天,就这样,我算是坐在以后可能不会再热闹的宿舍里面,看着舍友一步步把东西搬空,先我离去了,又因为是周末,他们又都要回去工作,连个散伙饭都没吃 没想到,我的学生时代就是这样,毫无遮拦的过去了。

【云原生踩坑实录】双网卡策略路由与 rp_filter 导致的 Pod 访问 Service 阻断排查
一、故障现象 在一次客户升级内存CPU之后,服务全挂 最早暴露出来的是 CoreDNS 一直起不来,日志持续报错: 1 2 [INFO] plugin/ready: Still waiting on: "kubernetes" [WARNING] plugin/kubernetes: Kubernetes API connection failure: Get "https://10.43.0.1:443/version": dial tcp 10.43.0.1:443: i/o timeout 这说明 CoreDNS 的 kubernetes 插件无法访问集群内的 Kubernetes API Service,也就是 10.43.0.1:443。 复杂的是,机器里面有两张网卡,ens192和ens224 1 2 3 4 5 [root@linglang-Bi server]# ip route default via 192.168.1.1 dev ens192 10.42.0.0/24 dev cni0 proto kernel scope link src 10.42.0.1 192.168.1.0/24 dev ens192 scope link 192.168.30.0/24 dev ens224 scope link 二、确认 apiserver 存活状态 先查节点状态: ...

【云原生踩坑实录】当 rm 遇到 EBUSY:监控组件引发的 Pod 假死排查
一、环境与现象 1.1 环境信息 项目 值 OS CentOS 7 Kernel 3.10.0-1160.119.1.el7.x86_64 容器编排 K3s (内置 containerd) CNI Flannel 1.2 故障现象 在之前客户环境升级组件时,经常有pod长期处于Terminating状态导致无法升级的情况 我在相同内核版本的测试机复现了这个环境,升级后出现多个 Pod 长时间卡在 Terminating 状态无法销毁,新 Pod 处于 Pending: 1 2 3 4 5 6 7 8 9 $ kubectl get pods | grep -E "Terminating|Pending" spark-job-engine-controller-c46bfcc7d-vtpdj 0/1 Pending 0 25h langfuse-worker-8588567885-vxkxw 0/1 Terminating 7 8d analytics-server-controller-7bcf876764-mkg2w 0/1 Terminating 4 8d langfuse-redis-6c5b76587f-4jj26 0/1 Terminating 4 8d langfuse-web-b4bf858d8-2l4xv 0/1 Terminating 11 8d grafana-controller-59cc7fd9bd-dpb7t 0/1 Terminating 4 12d spark-job-engine-controller-c46bfcc7d-xr2g4 0/1 Terminating 2 5d19h analytics-admin-controller-6fb9f7c5b5-ppv2h 0/1 Terminating 7 12d 1.3 Kubelet 报错 1 2 3 4 5 6 7 8 9 10 11 12 13 $ journalctl -u k3s --no-pager -n 500 | grep "device or resource busy" E0331 11:27:25.242419 kuberuntime_manager.go:1040] "PodSandboxStatus of sandbox for pod" err="...remove netns: unlinkat /var/run/netns/cni-4c32477c-303b-b39b-d8df-d94fae2326ff: device or resource busy" pod="default/spark-job-engine-controller-c46bfcc7d-xr2g4" E0331 11:27:25.242649 kuberuntime_manager.go:1040] "PodSandboxStatus of sandbox for pod" err="...remove netns: unlinkat /var/run/netns/cni-d45c9dbd-42b7-e043-17ff-d4881623b543: device or resource busy" pod="default/langfuse-redis-6c5b76587f-4jj26" # ...其余 4 个 Pod 报同样的错误 共 6 个不同的 netns 文件触发 EBUSY,对应 6 个不同的 Pod。 ...

【云原生踩坑实录】记一次 K3s 网络深坑:为什么宿主机访问 ClusterIP 会超时丢包
记一次 K3s 网络深坑:为什么宿主机访问 ClusterIP 会超时丢包 TL;DR 由于旧版内核(3.10)与网卡硬件校验卸载(Checksum Offload)不兼容,导致跨节点 VXLAN 封包的 UDP Checksum 错误,被目标节点内核拦截。 背景 故障复现环境 OS: CentOS 7 (Kernel 3.10) K8s Distro: Client Version: v1.18.3-k3s1 Server Version: v1.18.3-k3s1 CNI: Flannel (VXLAN) 网络拓扑资源 宿主机 Node IP: 10.66.3.15 (Gateway: 10.66.3.125) Service CIDR: 10.43.0.0/16 Pod CIDR: 10.42.0.0/16 目标服务: spark-webui (ClusterIP: 10.43.236.230:8080) 1 2 3 4 5 6 [root@master-node ~]# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME worker-1 Ready <none> 4y52d v1.18.3-k3s1 10.66.3.18 <none> CentOS Linux 7 (Core) 3.10.0-862.14.4.el7.x86_64 docker://18.6.3 worker-2 Ready <none> 50d v1.18.3-k3s1 10.66.3.34 <none> CentOS Linux 7 (Core) 3.10.0-862.14.4.el7.x86_64 docker://18.6.3 master-node Ready master 4y242d v1.18.3-k3s1 10.66.3.15 <none> CentOS Linux 7 (Core) 3.10.0-862.14.4.el7.x86_64 docker://18.6.3 worker-3 Ready <none> 50d v1.18.3-k3s1 10.66.27.195 <none> CentOS Linux 7 (Core) 3.10.0-862.14.4.el7.x86_64 docker://18.6.3 故障现象记录与排查 在某个客户的环境中 ...

套娃安装OpenClaw
前言 最近OpenClaw又火了,第一次给我的观感像我以前玩过的AutoGPT,只不过现在的模型能力强得多了,能做的事情更多了,最大的改进我觉得就是能接入各种IM做你的私人助手吧(笑 但是看到这么多朋友都搞上了,我也想试试 调研一波发现没Mac会大大束缚OpenClaw的能力,想保存个文件都没那么顺畅 至此,我决定使用Docker上安装MacOS再装OpenClaw的套娃操作 2. KVM 宿主机的准备 这次我是在我的HomeLab上安装的,配置如图 我单独给Claw开了一个vm,分配了10c16g + 150G 基于我是在KVM上再安装的,这个MacOS容器需要依赖KVM以及QEMU 在创建VM的时候需要在CPU这里选择host模式而不是x86模拟等 3. 核心环节:Docker 启动 macOS 14 官方的镜像 是只把虚拟化等准备好的,也就是不带MacOS镜像(等安装的时候再通过自带的Opencore启动文件从苹果官方下载),不过这里也建议先把Docker镜像先拉下来 1 docker pull sickcodes/docker-osx:latest 创建一个img提前占坑(这一步很重要!) 1 qemu-img create -f qcow2 /data/macos/mac_hdd_ng.img 150G 然后给镜像加点权限 1 chmod 777 /data/macos/mac_hdd_ng.img 拉好镜像之后,执行我的docker run命令,我的命令如下: 1 2 3 4 5 6 7 8 9 10 11 12 docker run -it \ --device /dev/kvm \ -p 50922:10022 \ -p 5999:5999 \ -v /data/macos/mac_hdd_ng.img:/home/arch/OSX-KVM/mac_hdd_ng.img \ -e RAM=16 \ -e SHORTNAME=sonoma \ -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom-sonoma.plist' \ -e CPU='Haswell-noTSX' \ -e CPUID_FLAGS='kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on' \ -e EXTRA="-display none -vnc 0.0.0.0:99,password=on -smp 8,sockets=1,cores=8" \ sickcodes/docker-osx:latest 执行后进入下载界面 ...