About

一个软件工程师,2019年开始从事kubernetes运维和开发工作,且有5年的运维生涯。

语言:golang,水平:中级

kubernetes:非常熟悉,经常参与社区贡献

算法数据结构:初级

性格:典型的程序员ISTJ型,不喜欢社交、自律且不断学习突破自己的瓶颈。

爱好:以前喜欢轮滑,现在爬山徒步。

我深受陈皓的影响,包括做事风格、为人处事。在2020年听了他的《左耳听风》专栏之后,他成为我的导师、职业发展的目标、精神领袖。我是一个独立思考、不轻易妥协(也可以说我是倔脾气),不断尝试走出舒适区、挑战自己的不愿意做的事、突破自己的瓶颈。

写博客的目的就是为了宣传自己,没有想过如何通过这个赚钱,这也很难,并不止望流量很大,只希望能达到领域内的头部,左耳朵耗子是我的榜样。我也创了个公众号,同步自己的博客内容,由于我经常改博客文章,但是公众号修改内容麻烦,所以不一定是完全一样的,同时公众号不太适合深度的文章,不会频繁更新。

写博客最早是在大学时候,在QQ空间里记录生活点滴、分享心情和感悟,后面探索如何通过网络赚钱时候,在百度博客写软件分享,由于赚的钱太少,再加上和谐力度太强,后面便放弃了。2012年(毕业之后)开始用wordPress搭建博客,最初使用001. net76.net、 3038.tk域名继续分享软件。后面由于免费空间有些功能不支持,所以自己申请了域名midbai.com(域名意思没地方的摆摊)买了主机搭建wordpress分享软件,后面由于运营网站并没有任何收益,所以到2014年到上海之后网站停止服务。

后面看到陈皓的酷壳网站的案例(他是写博客的营销推广自己的成功案例,当然不仅仅是博客原因)和他的学习方法,我在2020年年末重启了这个博客网站,在这里写一些技术、想法,践行费曼学习法,同时也宣传一下自己。

大学期间很向往互联网,在2011年本科毕业后第一份工作某团购网站的业务员,由于不适合这个岗位,一个月不到就离职了。后面迫于生存压力,当一年的高中物理老师,但是我不喜欢当老师,原因是从小对于中国的应试教育就很反感、看到一代一代学生重复着我以前的路,我改变不了他们的命运,一种无力感,再加上工资极低。

离职之后我处于迷茫状态,深刻的分析了一下自己擅长的技能,对计算机和网络比较熟悉,于是找了一份IT网管工作,发现这个工作完全体现不出技术的价值,最主要是处理各种复杂的人际关系(避免自己成为别人工具勤杂工),这个工作只做了9个月。

之后我就在家gap了一年,往真正的计算机技术发展,结合自己的已有的知识,选择学习Linux相关知识、并把驾照考了。

到了2014年7月我感觉Linux相关知识已经熟练的掌握了,于是只身前往上海,开始找工作。经过2周左右我就找到了第一份运维工作,从此踏入了互联网。这份工作让我将以前学到的知识进行实践,越实践发现越多不懂,于是将当时公司用到所有软件技术都研究了一遍,docker技术也是当时开始研究的。随着研究面变广,发现这份工作跟不上我的成长速度,我在这家公司达到了瓶颈。于是在2016年5月离开了这家公司。

离开上海第一家公司后,我去了一家创业公司–全民直播,在这家公司体验到了”什么叫互联网的速度“ ”资本的力量“。我在这家公司实现了真正的从10到100的快速成长,自己有机会负责整个公司的运维,从操作系统到上层监控系统、nginx、redis、php、发布系统、架构设计等。这段成长经历得益于遇到很多牛人和行业的红利和一点运气。

随着自己在这家公司又达到了瓶颈,加上直播行业开始衰落。开启我的第三份运维工作,加入B站。入职B站的时候,B站刚上市没多久,上市前空降了一大波百度的人搞内部斗争,入职第二个星期直属领导就被动离开运维部了。入职后发现安排的岗位是业务运维,并没有很多技术研究和落地、更多成为项目管理、报告书写能手、以及故障排查小能手和客服,每天忙得不可开交却没啥成长。

到了过年前一个星期B站开启了上市之后的第一次”暴力“裁员(个人觉得这个跟后面的代码泄漏有关系),运气很好我在这次裁员的名单中,年会后通知被裁员,工作不用交接直接离职。 这份工作只做了9个月,这是我最失败的一次工作经历。

这个阶段最大的收获是长了见识、大厂的快速试错快速迭代,各种江湖恩怨利益纷争,当然也接触到很多技术牛人、满腔热血为爱发电。我见识到平台化是怎么做的,接触到生产中大规模使用kubernetes,并开始研究kubernetes。不得不说B站是我呆过公司里企业文化做的最好的一家公司,带宠物上班、女装大佬、cosplay、汉服、各种社团、各种盛大特色的节日活动等。

离开B站后,我加入了触宝,在这里我负责kubernetes的落地相关工作,将旧的docker部署模式迁移到kubernetes。这个时候天天从早到晚研究kubernetes,开始学go语言,开始做一些开发工作。由于欠缺相关技术经验、没有资源支持(单兵做作战)、CTO各种细节把控(参加周会指导我们该怎么做),项目做的不顺利。这个项目做了一年后,部门被合并了,新领导把这个项目给停了,于是我选择了离职。这个阶段的收获:开始从产品角度思考平台的设计、再到周边系统的架构设计,kubernetes的深度掌握,转向开发。从旧架构迁移到新架构一定要做好兼容工作,但是想从基础设施薄弱的情况,原本没有任何相关的生态系统(应用中心、CICD等)的状况下迁入到kubernetes,就像封建社会的人活在现代社会,要适应几乎是不可能的事,所以落地过程是一边设计kubernetes对接现有系统的架构,一边搞配套系统(日志、监控报警、流量网关),降低业务方的应用迁移改造成本。

离开了触宝的时间,正值疫情刚开始阶段,各个公司倒闭裁员,v2ex上充满各种焦虑的氛围。由于自己的开发能力属于刚入门阶段,且从来没有刷过题,找个kubernetes相关的开发工作相当困难,而且选择kubernetes开发只能去有自建机房的公司,小公司一定是混合工种。在面试了几家公司无果之后,我选择了休息一段时间,研究kubernetes源码。这个时候父亲查出肝癌要动手术,整个人的状态是彷徨、失落、但还有憧憬和信仰热情(跟2013-2014年gap那段时间一样)。

在离职后第4个月,我决定放低要求,至少是自建kubernetes的公司,先找kubernetes相关的工作,卧薪尝胆先将自己的开发水平提升起来,再去找专门的开发岗位。在面试了2家之后,我入职微盟,它是专门设立kubernetes运维岗位的公司,这是很少公司会有的,虽然它使用公有云。

在微盟前一年半纯粹的做一些kubernetes运维工作,包括kubernetes集群部署(部署脚本的维护、比如支持AWS上自建kubernetes)、监控架构从thanos迁移到victoriaMetrics、集群日常维护(加减节点、问题的排查)、VPA的落地。后面开始开发kubernetes生态相关程序,比如后端服务、CNI插件、VPA的operator、Descheduler等。总的来说时间分配,运维50%、开发20%、方案和技术研究30%。开发基本都是一个单人独立开发(设计开发测试部署一条龙)。

从2020年到在微盟这段时间里一直研究kubernetes源码,kubelet部分90%完成度、controller-manager部分常见controller基本都研究完了、client-go和其他底层库绝大部分都研究过、kubectl只研究了kubectl apply和cli runtime相关代码、scheduler和apiserver只看了很小一部分代码。kubernetes相关项目的源代码研究:cilium(跟ENI相关的部分代码operator、agent、cni)、kube-state-metrics、AWS-cni、Terway(部分代码)、containerd(cri部分代码)、karmada、knative、koordinator、kube-route、VPA、crane、cni、controller-runtime等。

由于在工作中没有很多机会参与开发,而开源社区中有很多需求和问题,可以参与解决。参与开源社区,可以学习到功能是怎么设计的(如何进行妥协),学习别人写的优秀代码,开源和商业如何结合,提高自己的开发能力,到所以加入社区进行讨论和贡献。参与的项目都是自己平时工作中相关的,比如karmada、VPA、cilium。

邮箱:xiaoqingnb (at) gmail.com

X (Twitter): https://twitter.com/xiaoqing224486

微信公众号:freedonia

wechat-official-account-qr-code
欢迎关注微信公众号