2026世界杯赛程时间表欧洲杯代理转播软件 | Kubernetes 开源9年,但咱们一经有了 8 年的踩坑堕泪史

2026世界杯赛程时间表欧洲杯代理转播软件 汽车图片大全 作家 | Anders Jonsson 译者 | 王强 2026世界杯赛程时间表 筹划 | Tina 9 年开源,踩坑无数,K8s 到底坑在哪? 在 Urb-it 这家公司的早期发展阶段(那时候我还没来),公司决定使用 Kubernetes 动作咱们云原生存谋的基石。这一决定的背后,公司所探究的一方面所以 K8s 布置快速增长的预期,另一方面是左右它的容器编排功能为咱们的应用步伐带来愈加动态、弹性和高效的环境。除此除外,Kubernete...


2026世界杯赛程时间表欧洲杯代理转播软件

汽车图片大全

作家 | Anders Jonsson

译者 | 王强

2026世界杯赛程时间表

筹划 | Tina

9 年开源,踩坑无数,K8s 到底坑在哪?

在 Urb-it 这家公司的早期发展阶段(那时候我还没来),公司决定使用 Kubernetes 动作咱们云原生存谋的基石。这一决定的背后,公司所探究的一方面所以 K8s 布置快速增长的预期,另一方面是左右它的容器编排功能为咱们的应用步伐带来愈加动态、弹性和高效的环境。除此除外,Kubernetes 独特合乎咱们的微办事架构。

2023年7月8日,美国发言人“皮埃尔”对中国的出口限制进行了回应,“皮埃尔”表示,中国对镓锗进行限制,“中国这种行为,是试图通过经济施加压力,这不是公平竞争。美国一直主张和平解决任何冲突,这种制裁政策是一种软弱行为。

一切始于金英丽对物质的执着追求。她的职位给予了她很多机会接触各种权力和财富,然而,她的心思却越来越离经叛道。她开始寻求非常规的方式来满足她对奢侈生活的渴望。

早期决策

这个决定是很早就定下来的,天然它理当受到质疑,因为它意味着咱们动作一家初创公司要对这项时刻产生深度依赖,还要为此学习太多的知识。另外,咱们其时的确需要 Kubernetes 来解决它擅长的那些问题吗?有东谈主可能会说,咱们一脱手可以先搞一个很大的单体架构用很万古期,直到它遇到令东谈主苍凉的膨大之类的问题,然后咱们再转向 Kubernetes(或其他东西)也不迟。此外,Kubernetes 彼时仍处于早期斥地阶段。不外这些问题下次再接头吧。

8 年分娩履历

咱们在分娩环境中运行 Kubernetes 一经有八年多了(每个环境王人有单独的集群),时期作念出了一些好的和不太好的决策。有些谬误只是是“otur när vi tänkte”(咱们决策中遇到的坏运谈)变成的,而另一些谬误则源于咱们乌有足(致使少量王人莫得)领略其底层时刻。Kubernetes 很强劲,但也颇具复杂性。

咱们在莫得任何大领域运行 K8s 履历的情况下迎头而上。

从 AWS 上的自托管迁徙到

Azure 上的托管(AKS)

前边几年,咱们在 AWS 上运行了一个自托管的集群。淌若我没记错的话,咱们一脱手莫得遴荐使用 Azure Kubernetes Service(AKS)、Google Kubernetes Engine(GKE)、Amazon Elastic Kubernetes Service(EKS),因为它们那时还莫得提供官方的托管解决决策。恰是在 Amazon Web Services(AWS)的自托管决策上,咱们碰到了 Urb-it 历史上第一次亦然最可怕的一次集群崩溃,稍后会详备先容。

由于咱们是一个小团队,因此要掌捏咱们所需的总共新功能是很大的挑战。同期,料理自托管集群需要持续的热心和转变,这加多了咱们的使命量。

当托管解决决策脱手凡俗流行时,咱们花了一些时期来评估 AKS、GKE 和 EKS。对咱们来说,总共这些决策王人比咱们我方料理要好上几倍,而且咱们可以松驰地看到迁徙带来的快速投资陈说。

其时咱们的平台是 50% .Net 和 50% Python,何况咱们一经在使用 Azure Service Bus、Azure SQL Server 和其他 Azure 办事了。因此,将咱们的集群迁徙到 Azure 不仅可以更松驰地把这些办事连合起来使用,而且还可以充分左右 Azure 的骨干相聚基础设施,省去与离开 / 进入外部相聚和 VNET 有关的资本,而之前咱们的 AWS 与 Azure 搀杂架构中这些资本是幸免不了的。此外,咱们的许多工程师王人熟习 Azure 偏执生态系统。

还应该提到少量,关于 AKS 上的启动诞生,咱们不必为适度平面节点(主节点)付费,这是一个很是的公正(勤俭节点用度)。

咱们在 2018 年冬天进行了迁徙,尽管多年来咱们在 AKS 这块也遇到了一些问题,但咱们从未因为此次迁徙而感到后悔。

集群崩溃 #1

在 AWS 上使用自托管决策时期,咱们经历了一次大领域的集群崩溃,导致咱们的大部分系统和家具出现故障。根 CA 文凭、etcd 文凭、API 办事器文凭王人过期了,导致集群罢手使命、无法料理。其时,kube-aws 中莫得什么救济本色可以匡助咱们解决这个问题。咱们请了一位各人,但到终末咱们不得不重新脱手重建总共集群。

咱们认为每个 git 存储库中王人有总共值和 Helm 图表,但令东谈主骇怪的是,并非总共办事王人是如斯。最迂回的是,库里莫得存储创建集群的任何成就。从新确立集群并把咱们的总共办事和家具王人塞进去的任务成了一场赶时期的竞走。其中一些办事需要从新缱绻 Helm 图表来创建缺失的成就。偶然一位斥地工程师会问他的共事:“你还谨记这个办事应该有几许 CPU 或 RAM,或者它应该有哪些相聚和端口探问权限吗?”更毋庸说那些一经随风而逝的密钥了。

咱们花了几天时期才让它从新启动并平方跑起来。至少可以说,这不是咱们最自重的时刻。

由于咱们积极主动的同样使命,通过保持透明度、结识和客户相关栽植等对策,咱们莫得失去任何业务或客户。

集群崩溃 #2

目下你可能会说:第二次事故不可能是由于文凭变成的,因为你一定从第一次事故中吸取了熏陶,对吧?是,也不是。不幸的是,当咱们从崩溃 #1 中从新创建集群时,咱们使用的特定版块的 kube-aws 出现了问题。当它创建新集群时,它莫得将 etcd 文凭的过期时期诞生为咱们提供的过期日历,而用的是一年这个默许值。因此,在第一次集群崩溃整整一年后,文凭过期了,咱们又经历了另一次集群崩溃。不外这一次规复起来容易多了,咱们毋庸再重建总共东西。但这仍然是一个地狱般的周末。

旁注 1:其他公司也像咱们一样受到了这个谬误的影响,但它并莫得匡助咱们的客户......

旁注 2:咱们的经营是在一年后更新总共文凭,但为了给我方留出一些余量,咱们将灵验期诞生为两年(淌若我没记错的话)。因此,咱们是有更新文凭的经营,但这个 bug 让咱们不得不提前行为。

自 2018 年以来,咱们莫得再发生过集群崩溃……但愿这不是什么 flag。

履历熏陶

Kubernetes 很复杂

你需要雇佣一些对 Kubernetes 的基础设施和运营方面感兴味并雅瞻念参与其中的工程师。就咱们而言,咱们需要几位工程师在日常使命外钻研 Kubernetes,这么遇到问题时他们就能饰演现场各人的脚色。正如你可能念念到的那样,Kubernetes 中特定任务的负载也各不同样。有些时候连着几周简直莫得什么可作念的,而有些时候工程师需要邻接几周进步警惕,举例在集群升级时期。

咱们不可能将使命轮替分拨给总共团队;这项时刻太复杂,没观念只作念一个星期就转向别的使命,下一周再归来。天然,每个东谈主王人需要知谈如何使用它(部署、调试等)——但要在更具挑战性的方面进展出色就需要工程师参预时期来商酌学习了。此外,一位有远见并能制定集群发展计谋的指引者也很迂回。

Kubernetes 文凭

银河赌博

由于文凭过期,咱们经历了两次集群崩溃,因此熟习里面 Kubernetes 文凭偏执过期日历的细节口角常迂回的。

让 Kubernetes 和 Helm 保持最新

当你落伍时,它的资本就会飞腾,用起来也会变得不顺遂。咱们老是恭候几个月才升级到最新版块,等其他东谈主先遇到新版块的问题再说。但即使第一时期更新到最新版块,由于 Kubernetes 和 Helm 的新版块总会有变化(Kubernetes API 从 alfa 到 beta、beta 到 1.0 等),咱们如故会面对许多耗时的成就文献和图表重写使命。我知谈 Simon 和 Martin 可爱 Ingress 的总共变化。

皇冠客服飞机:@seo3687

连合料理 Helm 图表

