1.确保一致性
采用 Kubernetes 的大型组织面临的最大挑战之一是保持跨多个团队和部门的一致性。在一个大型且成熟的组织(企业)中,不同的团队很可能有不同的创建和部署应用和服务的方式。当每个团队采用 Kubernetes 时,它们可能会有自己的集群管理方式,使用不同的工具,并有不同的方式来开发和部署应用程序到 Kubernetes。
根据组织以及 Kubernetes 在内部的采用范围,这种差异最初可能看起来是可以接受的,但大多数公司都会遇到这样的情况:缺乏标准会导致运营问题、财务问题和增加安全风险。为了应对这些挑战,企业需要找到在允许一定程度的灵活性的同时促进一致性的方法。解决一致性挑战的一些方法包括:
- 为 Kubernetes 使用建立清晰的指南和模式
- 实施持续集成 (CI) 检查以执行标准
- 制定并执行整个组织的政策(最好是自动的)
- 使用准入控制器确保遵守组织标准
2. 为企业规模构建 Kubernetes
对于迁移到 Kubernetes 基础架构的企业来说,另一个关键考虑因素是确定最佳集群架构。此决定需要您权衡不同方法的优缺点,例如:
- 为多个团队的应用程序运行单个集群
- 为不同的团队或部门创建单独的集群
- 根据特定需求实施混合方法
3.将 Kubernetes 与现有基础设施集成
除了 Kubernetes,企业通常还会在许多不同类型的基础架构中运行应用。例如,您可能直接在虚拟机、其他容器化系统、不同云、本地甚至直接在硬件上运行应用。在具有如此多样化基础架构类型的环境中,满足安全性和合规性要求可能很困难。
尽管很复杂,但如果您拥有类似的安全工具、操作系统和镜像-在所有环境中实施强化协议。您既需要拥有工具,又需要确保开发人员可以轻松使用这些工具。这意味着,例如,即使有一种适用于 Kubernetes 的容器操作系统,您也可以选择使用与其他环境相同的操作系统,以最大限度地减少混乱和复杂性。
4.解决 K8s 安全问题
Kubernetes 引入的安全注意事项与直接在虚拟机上运行应用程序有很大不同。除了了解机器实例本身之外,您的安全团队还必须调整其方法来查看:
- 容器镜像及其复合层
- 容器在其运行的主机上的权限和交互以及这些计算机上其他容器的权限
- 工作负载和容器如何相互通信
- 不同网络层的流量
- 如何处理机密信息
此外,组织需要认识到,为虚拟机设计的安全工具可能无法在 Kubernetes 集群中提供相同的功能或数据。一旦组织了解了这一点,它通常会采用特定于 Kubernetes 的安全解决方案。
5.支持开发团队
无论是在小型组织还是大型企业中,仔细考虑开发人员需要掌握多少 Kubernetes 知识才能开发和部署应用和服务非常重要。Kubernetes 非常复杂。对于不是 Kubernetes 专家的开发人员来说,掌握一系列全新的 Kubernetes 组件(例如部署、服务、入口对象和配置图)可能会让人不知所措。
如果没有适当的指导和工具开发人员很容易在无意中将问题引入系统,或者需要站点可靠性工程 (SRE) 团队的大力支持才能成功部署其应用程序。为了应对这一挑战,许多组织都在投资自助服务平台,例如内部开发者平台,抽象出了 Kubernetes 的复杂性。这些平台使开发人员能够轻松地配置和部署应用程序到 Kubernetes,而无需深入了解底层基础设施。