Kubernetes被越来越多的公司采用,但几乎所有组织都面临挑战。许多企业开始采用Kubernetes时没有专门的管理策略,各个团队创建自己的集群来满足特定的业务功能整个企业之间没有一致的结构,策略或管理实践。随着集群和工作负载数量的增长,由于它们是独立管理和治理的,从而导致集群蔓延,从而妨碍组织实现容器和Kubernetes的全部价值,导致资源的浪费。
解决这一挑战并同时提高投资回报率的一种方法是创建多租户Kubernetes策略。在共享基础架构上运行更多应用程序,意味着更好地利用资源并降低了总体运维成本。
多租户策略的好处
无论你是Kubernetes的新手,还是你的组织已在多个集群中采用Kubernetes,多租户策略都可以带来巨大的好处。
管理多租户部署的挑战
在管理多租户Kubernetes部署时,一个非常常见的问题是“嘈杂的邻居(noisy neighbor)”。嘈杂的邻居(noisy neighbor)被定义为在多租户环境中争夺共享资源的一方,这一问题在IT团队中已变得司空见惯。
嘈杂的邻居(noisy neighbor)会对同一集群中其他工作负载的性能产生严重影响,有时会阻止它们一起运行。当一个应用程序占用了集群中的所有CPU或内存时,其他工作负载(如果有的话)运行速度会变得很慢。长期缺乏对容器的可见性,再加上缺乏统一的政策,这意味着IT运维和技术团队可能很难在多租户环境中避免嘈杂的邻居(noisy neighbor)问题的发生。
Kubernetes中隔离的核心元素是名称空间。名称空间是声明性区域,可帮助组织确定代码运行的位置。正确使用名称空间可以帮助排除故障并防止嘈杂的邻居(noisy neighbor)问题发生。通常,平台上的每个租户(可以是应用程序或微服务,也可以是团队或项目),都需要一个专用的名称空间。部署在名称空间中的应用程序可以利用Kubernetes提供的强大的安全性和资源管理结构来构建有效的多租户平台。
任何好的策略都包括风险管理
在任何策略中,从业务角度考虑风险域都是至关重要的。软件的风险管理,需要考虑监管环境,合规性目标以及根据工作负载而变化的其他业务需求等。这就需要组织,根据每个风险域组织集群以便可以使用实施适当策略的自动化控件来部署工作负载。
例如,由于特定行业的法规或数据法律安排几个集群可能是有益的。在适当的多租户策略中,重要的是安排集群以代表特定的风险域,并为要在集群级别应用的每个工作负载提供所需配置的自动实施。然后,应用程序可以依靠集群基础结构来提供这些功能,而不是每个应用程序本身都必须独立地满足这些标准。
随着Kubernetes环境的发展,其复杂性也在增加。通过创建多租户策略,组织可以自定义部署以满足其IT和业务需求。无论集群的数量或规模如何,通过适当的策略,任何组织都可以节省成本,降低风险并提高安全性。
译文链接: https://thenewstack.io/designing-a-multitenancy-kubernetes-strategy-that-fits-your-organization/