谈到 Helm 图表,每一次版块编削王人要更新总共 70 多个图表的使命实在让咱们厌倦,因此咱们接管了更通用的“一个图表治理一切”的方法。连合式 Helm 图表方法有许多优点和污点,但不管若何,它更合乎咱们的需求。

祸害规复经营

我若何强调王人不为过:一定要提前作念好准备决策,这么在需要时就能从新创建集群。是的,你可以在 UI 中点击几下来创建新集群,但这种方法恒久无法大领域或实时地施展作用。

有许多方法可以处理这个问题,勤俭单的 shell 剧本到更高档的方法王人有,比如使用 Terraform(或雷同的决策)。Crossplane 还可用于料理基础设施即代码(IaC)等。

对咱们来说,由于团队带宽有限,ComeOn!咱们决定存储和使用 shell 剧本。

无论你遴荐哪种方法,请务必往往测试经由,以确保你可以在需要时从新创建集群。

备份密钥

制定备份和存储密钥的策略。淌若你的集群肃清了,你总共的密钥也王人会肃清。信托我,这是咱们的前车之鉴;当你有多个不同的微办事和外部依赖项时,需要挥霍大王人时期才略使一切规复平方。

与供应商无关 VS “任重道远”

皇冠hg86a

一脱手,在迁徙到 AKS 后,咱们试图让集群不和供应商绑定,这意味着咱们将络续使用其他办事来作念容器注册表、身份考证、密钥救济库等。咱们的念念法是,这么的决策让咱们在翌日某一天可以松驰迁徙到另一个托管平台。诚然与供应商无关是一个好主意,但对咱们来说,它带来了很高的契机资本。一段时期后,咱们决定全力参预 AKS 有关的 Azure 家具,举例容器注册表、安全扫描、身份考证等。对咱们来说,这改善了斥地体验,简化了安全性(使用 Azure Entra Id 进行连合探问料理),等等,从而加速了上市时期并逼迫了资本(领域效益)。

公正资源界说

是的,咱们全力参预了 Azure 家具线,但咱们的率领观念是尽量毋庸公正的资源界说,而使用内置的 Kubernetes 资源。关联词咱们也有一些例外,比如 Traefik,因为 Ingress API 并不可称心咱们的总共需求。

安全

见下文。

可不雅察性

见下文。

已知峰值时期的预缩放

就算使用了自动缩放器,咱们偶然也会缩放得太慢。基于流量数据和学问(咱们是物流公司,节沐日有岑岭),咱们会在岑岭到来前一天手动扩容集群(ReplicaSet),第二天再缩容(少量点缩,以布置随时可能出现的第二波岑岭)。

集群内的 Drone

咱们将 Drone 构建系统保留在了 stage 集群中;这么作念有一些公正,但也有一些污点。由于它位于兼并个集群中,因此很容易膨大和使用。关联词,同期构建太多 Drone 时,它会消耗掉简直总共的资源,让 Kubernetes 急着启动新节点。最佳的解决决策可能是将其动作方正的 SaaS 解决决策,而不必惦记家具本人的托管和转变使命。

遴荐正确的节点类型

虽说这是跟险阻文邃密关联的,但总体来说凭据节点类型,AKS 会保留大致 10-30% 的可用内存(用于里面 AKS 办事)。因此对咱们来说,咱们发现使用更少但更大的节点类型是故意的。此外,由于咱们在许多办事上运行 .Net,因此需要遴荐具有高效且可不雅的 IO 性能的节点类型。(.Net 时常写入磁盘以进行 JIT 和日记纪录,淌若这需要相聚探问就会变得很慢。咱们还会确保节点磁盘 / 缓存的大小至少与成就的总节点磁盘大小同样,亦然为了退缩相聚跳转)。

预留实例

你可能会争阐发这种方法有点屈膝云的天真性原则,但对咱们来说,保留舛误实例一两年可以勤俭大王人资本。在许厚情况下,与“现收现付”款式比较,咱们可以勤俭 50-60% 的资本。是的,这对团队来说一经富裕了。

k9s

关于念念要比纯 kubectl 高一级综合的用户来说,https://k9scli.io/ 是一个很棒的器具

浪漫

可不雅测性

www.coronacasinos888.com

监控

一定要持续追踪内存、CPU 等资源的使用情况,于是你就可以不雅测集群的性能并信托新功能是否正在改善或恶化其性能。这么就可以更松驰地为不同的 Pod 找到并诞生“正确”的限定(找到正确的均衡点很迂回,因为淌若内存不及,Pod 就会被杀死)。

皇冠体育直播

告警

