速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

从修复 Kubernetes 集群中,我学到了什么

  • 2023-05-13
    北京
  • 本文字数:2747 字

    阅读完需:约 9 分钟

从修复 Kubernetes 集群中,我学到了什么

人们都很吝啬。这是 David Flanagan 在他的 YouTube 系列节目“Klustered”中修复了 50 多个故意破坏的 Kubernetes 集群所学到的第一件事。


在一个案例中,提交者用 unicode doppleganger 替换了一个’c’字符——它在终端输出上看起来与 c 相同——从而导致了一个错误,这造成了 Flanagan 对自己以及对其修补集群的能力产生了怀疑。


Flanagan 上周在坦帕(Tampa)举行的 Civo Navigate 会议上说:“我实在是太恨这个人了,这段时间太久了,我们足足用了两个小时才把它修复好。我很喜欢这个插曲,因为我可以告诉你,我很聪明,而且在 Kubernetes 方面也做得很好。但是,这一插曲使我对某些我认为并没有错误的东西产生了怀疑。实际上,我觉得 6 个数字将会在 64 位的系统中造成任何的溢出——当然不会。不过,调整起来比较困难。”


在那场会议之后,Klustered 制定了一个不受 Unicode 干扰的方针。


“你只能从错误中吸取教训,”Flanagan 表示,“这就是为什么我真的喜欢做 Klustered。如果你只是有一个工作正常的集群,你永远也不会真正学会如何在一定的规模之外运行它。而 Klustered 给我们带来的情况是,我们可以让人们从他们自己的公司、他们自己的组织、他们自己的团队中带来他们的失败,我们可以在实时流格式中复制这些问题,但它也让我们看到个人是如何调试它的。”


Linux 问题


他说,调试是很难的,即使你有一个来自红帽的团队来解决这个问题,正如他在另一集由红帽和 Talos 的团队参加的节目中所了解的那样。在这种情况下,红帽从重要的二进制文件中删除了可执行位,如 kubectl、kubeadm,甚至 Perl——它有能力在一台机器上执行大多数 Sys 调用;限制了 Talos 修复故障的能力。


“我们从这一集学到的是,你实际上可以在 Linux 上执行动态链接器。所以我们有这个 ld-linux.so,你实际上可以在一台机器上执行任何二进制文件,通过该链接器代理它。所以你可以 bin.chmod,像这样,这是一个非常酷的技巧。”


/lib/ld-linux.so  /bin.chmod +x /bin/chmod
复制代码


人们还修改了 Linux 文件系统上的属性。


“有人知道 Linux 文件系统中有哪些属性吗?”他问道。“不,当然不知道。为什么要知道?”


但这些属性允许你进入非常低的级别并访问文件系统。他展示了他们如何将文件标记为不可更改。


“所以你可以打包一个文件,你知道,kubectl 或 Kubernetes 必须写到这个文件,并将其标记为不可变,你就立即破坏了系统,”他说,“你不可能通过运行你的常规 LS 命令来检测这种破坏,你实际上确实需要对文件做一个 lsattr,当你把它们全部列出时,要理解这些晦涩的引用是什么意思。所以,再次强调,Klustered 只是给了我们一个环境,我们可以从那些做了我们以前没有做过的事情的人那里提取所有这些知识。”


在另一集中,他邀请了曾在安全和 Kubernetes 领域工作的内核黑客 Kris Nóva,以及曾在谷歌工作的 minikube 维护者 Thomas Stromberg,后者还从事入侵取证分析工作。Stromberg 不得不由安全行业精英 Nova 修复损坏的集群。


“Thomas 来了,运行这个 FLS 命令,”他说,“这是非常古老的工具包,写于 90 年代末,叫做 Sleuth Kit,对 Linux 文件系统进行取证分析。”


他补充道:“通过运行这个命令,他得到了对 Linux 文件系统每一次修改的时间顺序变化。他得到了过去 48 小时内他想回答的每一个问题的答案。所以我很高兴我们有机会与大家分享知识。”。


常见网络故障


在该节目中,网络故障往往是相当常见的。Kubernetes 有核心的网络策略来防止这些故障的发生。但尽管如此,故障还是会发生。


“然而,我们现在看到了碎片化,因为其他 CNI 供应商带来了他们自己对网络策略的适应性,”Flanagan 接着说。“仅仅检查网络政策或集群网络政策是不够的。……你需要知道从网络层面成功操作 Kubernetes 集群,这个集群将继续发展,变得非常繁琐、可怕、复杂,但也更容易。”


Flanagan 对 Kubernetes 最大的不满是默认的 DNS 策略。


“谁认为 Kubernetes 中的默认 DNS 策略是默认 DNS 策略?现在我们有这个叫 Default 的 DNS 策略,”他说,“但它不是默认的。默认是集群优先,这意味着它将尝试在集群内解决 DNS 名称。而默认策略实际上是解析到主机上的默认路由。”


Flanagan 说,他一直在与 Tom Hockin 等人和 Kubernetes 的其他评论员讨论,社区如何能够消除一些异常情况,这些异常情况基本上会绊倒那些只是没有遇到过这些问题的人。


eBPF 改变了格局


他说,eBPF 也在改变格局而不是进入 Linux 机器,运行 IP table-l,他注意到这已经在开发者的头脑中根深蒂固了 20 年。现在,开发者应该倾听所有的 eBPF 探测和流量策略。从本质上讲,你需要有其他的 eBPF 工具来理解现有的 eBPF 工具。


他建议查看 Hubble,以便对旧的网络策略进行可视化表示 – 特别是 Kubernetes 和 Cilium,他补充说。Hubble 还带有一个 CLI。


“我们有工具来了解我们集群内的网络。如果你有幸使用 Cilium,如果你使用其他 CNI,你将不得不寻找其他工具,但它们确实也存在。”他说。


