Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >从修复 Kubernetes 集群中,我学到了什么

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

作者头像
深度学习与Python
发布于 2023-03-29 04:24:27
发布于 2023-03-29 04:24:27
35100
代码可运行
举报
运行总次数:0
代码可运行

作者 | Loraine Lawson

译者 | Sambodhi

策划 | Tina

人们都很吝啬。这是 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,像这样,这是一个非常酷的技巧。”

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/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-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
十分钟实现Kubernetes多集群
使用 Cilium ClusterMesh 和 KIND 在 10 分钟内搭建 Kubernetes 多集群网格
云云众生s
2024/03/27
1650
十分钟实现Kubernetes多集群
一文读懂最佳 Kubectl 安全插件(下)
Hello folks,我是 Luga,接着上一篇博文,我们继续来解析 Kubectl 安全插件相关内容...
Luga Lee
2023/02/06
1.5K2
Cilium使用 (Cilium 3)
Cilium要求的内核版本比较高,需要对内核进行升级,否则会运行失败。错误日志如minimal supported kernel version is 4.8.0; kernel version that is running is: 3.10.0"
charlieroro
2020/04/24
2.3K0
使用Talos简化Kubernetes
今年,Kubernetes 随着 v1.30.0 版本的发布迎来了其十周年纪念日,巩固了其作为首选云平台的地位。EKS、GKS 和 AKS 等自管理 Kubernetes 集群占集群总数的 73%,其余 27% 为自管理,如 Dynatrace 所述。过去十年是公有云时代,但由于成本不断上升,一些企业正试图通过混合云找到平衡。根据 VMware 的说法,大约 76% 的组织现在利用多个云,即公有云和私有云的组合。Kubernetes 允许我们在所选硬件上构建多云和私有云层,并且以经济高效的方式构建,而无需承诺使用某个特定云。
云云众生s
2024/05/10
7160
使用Talos简化Kubernetes
Cilium 1.11:服务网格的未来已来
Cilium 1.11测试版(Beta)为你带来了一系列引人注目的功能和增强功能,包括OpenTelemetry支持、感知拓扑的负载均衡、Kubernetes APIServer策略匹配,以及更多功能。本文将为您详细介绍这个令人振奋的版本,以及它为现代应用程序网络安全和性能带来的突破。
猫头虎
2024/04/09
3050
Cilium 1.11:服务网格的未来已来
Kubernetes的一些组件概念
Kubectl:客户端命令行工具,作为整个系统的操作入口。 kube-apiserver:以REST API服务形式提供接口,作为整个系统的控制入口。 kube-controller-manager:控制器管理器,用来检测控制器健康状态,检查pod的健康状态,比如故障检测,自动扩展,滚动更新,包括节点状态状况、Pod个数、Pods和Service的关联等。 kube-scheduler:负责节点资源管理,接收来自kube-apiserver创建Pods任务,并分配到某个节点。 etcd:是一个key/value形式的键值存储,保存整个k8s集群状态,在k8s中使用etcd时,需要对etcd做备份,保证高可用,整个k8s系统中一共有两个服务需要 用到etcd用来协同和存储配置 分别是: 1.网络插件calico,对于其他网络插件也需要用到etcd存储网络的配置信息 2.k8s本身,包括各种对象的状态和元信息配置 注意:网络插件操作etcd使用的是v2的API,而k8s操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2,表示使用v2版本的etcd api,v3表示使用v3的版本etcd api kube-proxy:运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。 Kubelet:运行在每个计算节点上,作为agent,接收分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver。 Fluentd:主要负责日志收集、存储与查询。 Calico:是一个纯三层的网络插件,calico的bgp模式类似flannel的host-gw,calico在kubernetes中可提供网络功能和网络策略 三种网络模式: Flannel 常见采取 UDP Overlay 方案,VxLAN 性能比 TUN 强一点,一个是内核态一个是用户态 Calico 是一个纯三层的方案,不需要 Overlay,基于 Etcd 维护网络准确性,也基于 Iptables 增加了策略配置 Cilium 就厉害了,基于 eBPF 和 XDP 的方案,eBPF/XDP 处理数据包的速度可以和 DPDK 媲美,零拷贝直接内核态处理,缺点就是用户不太容易进行配置,而 cilium 解决了这个问题,毕竟 yaml 开发工程师都会写 yaml。。。可以支持 L3/L4/L7 的策略 Coredns:k8s1.11之前使用的是kube dns,1.11之后才有coredns是一个DNS服务器,能够为kubernetes services提供DNS记录
院长技术
2021/02/19
3640
K8S 生态周报| Cilium 和 Istio 的新版本带来众多新特性
Cilium 最近两年真的是很火了。我在 2019 年折腾 Cilium 的时候,那时候它还处于不温不火的状态。比如我当时发布了一篇 K8S 生态周报| cilium 1.6 发布 100% kube-proxy 的替代品 | MoeLove ,很多人还在好奇 cilium 到底是什么。
Jintao Zhang
2023/02/26
1.6K0
K8S 生态周报| Cilium 和 Istio 的新版本带来众多新特性
Kubernetes的安全性不能仅仅依赖于eBPF
译自 Don’t Rely on eBPF Alone for Kubernetes 。
云云众生s
2024/03/28
1260
使用 Sealos 一键搭建 Kubernetes 集群
搭建 K8s 的方式方法有很多,主要有二进制和 Kubeadm(容器)两种方式,对于初学者来说不建议使用二进制方式搭建,因为二进制方式搭建 K8s 集群需要手动安装各种组件,而且还需要手动配置各种组件,非常麻烦,而且容易出错。更推荐大家使用 Kubeadm 快速搭建一套集群起来,先用起来,等熟悉了之后再去了解各个组件的原理和配置。另外,还有一种方式是使用 Kind 工具来搭建集群,Kind 是一个用于在 Docker 容器中运行本地 Kubernetes 集群的工具,它使用 Docker 容器作为节点,这样就可以在本地快速搭建一个 K8s 集群,非常适合用于本地开发和测试。
我是阳明
2024/03/02
2K0
使用 Sealos 一键搭建 Kubernetes 集群
Cilium 系列-3-Cilium 的基本组件和重要概念
如上所述,安装 Cilium 时,会安装几个运行组件(有些是可选组件), 它们各是什么用途?
东风微鸣
2023/09/01
5610
Cilium 系列-3-Cilium 的基本组件和重要概念
云原生 | 在 Kubernetes 中使用 Cilium 替代 Calico 网络插件实践指南!
Cilium 是一款开源软件,它基于一种名为eBPF的新的Linux内核技术提供动力,用于透明地保护使用 Docker 和 Kubernetes 等Linux 容器管理平台中部署的应用程序服务之间的网络连接,Cilium 主要使用场景是在 Kubernetes 中,但 Cilium 的优势并不仅限于 Kubernetes 环境。
全栈工程师修炼指南
2024/09/10
9870
云原生 | 在 Kubernetes 中使用 Cilium 替代 Calico 网络插件实践指南!
kubernetes 安装cilium
Cilium是一个开源软件,用于透明地提供和保护使用Kubernetes,Docker和Mesos等Linux容器管理平台部署的应用程序服务之间的网络和API连接。
小陈运维
2022/09/12
1.2K0
最Cool Kubernetes网络方案Cilium入门教程
现代数据中心的应用系统已经逐渐转向基于微服务架构的开发体系,一个微服务架构的应用系统是由多个小的独立的服务组成,它们之间通过轻量通信协议如HTTP、gRPC、Kafka等进行通信。微服务架构下的服务天然具有动态变化的特点,结合容器化部署,时常会引起大规模的容器实例启动或重启。要确保这种向高度动态化的微服务应用之间的安全可达,既是挑战,也是机遇。
nevermosby
2020/05/11
3.8K0
Cilium系列-5-Cilium替换KubeProxy
将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于:
东风微鸣
2023/09/01
4290
Cilium系列-5-Cilium替换KubeProxy
被 Google 选择的下一代数据面 Cilium 是什么 - 上手实践
在我之前的文章 K8S 生态周报| Google 选择 Cilium 作为 GKE 下一代数据面[1] 一文中,我介绍了 Google 宣布使用 Cilium 作为 GKE 的下一代数据面,及其背后的故事。
Jintao Zhang
2020/09/14
1.1K0
被 Google 选择的下一代数据面 Cilium 是什么 - 上手实践
在Kubernetes集群中调试DNS请求流
本文将介绍用于调试 Kubernetes 集群中 DNS 请求流程的工具。本文还将涵盖不同的调试场景以及如何修复每个场景。
云云众生s
2024/12/02
970
在Kubernetes集群中调试DNS请求流
Kubernetes 安全大揭秘:从攻击面剖析到纵深防御体系构建(下)
在上一篇文章中,我们介绍了k8S的基础设施、控制平面风险,接下来我们继续另外的四个部分,即供应链与CI/CD攻击面、横向移动与持久化攻击、防御策略与防护工具,继续深度剖析k8s安全。
星尘安全
2025/02/27
1130
Kubernetes 安全大揭秘:从攻击面剖析到纵深防御体系构建(下)
Cilium 容器网络的落地实践
随着越来越多的企业采用 Kubernetes,围绕多云、安全、可见性和可扩展性等新要求,可编程数据平面的需求用例范围越来越广。此外,服务网格和无服务器等新技术对 Kubernetes 底层提出了更多的定制化要求。这些新需求都有一些共同点:它们需要一个更可编程的数据平面,能够在不牺牲性能的情况下执行 Kubernetes 感知的网络数据操作。
用户5166556
2023/03/18
6510
Cilium 容器网络的落地实践
利用eBPF增强Kubernetes操作
运行 Kubernetes 释放了容器的强大功能,但看到更多功能岂不更好?eBPF(扩展 Berkeley 数据包过滤器)是一种…
云云众生s
2024/03/28
1700
利用eBPF增强Kubernetes操作
用于 Kubernetes 网络的 Cilium:为什么我们使用它以及为什么我们喜欢它
感谢 CNI(容器网络接口),Kubernetes 提供了大量选项来满足您的网络需求。在多年依赖简单的网络解决方案之后,我们面临着对以客户需求为后盾的高级功能的日益增长的需求。Cilium 将我们 K8s 平台中的网络提升到了一个新的水平。
用户5166556
2023/03/18
9280
用于 Kubernetes 网络的 Cilium:为什么我们使用它以及为什么我们喜欢它
相关推荐
十分钟实现Kubernetes多集群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验