亮点
- 容器编排是指在容器的整个生命周期内,实现部署、管理、扩展和网络连接自动化的过程。
- Kubernetes 等容器编排平台,可提供顺畅的自我管理运营体验。
- 编排可协调不同容器中的微服务。
- Kubernetes 消除了部署和扩展容器化应用过程中涉及的许多手动流程。
- 红帽打造了用于保护、简化和自动更新容器基础架构的基本工具。
什么是容器编排?
容器编排是指在容器的整个生命周期内实现部署、管理、扩展和网络连接自动化的过程,它使在许多不同环境中大规模一致地部署软件成为可能。
容器是云原生应用开发的基础,可将应用及其运行环境打包成一个独立单元。对于需要部署和管理成百上千个容器和主机的企业来说,容器编排尤为重要。大多数容器编排解决方案都是基于 Kubernetes 这个被广泛采用的开源平台构建的。
容器编排有哪些优势?
Kubernetes 等容器编排平台可实现容器整个生命周期的自动化,让 IT 团队从以往不间断的维护工作中解放出来,转为顺畅的自我管理运营模式。
容器编排在开发方法、成本和安全性方面均具备诸多优势。
加快开发速度
容器的设计目的是实现跨环境的可移植性和一致性,为加快软件开发速度开辟新的途径。容器编排使构建持续集成和持续部署(CI/CD)管道成为可能,从而通过自动化提升整个软件开发生命周期的软件交付效率。容器方法还与 DevOps 方法之间存在着密切的联系,DevOps 方法旨在加速将想法从开发阶段推进到最终部署阶段的整个过程。
节省成本
容器编排可根据需求自动扩展容器,为应用提供所需的容量,同时节约资源并降低成本。容器编排平台可为企业组织提供必要的灵活性,以便他们有效利用多云和混合环境。
安全防护
通过在容器中开发软件,团队可在构建阶段修复安全问题,而不必对运行中的应用进行更新或修补。这可在容器行为和异常行为检测方面实现更好的可预测性。借助容器编排,企业组织还可以制定安全防护与治理策略,并按 Pod 或 Pod 组细分策略。容器编排平台还支持基于角色的访问控制(RBAC),它可为用户和服务账户分配特定的权限。
Kubernetes 原生安全防护的优势
容器编排具有哪些用途?
容器编排可满足现代云原生应用的高强度运营需求。过去,一个软件应用就是一个庞大的块,即“单体架构”。如今,应用被分解为数十乃至数百个微小的独立服务(称为“微服务”),每个服务都在各自的容器中运行。编排可以协调这些移动部件,确保它们能够相互通信、独立扩展,并在不同环境中可靠运行。
容器编排可用于自动化和管理任务,例如:
- 置备和部署:编排器会读取您的配置蓝图,下载所需的容器镜像,并在您的基础架构中自动初始化这些容器。
- 配置和调度:它会评估集群的服务器,为每个容器选择最佳主机,并在启动时注入必要的环境变量和存储设置。
- 资源分配:编排器利用预定义的 CPU 和内存限制,智能地将容器打包到服务器上,在确保应用之间不会争抢资源的同时,最大限度地提高硬件使用效率。
- 容器可用性:它会持续监控集群,并立即替换任何崩溃的容器或出现故障的服务器。
- 扩展和工作负载平衡:当流量激增达到预定义的资源阈值时,它会自动启动额外的容器副本;而在需求回落后,则会移除多余副本以节约成本。
- 负载均衡和流量路由:它提供一个永久的内部路由端点,将网络流量均匀分配到不断变化的容器 IP 地址池中。
- 监控容器健康状况:自动探测会定期检查容器是否正常运行,一旦发现应用僵死便立即重启,同时阻止流量进入仍在启动的应用。
- 为每个容器配置应用:它通过在运行时将唯一配置和机密密钥直接注入容器环境,从而将设置与应用代码分离开来。
- 确保交互安全:它采用严格的隔离网络防火墙策略,明确指定哪些容器可以相互通信,从而将安全风险降至最低。
容器编排工具有哪些用途?
容器编排工具为大规模管理容器和微服务架构提供了框架。有多种容器编排工具可用于容器生命周期管理。其中一些备受欢迎的工具有:Kubernetes、Docker Swarm 和 Apache Mesos。
Kubernetes 是一种开源的容器编排工具,最初由 Google 工程师开发和设计。 2015 年,Google 将 Kubernetes 项目捐赠给了新成立的云原生计算基金会。
Kubernetes 如何助力实现容器编排
借助 Kubernetes 编排功能,您可以构建跨多个容器的应用服务,跨集群调度容器,扩展这些容器,并长期持续管理其健康状况。
Kubernetes 消除了部署和扩展容器化应用过程中涉及的许多手动流程。您可以将运行 Linux 容器的主机群组(无论是物理机还是虚拟机)聚合成集群,而 Kubernetes 可为您提供轻松高效地管理这些集群的平台。
更广泛地说,它可以帮助您在生产环境中全面实施并依赖基于容器的基础架构。而且,这些集群可部署在跨公共云、私有云或混合云的主机上。因此,对于要求快速扩展的云原生应用而言,Kubernetes 是理想的托管平台。
通过 Kubernetes,您无需重新设计即可移动应用,从而实现工作负载的可移植性和负载平衡。
Kubernetes 的主要组件:
- 集群:控制平面和一个或多个计算机器或节点(即节点)。
- 控制平面:控制 Kubernetes 节点的进程集合。所有任务分配都从这里开始。
- Kubelet:此服务在节点上运行,可读取容器清单,并确保定义的容器已启动并正常运行。
- Pod:由一个或多个容器组成的集合,部署在单个节点上。Pod 中的所有容器共享一个 IP 地址、IPC、主机名称和其他资源。
容器编排工具如何运作?
容器编排工具的工作原理是运行一个持续协调循环(也称为控制循环),该循环会不断将实际情况与您的指令相匹配。
您不必向工具发出分步命令(命令式方法),而是向其提供您期望的最终结果的蓝图(声明式方法)。编排器的唯一工作是确保基础架构的实际状态始终与您期望的蓝图完全匹配。
在使用 Kubernetes 等容器编排工具时,您需要使用 YAML 或 JSON 文件来描述应用的配置。配置管理工具可以通过配置文件了解在哪里查找容器镜像、如何建立网络以及在哪里存储日志。
部署新容器时,容器管理工具将自动根据任何已设定的需求或限制,将部署任务调度到集群中,并找到合适的主机。随后,容器编排工具会根据在 compose 文件中确定的规范来管理容器生命周期。
对于基于容器的应用和服务,您可以使用 Kubernetes 模式来管理它们的配置、生命周期和扩展。这些可重复使用的模式是 Kubernetes 开发人员构建完整系统时必不可少的工具。
容器编排可以在运行容器的任何环境中使用,包括本地服务器和公共云或私有云环境。
一文带你看懂 Kubernetes (K8s) 部署是什么?| 红帽
为什么选择红帽实现容器编排?
红帽是开源容器技术的领导者和积极构建者,为保护、简化和自动更新容器基础架构创建了必要的工具。
借助红帽® OpenShift® 的可扩展性以及控制和编排功能,开发人员可以构建新的容器化应用、对其进行托管并在云端加以部署,从而轻松快速地将各种出色创意转变为新业务。如果您想要将 Kubernetes 工作负载部署或迁移到托管云服务,OpenShift 也可以用作 Amazon Web Services(AWS)、Microsoft Azure、Google Cloud、IBM Cloud 和其他提供商平台上的云原生服务。
以 OpenShift 为基础,并结合使用红帽高级集群管理和红帽 Ansible® 自动化平台,您可以跨区域(包括公共云、本地和边缘环境)高效部署和管理多个 Kubernetes 集群。