Linux新手避坑指南:5年服务网格工程师亲授安装与环境配置
|
去年12月,我蹲在IDC三号机房角落装istio-1.21的时候,窗外正下着那种粘糊糊的冷雨——不是哗啦啦那种,是檐角滴答、铁皮顶嗡嗡闷响、空调冷凝水管突然爆了两滴在我后颈上的那种。王磊端着泡面路过,看见我sudo su - 之后还顺手输了个ls -la /opt/istio,就笑:“你连路径都怕记错?”我没回,因为那一刻刚意识到——我原以为自己是在配envoyfilter,结果grep了十分钟才发现kubectl config current-context指向的是测试集群那个空壳kubeconfig。 Linux新手避坑指南?呵。它最大的优点就是优胜劣汰。真话。不是客气话。上周二晨会,运维组老张把内核参数调成net.ipv4.tcp_tw_reuse=1之后没 reload systemd-sysctl,直接 reboot——他记得加参数,但忘了 sysctl.d/ 下那俩文件名带下划线还是短横。没人骂他,就小杨默默掏手机搜“systemd-sysctl reload not working”,搜完抬头问:“要不要试一下 touch /etc/sysctl.d/99-custom.conf && systemctl restart systemd-sysctl?”老张点头,手还捏着半块没拆封的奥利奥,糖霜蹭在袖口上。这种人活下来了。其他人?要么改完fstab就reboot挂起,要么把helm repo add https://charts.bitnami.com/bitnami 写进dockerfile里 RUN 里——真有。我亲眼见的。 别信什么“先装最小化系统”。最小化是个幻觉。CentOS Stream 9 安装界面里那个“Basic Web Server”勾选项,底下藏了 37 个你这辈子不会碰的包:firewalld-backend、python3-inotify、libipa_hbac……而你真正要的conntrack-tools?得手敲 yum install -y conntrack-tools。我敢打包票——这个我敢打包票。那天下午三点十七分,李薇坐我斜后方,笔记本贴着机柜边缘散热口,风扇啸叫压过语音会议里的静音提示音。她刚删掉/etc/yum.repos.d/centos.repo里四行gpgcheck=0,嘴里嚼着第三颗薄荷糖,咔嚓一声脆响,然后突然问:“proxy_env是不是一定要设在systemd服务文件里?不能只export在.bashrc?”——这问题问得我后脖梗一凉。因为我也这么干过,然后istiod在systemd里启不来,日志里全是connection refused,查了十八秒才想起env是不透传的。 还有那台戴尔R650,机箱侧盖拧了七次才对准卡扣——前六次都差一根手指宽,金属摩擦声像指甲刮白板。它现在跑着我们的eBPF观测链路,但去年装kernel headers的时候,rpm -qa | grep kernel-devel 显示的是5.14.0-284,而uname -r 是5.14.0-284.11.1.el9_2,差的那个补丁号导致cilium compile失败。没人告诉新手:补丁号不同=内核ABI不兼容。他们只会反复执行dnf update kernel,看着同一个包装了又装,直到凌晨两点。这时候,优胜劣汰就开始计时了。不是看你会不会用make menuconfig,是看你愿不愿意凌晨两点去读/usr/src/kernels/5.14.0-284.11.1.el9_2/Documentation/kbuild/modules.rst第3.2节的小字注释。 哦对,赵工上周把etcd证书全删了,说“反正我们用raft”,重签时候发现CFSSL的profile里expiry写成了"8760h"——没错,三百七十二天,他手抖多按了一个零,签出来是八万七千六百小时。证书没爆,但client端连不上,curl -v 输出一堆TLS handshake timeout,最后排查到证书notAfter字段是2247年。我盯着屏幕看了七秒,想起去年在客户现场见过类似操作——对方把istio-ca-root-cert的mountPath写成/etc/istio/certs/root-cert.pem,结果caBundle被覆盖成一个空文件,service entry全失效。那种寂静,就像机房突然断了所有风扇,只剩UPS滴滴响。我当时咽了口唾沫,喉结动得特别明显。
文章配图,仅供参考 说句实话,我现在看到新手用rm -rf 之前不先ls -l /tmp下的临时解压目录,我就条件反射想合上笔记本。不是怕他删错,是怕他删错之后第一反应是去翻知乎《如何恢复ext4误删文件》,而不是马上拔电源。但凡拔早三秒,extundelete还能救两个yaml。可他没拔。他在那儿打sudo rm -rf ,一边敲一边回头问我:“这应该没问题吧?”我正低头扒拉桌上那盒冷透的麻辣香锅,红油浮在表面,已经结膜。我没抬头。我说:“等它删完,我给你看个东西。”后来他看了,是journalctl -u kubelet --since "2 hours ago" | grep -A5 -B5 panic,里面嵌着一行:panic: runtime error: invalid memory address or nil pointer dereference。他怔住。我其实没告诉他——那一行,是我上周在dev-env里故意注入的bug,用来教人怎么区分日志噪声和真正故障源。但他说“原来panic还能这么触发”,我就没拆穿。再说个无关的:周四中午11:48,保洁阿姨推着清洁车从走廊经过,车轮卡在机柜门槛缝里,“嘎吱”拖了五秒,整个U空间都晃了一下。那会儿我们在debug一个Sidecar injector webhook超时的问题,日志里显示cert-manager续签延迟了42秒——而那个延迟,刚好卡在阿姨卡轮子的第三秒。巧合。纯属巧合。我录了那段音频,放在/home/work/audio/ga-zhi-20231215-1148.wav,没动过,也没听过第二遍。 你现在要是问我怎么配第一个control plane?我说不清。真说不清。我只知道,你装完kubectl,别急着apply,先cat ~/.kube/config | head -n5 看看context名字里有没有test或demo字样;你改完sysctl,别急着测,先systemctl list-units | grep sysctl;你跑helm upgrade,千万别跳过--dry-run --debug。至于别的?等你哪天半夜被alert叫醒,发现istio-ingressgateway Pod卡在Init:0/1,initContainer日志里只有一行:x509: certificate has expired or is not yet valid……那时候你就懂什么叫“优胜劣汰”了。我不教你。你自己熬。我刚收到消息,杭州那边新集群又爆了,得过去。外卖还在桌上,辣子鸡丁凉了。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

