Venafi云原生解决方案高级主管Sitaram Iyer表示,Kubernetes已成为整个行业的事实标准,以确保容器工作负载符合规范并可扩展。Kubernetes现在被称为世界上最大的容器化工作负载编排平台,83%的云原生计算基金会(CNCF)成员已经在生产中使用它。
Iyer说:“通过自动化容器化环境,Kubernetes实现了一个动态的、多云的、多开源的环境,该环境是可扩展的、经济高效的、高效的,是开发人员的天堂。”
但为了让开发人员真正到达并享受这个天堂,他们必须正确部署Kubernetes。
Kubernetes部署:基本步骤
初始介绍:Iyer说,一个特定的团队通常会负责公司的Kubernetes初始部署。这个团队通常会创建小集群来进行试验。最初的Kubernetes介绍也可能会提供一个机会来了解使用云提供商管理的服务(如Google Kubernete Engine(GKE)或Amazon Web Services的Elastic Kubernettes service(EKS))提供的Docker镜像和容器的基础知识。然而,许多人往往开始使用现有的虚拟环境在本地部署Kubernetes。
探索阶段:Iyer解释说,在这一步中,团队对Kubernetes的使用超越了试验,集群应该承载“真实”的工作负载。这些工作负载可能是应用程序的非关键组件,也可能是持续集成(CI)服务使用的临时工作人员。
基础阶段:根据Iyer的说法,一旦他们对自己运行和管理Kubernetes集群的能力有了足够的信心,团队就应该能够轻松地托管分布式云原生应用程序。
可重复阶段:Iyer表示,随着团队在生产Kubernetes集群中托管关键应用程序方面获得信心和经验,他们将很好地将遗留应用程序迁移到Kubernetes。应该充分理解迁移遗留应用程序的挑战,并且一些迁移应该已经到位。
优化阶段:根据Iyer的说法,在这个阶段,团队现在应该使用自定义operator超集,例如Knative Services和Argo Workflows,而不是直接使用Kubernetes原语。应该开发利用这些operator的应用程序,并使用适合Kubernetes控制器-协调器范式的设计模式。
Kubernetes部署中的最佳实践
Spectro Cloud联合创始人Saad Malik表示,当企业将开发团队的技能与Kubernetes用户(平台工程/IT运营团队)在技能集、工作流程/流程和工具方面保持一致时,企业在Kubernetes部署方面取得了最大的成功。“将Kubernetes平台视为一种产品,不断从内部客户(开发团队)和运维人员(平台工程/IT运维团队)获得反馈。”
Malik补充道,虽然整个组织可能对Kubernetes的初始部署感到满意,但需求可能会迅速变化,因此公司应该事先考虑需要的一整套工具,以及公司将如何支持这些工具,包括扩展、备份和恢复、更新和升级、修补等。
Malik说:“从升级过程中出现问题的前提出发,制定明确的业务连续性和灾难恢复计划——经常测试这些计划。”
公司还需要确保Kubernetes部署不会危及数据安全。
Malik说:“加入集群的每一个新集成都会带来自己的一系列挑战,例如安全漏洞、兼容性问题——它们实际上是需要管理的平台的附加层。”
Iyer补充道:“尽管Kubernetes集群和容器本质上是安全的,但部署中最佳实践的关键是确保安全和管理是首要任务。随着Kubernetes的成熟,这一点变得更加重要,因为现在更需要加强控制和治理。”
Malik补充道,安全和治理不能是事后诸葛亮,尤其是在生产中使用Kubernetes时。“一个真正的零信任模型应该是一个先决条件,以及一套监控和审计功能,以提供成本(Kubecost)、政策执行(OPA、Kyverno)、RBAC(Fairwinds RBAC经理)等所需的可见性。”
Iyer表示,未能充分解决安全问题是Kubernetes部署中可能犯的最大错误。“许多组织部署Kubernetes的方式显著增加了风险。开发团队正在从部署大型集群发展为多个小型集群,每个集群都与单个应用程序、团队单位或业务区域相关。”
Iyer解释说,这种更灵活的方法的问题在于,它会增加复杂性,因此需要管理更多的机器身份,因为这些集群需要安全地相互通信。“在每一个Kubernetes集群中,每一行代码和微服务都需要一个机器身份来进行安全通信。通过部署复杂的多集群策略,正在创建大量无法手动管理的身份。”
许多公司都在求助于Istio这样的解决方案来帮助管理机器身份的涌入,但据Iyer称,这实际上是一种复杂的风险,因为Istio只支持自签名的机器身份,这会使组织变得脆弱。这些证书不是由公共受信任的组织管理的证书颁发机构(CA)签署的,不能被吊销,也永远不会过期。
Kubernetes部署的未来
Kubecost等成本管理工具形式的自动化将越来越多地集成到Kubernetes平台中,以跨不同环境提供实时、细粒度的成本监控和分析。此外,D2iQ首席执行官Tobi Knaup预测,集中管理将使团队和基础设施平台之间的资源共享更加高效。
根据Iyer的说法,许多组织都在关注持续交付的下一个演变——“渐进式交付”,包括逐步向一部分用户推广应用程序,并利用所学到的知识向每个人交付。“渐进式交付的理念还在于为企业领导者提供更大的控制权,以便他们可以使用功能标志之类的东西来管理交付。这在多租户的情况下非常有益,因为它允许组织仅为相关租户管理部署和规模。”
Iyer警告说,渐进式交付存在挑战,因为它可能会使系统变得复杂,需要维护多个版本的服务和管理流量。
Malik表示,大规模简化所有管理点并能够自动化将是未来Kubernetes部署成功的关键。能够以“即服务”的方式快速适应开发团队的不同需求,并快速集成新工具(如多个Kubernetes分发服务网格等)将是至关重要的。
Malik表示,过度订阅“虚拟化Kubernetes集群”或更好的集中化管理能力将是另一个发展维度。