冉冉完善咱们的告警系统是一个过程,但到终末,咱们将总共告警定向到了咱们的 Slack 频谈上。当集群未按预期运行或出现任何不可预念念的问题时,这种方法可以让工程师便捷地汲取见告。

皇冠官方现金网钱提不出来了账户被冻结

日记

关于任何微办事架构来说,将总共日记整合到一处,以及部署强劲的追踪 ID 策略(举例 OpenTelemetry 或雷同策略)王人口角常迂回的。咱们花了 2 到 3 年的时期才把这件事作念好。淌若咱们早点实行它,就会勤俭大王人时期。

安全性

博彩注册送彩金论坛

Kubernetes 中的安全性是一个领域很大的主题,我利弊各人漠视对其进行绝对的商酌,以了解安全性方面的总共隐迷糊别(举个例子,可以参阅 NSA、CISA 发布的 Kubernetes 强化指南)。以下是咱们以往履历中的一些重点,但请详确,这些本色信托不够完整。

皇冠体彩下载安装

探问适度

简而言之,Kubernetes 默许情况下并莫得过度限定。因此咱们参预了大王人时期来加强探问适度,为 Pod 和容器实行最小权限原则。此外,由于一些特定的舛错,无特权的攻击者有可能将其权限升级为 root,从而绕过 Linux 定名空间限定,在某些情况下,他们致使能逃离容器以获取主机节点上的 root 探问权限。起码这不是什么功德。

你应该诞生只读根文献系统,禁用办事帐户令牌自动挂载,禁用权限升级,删除总共不必要的功能等等。在咱们的具体诞生中,咱们使用 Azure Policy 和 Gatekeeper 来确保我方莫得部署不安全的容器。

在 AKS 内的 Kubernetes 诞生中,咱们左右基于脚色的探问适度(RBAC)的郑重性来进一步增强安全性和探问料理。

容器舛错

有许多很好的器具可以扫描和考证 K8s 容器和其他部分。咱们使用 Azure Defender 和 Azure Defender for Containers 来称心一些需求。

详确:不要堕入“分析瘫痪”,也等于先试图找到“好意思满”的,什么花哨功能王人包含的器具才脱手行为。你要作念的只是先遴荐一些器具,然后脱手学习即可。

咱们的持久诞生

部署

与许多其他应用步伐一样,咱们使用 Helm 来料理和简化 Kubernetes 上应用步伐的部署和打包任务。由于咱们很早以前就脱手使用 Helm,何况一脱手就混用了 .Net/Go/Java/Python/PHP,因此咱们重写 Helm 图表的次数多得我王人记不清了。

可不雅测性

咱们脱手使用 Loggly 和 FluentD 通盘来作念连合式日记纪录,但几年后,咱们转向了 Elastic 和 Kibana(ELK 堆栈)。对咱们来说 Elastic 和 Kibana 更易用,因为它们更流行,而且在咱们的诞生中更低廉。

容器注册表

咱们一脱手用的是 Quay,这个家具很可以。但跟着咱们迁徙到了 Azure,天然就转向了 Azure 容器注册表,因为它是集成的,对咱们来说是一个更“原生”的解决决策。(然后咱们还在 Azure Security Advisor 下获取了容器)。

管谈

从一脱手,咱们就一直使用 Drone 来构建容器。当咱们刚脱手时,救济容器和 Docker 的 CI 系统并未几,也莫得以代码形式提供成就。多年来,Drone 为咱们提供了很好的办事。当 Harness 收购它时,它变得有点零散,但在咱们屈服并转向高档版块后就获取了所需要的总共功能。

改变游戏秩序

欧洲杯代理转播软件

在畴昔的几年里,Kubernetes 改变了咱们的游戏秩序。它开释的功能使咱们大概更灵验地膨大(不褂讪的流量),优化咱们的基础设施资本,改善咱们的斥地东谈主员体验,让咱们更容易测试新念念法,从而权贵镌汰新家具和办事的上市时期 / 赢利时期。

咱们脱手使用 Kubernetes 有点太早了,那时候咱们还莫得着实遇到只须它才略解决的问题。但从永久来看,尤其是最近几年,事实解释它为咱们提供了强大的价值。

结 语

回想八年的经历,咱们有许多故事可以共享,其中许多一经淡入牵挂。但愿咱们的情况、咱们所犯的谬误以及咱们在此过程中吸取的熏陶能为各人带来匡助。感谢阅读。

https://medium.com/@.anders/learnings-from-our-8-years-of-kubernetes-in-production-two-major-cluster-crashes-ditching-self-0257c09d36cd

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



相关资讯