在生产环境中启动容器和Kubernetes的最佳实践和指南


集装箱技术的生态系统正在迅速发展和变化,因此,该领域缺乏良好的工作规范。尽管如此,Kubernetes和容器正越来越多地被使用-既用于升级旧应用程序,又用于开发现代云应用程序。 Mail.ru Kubernetes aaS

团队已经为Gartner,451 Research,StacxRox等公司的市场领导者收集了预测,技巧和最佳实践。它们将启用并加速容器在生产环境中的部署。

如何了解您的公司是否准备好在生产环境中部署容器


根据Gartner的调查,到2022年,将有超过75%的组织在生产中使用容器化应用程序。当目前只有不到30%的公司使用此类应用程序时,这比现在要多得多。 

根据451 Research的预测,到2022年,使用容器技术的市场规模将达到43亿美元,是2019年的两倍,市场增长率为30%。

Portworx和Aqua Security的一项调查中,有 87%的受访者表示他们目前使用容器技术。相比之下,2017年有55%的受访者。 

尽管人们对容器的引入越来越感兴趣并有所增长,但由于技术的不成熟和缺乏专门知识,将其投入生产需要接受培训。组织必须切实考虑需要应用程序容器化的业务流程。IT领导者应该评估他们是否具备一套技能,可以快速培训。 

Gartner专家认为,下图中的问题将帮助您了解是否准备好在生产中部署容器:


在生产中使用容器时最常见的错误


组织经常低估在生产中操作容器所需的工作。Gartner在生产环境中使用容器时发现了客户脚本中的一些常见错误:


如何确保容器安全


安全不能用“以后”来处理。它必须内置在DevOps流程中,因此甚至出现了一个特殊术语-DevSecOps。组织需要在整个开发生命周期中计划对容器环境保护,其中包括组装和开发过程,应用程序的部署和启动。

来自Gartner的建议: 

  1. / (CI/CD). . , . — .
  2. Center for Internet Security (CIS), Docker, Kubernetes.
  3. 确保应用访问控制,提供职责分离,并实施安全管理策略。机密信息(例如安全套接字层(SSL)密钥或数据库凭据)由管弦乐队或第三方管理服务加密,并在运行时提供
  4. 通过管理安全策略避免提升特权的容器,这将减少潜在的黑客攻击风险。
  5. 使用提供白名单,行为监控和异常检测的安全工具来防止恶意活动。

StacxRox的建议

  1. Kubernetes. , . , , . , . . 
  2. . , , , « » . , .
  3. 设置网络策略:隔离模块以限制对其的访问;使用标签明确允许Internet访问那些需要它的模块;明确允许那些需要相互通信的模块之间进行通信。 

如何组织对其中的容器和服务的监视


安全和监视是公司在部署Kubernetes集群时主要关注点开发人员始终将重点放在正在开发的应用程序的功能上,而不是监视这些应用程序。 

来自Gartner的建议

  1. 尝试与监视主机系统一起监视容器中的容器或服务的状态。
  2. 优先选择在容器编排中具有深度集成的制造商和仪器,尤其是Kubernetes。
  3. 选择可以使用分析和/或机器学习实时提供详细日志记录,自动发现服务和建议的工具。

SolarWinds博客建议

  1. 使用工具自动检测和跟踪容器指标,并关联性能指标,例如处理器,内存和正常运行时间。
  2. 通过基于容器监视指标预测容量耗尽的时间来确保最佳容量规划。
  3. , , , , .
  4. , .
  5. , , , .
  6. , (, ) , , .


随着具有状态保存功能的工作容器数量的增加,客户端需要考虑数据在主机外部的位置以及保护这些数据的需求。 

根据Portworx和Aqua Security调查,在大多数受访者指出的安全问题列表中,数据安全性排名第一(61%)。 

数据加密是主要的安全策略(64%),但受访者还使用运行时监视(49%),注册表漏洞扫描(49%),CI / CD管道中的漏洞扫描(49%)和通过运行时保护进行异常阻止(48%)。

来自Gartner的建议

  1. , . , , , API, ,  .
  2. . , Kubernetes , CSI (Container Storage Interfaces).


传统的公司网络模型(IT专家在其中为每个项目创建用于开发,测试,质量保证和生产的网络环境)并不总是与持续开发工作流程保持良好的一致性。另外,容器网络跨越多个级别。

Magalix博客编制高层次的规则,集群网络解决方案的实施必须遵守:

  1. 安排在同一节点上的Pod必须能够与其他模块通信,而无需使用NAT(网络地址转换)。
  2. 在特定节点上运行的所有系统守护程序(后台进程,例如kubelet)都可以与在同一节点上运行的pod进行交互。
  3. 使用主机网络的 Pod应该能够与所有其他节点上的所有其他Pod通信,而无需使用NAT。请注意,主机网络仅在Linux主机上受支持。