他还推荐了 Cilium Editor。


“你可以构建一个 Kubernetes 网络策略,或者通过拖动方框、改变标签和改变端口号来构建一个 Cilium 网络策略,”Flanagan 说,“所以你实际上不需要再学习如何浏览这些深奥的 YAML 文件。”


他说,Ciluim Editor 将允许你使用拖放的方式来构建 Kubernetes 网络策略。


其他学习经验


当然,还有其他方法可以破坏 Kubernetes 集群。他指出,你可以攻击容器运行时。人们已经回滚了多达 25 个版本的 kubectl 二进制文件;25 个版本实际上破坏了向后兼容性,因此它不能与 API 服务器对话。存储是你自己的 CSI 提供商的另一个考虑因素,他补充说。


他还推荐了三种资源:


  • Brendan Gregg’s book;

  • BCC;

  • Ebpfkit;


他想让工程师们承认他们不知道的东西并分享知识。


他说:“我给人们的一条规则是,请不要安静地坐在那里,用谷歌搜索相机以获得答案,然后说,哦,我知道如何解决这个问题。我很想让高级工程师为我们行业的新人制定更好的规范,消除我们过去 30 年来建立的英雄文化。”


作者简介:


Loraine Lawson,资深技术作者,25 年来一直从事从数据集成到安全的技术问题的报道。在加入 The New Stack 之前,她是银行技术网站 Bank AutomationNews 的编辑。她还曾为“IT Business Edge”担任自由撰稿人、“Tech Republic”的 IT 经理编辑。


原文链接


https://thenewstack.io/what-david-flanagan-learned-fixing-kubernetes-clusters/


声明:本文为 InfoQ 翻译,未经许可禁止转载。


今日好文推荐


后摩尔定律时代,如何提升云效益的天花板


可悲的现实,大部分技术领导者可能并不称职


百度回应文心一言“套壳”质疑;TikTok在美经历生死时刻;IT外包行业面临最大规模裁员,埃森哲将暴力裁员1.9万人 | Q资讯


集成GPT-4的编程神器来了,GitHub发布Copilot X:编程30年,突然就不需要手敲代码了?!


2023-05-13 20:068234

评论

发布
暂无评论
发现更多内容

Sentinel 新版本发布,提升配置灵活性以及可观测配套

阿里巴巴云原生

阿里云 开源 云原生

影视行业使用云电脑能有哪些好处?云电脑有什么优势

青椒云云电脑

云桌面 云电脑 云电脑平台

左耳听风 - 软件开发与架构设计的原则「读书打卡 day 13」

Java 工程师蔡姬

读书笔记 程序员 个人成长 职业发展

成本更低、更可控,云原生可观测新计费模式正式上线

阿里巴巴云原生

阿里云 云原生 可观测

从 13 个企业关心的问题看懂用云范式的改变

阿里巴巴云原生

阿里云 云原生 云原生容器

php几种常用的加密解密算法

百度搜索:蓝易云

php 云计算 Linux 运维 云服务器

docker搭建nginx教程

百度搜索:蓝易云

nginx Docker Linux 运维 云服务器

玩转数据处理利器:学会使用 YAML 文件轻松处理数据

测试人

软件测试 测试开发

强大的日志权限管理:多索引与访问规则的创新应用

观测云

日志 数据安全

C# 循环与条件语句详解

小万哥

C# 程序人生 编程语言 软件工程 后端开发

Consul 留给你的时间不多了

阿里巴巴云原生

阿里云 云原生

云原生离线工作流编排利器 -- 分布式工作流 Argo 集群

阿里巴巴云原生

阿里云 云原生

如何查看苹果手机的CPU型号?

雪奈椰子

运营商大模型,数字中国的一枚“落子”

脑极体

AI 大模型

从0到1:大学校园参观预约小程序开发笔记(一)

CC同学

KubeBlocks 研发轶事之 addon 抽象

小猿姐

数据库 Kubernetes 云原生 抽象

《Java性能权威指南(第2版)》PDF

程序员李木子

走出大模型部署新手村!小明这样用魔搭×函数计算

阿里巴巴云原生

阿里云 云原生 函数计算

进击的 Serverless:Java 应用如何从容地面对突增流量

阿里巴巴云原生

阿里云 Serverless 云原生

【运维】GitLab相关配置优化等

百度搜索:蓝易云

云计算 Linux gitlab 运维 云服务器

Databend 开源周报第 129 期

Databend

项目管理中有效沟通的7大技巧

爱吃小舅的鱼

项目管理 项目经理 沟通技巧

「回看 Milvus 的 2023」:AI 热潮中的非典型向量数据库

Zilliz

Milvus 大模型 AIGC 向量数据库

笔记软件哪个好?超全的笔记软件盘点推荐:手写笔记、文本笔记、协作笔记、知识管理等!

彭宏豪95

效率工具 在线白板 办公软件 笔记软件 boardmix

《数据结构与算法分析:Java语言描述(第3版)》PDF

程序员李木子

定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱

阿里巴巴云原生

阿里云 云原生 函数计算

OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地

阿里巴巴云原生

阿里云 开源 容器 云原生

解读 EventBridge Transform:数据转换和处理的灵活能力

阿里巴巴云原生

阿里云 云原生

聚道云连接器实现航信与用友NC凭证对接,助力企业实现数字化转型

聚道云软件连接器

案例分享

活动回顾丨云原生技术实践营上海站「云原生 AI &大数据」专场(附 PPT)

阿里巴巴云原生

阿里云 容器 云原生

Jira 私有化部署即将停服,你准备好了吗?

极狐GitLab

从修复 Kubernetes 集群中,我学到了什么_语言 & 开发_Loraine Lawson_InfoQ精选文章