广义上的容器管理软件是允许管理容器化应用程序的软件解决方案。它们为容器架构提供自动化、编排、治理、安全、定制和企业支持等功能。
我们可以识别几种类型的容器管理软件:
容器引擎,如 Docker 和 Docker 企业版,提供容器运行环境,允许创建容器、管理容器镜像和执行基本操作。
容器编排器,如 Kubernetes,允许大规模管理、治理和自动化容器。
托管容器平台,例如 Google Kubernetes Engine,它通过附加服务来增强容器引擎和编排器,例如编排器和底层硬件资源的管理。
容器管理软件如何工作
为了说明不同类型的容器平台如何工作,让我们看一下每种类型平台的一个常见示例。
容器引擎:Docker 的工作原理
Docker 是一个容器引擎,可让创建和管理容器。它基于客户端-服务器架构,包括以下核心组件:
一个docker客户端——触发 docker 命令
一个docker主机——运行docker 守护进程
一个docker注册表——存储 docker 镜像
docker 客户端使用 REST API 与 docker 守护进程通信。Docker 客户端和守护进程可以在同一个系统上运行。或者,可以远程连接客户端和守护程序。
客户端可以向 docker 守护进程发出构建命令。然后守护进程构建一个 docker 镜像并将其保存在 docker 注册表中。可以将本地存储库用于注册表,也可以从Docker Hub拉取公共镜像。要创建一个正在运行的实例,需要发出一个命令来创建一个 docker 容器。
使用容器管理软件的6个最佳实践
在使用容器平台时,尤其是在大规模部署中,以下最佳实践将帮助有效地运营容器基础设施。
容器安全
必须将安全性内置到 DevOps 流程和容器化环境中
在其整个生命周期中。这包括开发和构建过程、测试和部署到生产。
有多种工具可用于管理容器安全性。确保使用的工具可以评估容器集群的安全状况并识别漏洞,控制镜像以确保永远不会从受感染或受损的镜像部署容器,并且可以实时监控和保护容器工作负载。
容器监控
部署云原生应用程序将重点从基于主机的监控转移到容器、集群和协调器级别的监控。必须监控所有级别的容器基础设施,以确保可用性、性能和遵守服务级别协议。
容器存储
要设计真正的云原生应用程序,需要采用容器兼容的存储平台。容器编排器可以连接到存储提供程序并动态配置存储卷。确保存储基础架构与开发生命周期相集成,并且可以支持容器化工作负载所需的性能和可用性。
容器网络
容器的可移植性和短生命周期可以压倒传统的网络堆栈。这些不提供足够的访问和策略管理功能来支持容器化应用程序。大规模运行容器时,消除手动网络配置,并利用容器编排器的网络自动化功能。
容器生命周期管理
容器是短暂的,必须谨慎管理其生命周期,以防止资源的蔓延和浪费。容器生命周期管理应该与持续集成/持续部署过程紧密结合。使用基础设施即代码 (IaC) 工具以及容器编排器或 CaaS 提供商的本机功能自动执行基础设施部署和运营任务。
容器编排
编排和调度层提供容器部署的核心功能。编排层与应用程序交互以确保容器按预期运行并维护服务级别协议。Orchestrator 负责根据需要将容器放置在尽可能多的主机上,并提供其他必要的资源,以保持应用程序运行。