网络解决方案必须与Kubernetes原语和策略紧密集成。IT管​​理人员应努力实现高度的网络自动化,为开发人员提供正确的工具和足够的灵活性。

来自Gartner的建议

  1. 找出是否支持您的CaaS(容器即服务)或SDN(软件定义网络)Kubernetes网络。如果不是,或者支持不足,请为您的容器使用容器网络接口(CNI),该接口支持必要的功能和策略。
  2. , CaaS PaaS ( ) / , . , service mesh.
  3. Linux , .


为了实现自动化和不间断的应用程序交付,您需要使用其他自动化工具(例如代码(IaC)之类的基础架构产品)来补充容器编排。其中包括Chef,Puppet,Ansible和Terraform。 

还需要用于组装和推出应用程序的自动化工具(请参阅“ 协调应用程序发行版魔力象限 ”)。容器还提供与部署虚拟机(VM)时类似的扩展功能。因此,IT经理必须具有容器生命周期管理工具

来自Gartner的建议

  1. , .
  2. , , .
  3. CaaS , .


在业务流程和计划级别提供了用于部署容器的关键功能。根据协调级别的要求,将计划容器放置在群集中的最佳主机上时。 

在大多数领先的商业供应商的支持下,Kubernetes已成为一个活跃社区的容器编排的事实上的标准。 

来自Gartner的建议

  1. 定义安全控制,监视,策略管理,数据存储,网络管理和容器生命周期的基本要求。
  2. 根据这些要求,选择最适合您的要求和使用方案的工具。
  3. Gartner (. « Kubernetes»), Kubernetes .
  4. , , .


Gartner认为,由于预构建的CaaS产品的可用性以及这些产品与云提供商提供的其他产品的紧密集成,在公共IaaS云中部署容器的兴趣正在增长。

IaaS云提供按需资源消耗,快速可伸缩性和服务管理,以帮助避免对基础架构及其维护有深入了解的需求。大多数云提供商都提供容器管理服务,有些提供了一些编排选项。 

下表提供了托管服务的关键云提供程序: 

云提供商服务种类产品/服务
阿里巴巴本机云服务Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes
Amazon Web Services (AWS)Native Cloud ServiceAmazon Elastic Container Services (ECS), Amazon ECS for Kubernetes (EKS), AWS Fargate
Giant SwarmMSPGiant Swarm Managed Kubernetes Infrastructure
GoogleNative Cloud ServiceGoogle Container Engine (GKE)
IBMNative Cloud ServiceIBM Cloud Kubernetes Service
MicrosoftNative Cloud ServiceAzure Kubernetes Service, Azure Service Fabric
OracleNative Cloud ServiceOCI Container Engine for Kubernetes
Platform9MSPManaged Kubernetes
Red HatHosted ServiceOpenShift Dedicated & Online
VMwareHosted ServiceCloud PKS (Beta)
Mail.ru Cloud Solutions*Native Cloud ServiceMail.ru Cloud Containers

*不要隐藏它,我们在翻译时在这里添加了自己:)

公共云的提供者还添加了新功能并发布了本地产品。在不久的将来,云提供商将开发对混合云和多云环境的支持。 

Gartner建议

  1. 客观地评估您的组织部署和管理适当工具的能力,并考虑替代的云容器管理服务。
  2. 仔细选择软件,并尽可能使用开源软件。
  3. 选择在混合环境中具有单一操作模型的供应商,这些供应商可以通过一个仪表板提供集成的集群管理,以及可以轻松地独立使用IaaS的提供商。

从Replex博客中选择Kubernetes aaS提供程序的一些技巧

  1. 值得寻找开箱即用的支持高可用性的发行版。这包括对几种核心体系结构,高可用性etcd组件以及备份和还原的支持。
  2. 为了在Kubernetes环境中实现移动性,最好选择支持广泛部署模型的云提供商:从本地部署到混合云和多云。 
  3. 考虑到安装,安装和群集创建的简便性以及更新,监视和故障排除的功能,提供商的报价也值得评估。基本要求是支持零停机的全自动集群更新。您选择的解决方案还应该允许您手动运行更新。 
  4. , . , Kubernetes , . RBAC .
  5. , , , CNI, Flannel, Calico, kube-router OVN.

在2018年12月Gartner会议 进行有关基础设施,运营和云策略(IOCS)的调查结果表明,将容器引入生产已成为主要重点


如您所见,有27%的受访者已经在工作中使用了容器,而63%的人打算这样做。

Portworx和Aqua Security的一项调查中,有 24%的受访者表示他们每年在容器技术上投资超过一百万美元,而有17%的受访者每年在容器技术上花费超过一百万美元。 

本文由云平台的Mail.ru云解决方案团队编写

还有什么要阅读的主题

  1. DevOps最佳做法:DORA报告
  2. Kubernetes .
  3. - Kubernetes.


All Articles