2

管了3年K8S集群,我学到的10个经验教训 - 运维 - dbaplus社群:围绕Data、Blockchain...

 6 months ago
source link: https://dbaplus.cn/news-134-5894-1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

管了3年K8S集群,我学到的10个经验教训

Herve Khg 2024-02-27 10:06:03

背景

在过去的三年里,我穿越了管理Kubernetes集群的时而波澜起伏的领域。这段充满挑战和发现的旅程让我深刻理解了这一尖端的技术,以及众多的其他方面。在这篇文章中,我想与您分享我作为Kubernetes集群管理员所学到的十个最有价值的教训。

这些教训涵盖了各种主题,从管理底层基础设施到优化部署流程,包括确保集群可扩展性和安全性的最佳实践。无论您是初次接触Kubernetes的新手,还是经验丰富的专家,这些建议都将为您提供如何有效管理Kubernetes集群的丰富视角。

让我们一起深入探讨这些教训,这是三年经验、成功和挑战的结晶。

教训1:使用云里的Kubernetes

除非有极端的约束,否则自己不要去管理Kubernetes底层基础设施。您会花费时间调试那些对您的业务毫无价值的问题。成为kube-api、kube-apiserver、kubelet、etcd、kube-proxy等方面的专家是很棒的,但每天都要自己维护这些并不会创造任何业务价值。您无需成为这些概念的专家就能有效地管理集群。将这个低级任务委托给云服务提供商(AWS、Azure、GCP、OVH等),他们比您做得更好。在HK-TECH,我们选择了AWS和EKS集群(注意ECS不是Kubernetes!)。

教训2:使用代码部署所有与Kubernetes相关的基础设施

集群的任何部分都不应该在控制台上手动完成,甚至连一个简单的标签都不要加。特别是要避免“我先在控制台上快速修复了一下,稍后我就会更新代码”的思维方式。迷思:其实您永远不会这样做。

教训3:避免过度使用您无法完全控制的Helm Charts

是的,它们很棒,工作迅速,您不必为编写您自己的YAML而烦恼,除非有一天更新会导致一切都崩溃。如果您真的很懒或时间很紧,至少努力理解values.yaml文件中的每个变量,并避免使用默认值。在HK-Tech,规则是不使用Helm Chart;在最坏的情况下,我们会仅获取模板。

教训4:Kubernetes不喜欢“lift and shift”

因此,为了使用到 k8s,你需要从旧应用程序的云迁移适配开始着手。不是让K8s来适应您的应用程序,而是由应用程序适配 k8s。如果您没有重新编写应用程序的能力,也许最好还是坚持使用旧的虚拟机运行的模式。

教训5:Mesh还是不Mesh?

如果不需要,就不要安装服务网格。那么你怎么才知道是否需要它?问自己两个问题:我的集群中的应用程序是否相互通信?我的集群中的应用程序之间的交换是否需要安全策略?如果两者的答案都是肯定的,那么安装服务网格可能是有用的。我没有具体的建议;通常各种 Mash 技术之间都很相似。

教训 6:避免使用过多的工具

Kubernetes提供了大量的辅助工具,承诺为更好地管理您的集群提供山寨和奇迹:argocd、lens、k9s、keda、krew、kubectx、kubens、kail等等。避免将它们像集邮一般的收集起来,老实说:用kubectl就能满足90%的需求。就个人而言,我仅限于使用到了kubectx、kubens和k9s,它们在集群管理上是有收益的。

教训 7 :必须为Pod定义资源限制(内存和CPU)

这将防止糟糕编码或错误配置的应用程序吞噬掉您集群的所有资源,并由于一些贪婪的Pod而导致其他应用程序一个接一个地崩溃。这也是对Helm Chat保持警惕,并始终详细检查封装背后的清单源代码的原因之一。

教训 8:考虑无状态

理想情况下,最好避免在Pod中存储数据。如果由于某种原因无法避免,则最好使用NAS而不是磁盘直接挂载。否则,您可能会惊讶地发现部署中的一些Pod无法访问持久资源。是的,硬盘只能在一个节点上挂载,因此如果您的Pod分布在多个节点上,同一节点上的Pod将看到相同的数据,但其他节点上的Pod将看不到。使用像EFS这样的NAS类型挂载,您就将能避免这个问题。

教训 9:配置HPA(水平Pod自动缩放)

如果您既想停留在旧的工作方式中,又想从Kubernetes的强大之处中受益,那就需要根据需求自动的管理资源利用率,需要在所有应用程序项目上配置HPA。(Helm Chat的另一个限制,很不幸通常非常缺)。

教训 10:不要害怕变革

平均而言,您应该计划每年对集群进行三次版本升级,大约每四个月进行一次更新。某些更新是透明的,但通常会有带来影响的变更。为了更好地准备这些更新,我建议阅读、再阅读和重新阅读版本发布说明,以及那些在您之前进行过版本更新的人的经验。我建议,而且我们在HK-TECH已经实施的是:始终保持在最新版本的上一个版本(除非有安全补丁)。

祝您度过愉快的Kubernetes之旅!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK