概述
Kubernetes(也称 k8s 或 “kube”)是一个开源的容器编排平台,可以自动化在部署、管理和扩展容器化应用过程中涉及的许多手动操作。
Kubernetes 最初是由 Google 工程师作为 Borg 项目开发和设计的,后于 2015 年捐赠给 云原生计算基金会(CNCF)。红帽® 是第一批与 Google 合作研发 Kubernetes 的公司之一,作为 Kubernetes 上游项目的第二大贡献者,我们甚至在这个项目启动之前就已参与其中。
什么是 Kubernetes 集群?
有效的 Kubernetes 部署称为集群,也就是一组运行 Linux® 容器的主机。您可以将 Kubernetes 集群可视化为两个部分:控制平面与计算设备(或称为节点)。
每个节点都是其自己的 Linux 环境,并且可以是物理机或虚拟机。每个节点都运行由若干容器组成的容器集。
控制平面负责维护集群的预期状态,例如运行哪个应用以及使用哪个容器镜像。计算机则负责应用和工作负载的实际运行。控制平面接受来自管理员(或 DevOps 团队)的命令,并将这些指令转发给计算机。
此交接将与许多服务协同,以自动决定哪个节点最适合执行该任务。服务会将工作定义与容器集解耦,并自动将服务请求分发到正确的容器集——无论这个容器集会移动到集群中的哪个位置,甚至可以被替换掉。然后,它将在该节点分配资源,并指派容器集来完成任务请求。
Kubernetes 在操作系统(例如,红帽企业 Linux)上运行,并与节点上运行的容器集交互。
Kubernetes 集群的预期状态定义了应运行哪些应用或其他工作负载、应使用哪些镜像、应提供哪些资源,以及其他配置详情。
在使用这种基础架构时,管理容器的方式基本不变。但您需要在更高级别参与容器管理,无需对独立的容器或节点实施微观管理,就能更好地控制容器。
您可以自己决定具体在哪里运行 Kubernetes。可以是裸机服务器、虚拟机(VM)、公共云提供商、私有云和混合云环境。Kubernetes 的一大优势就是它可以在许多不同类型的基础架构上运行。
听听红帽领导者关于容器会如何改变开放混合云的看法。
Kubernetes vs.Docker
Docker 可被用作由 Kubernetes 编排的容器运行时。当 Kubernetes 将容器集调度到节点上时,该节点上的 kubelet(确保每个容器都在运行的服务)会指示 Docker 启动指定的容器。
然后,kubelet 持续从 Docker 收集这些容器的状态,并将该信息聚合到控制平面中。Docker 将容器拉到该节点上,并启动和停止这些容器。
将 Kubernetes 与 Docker 搭配使用带来的区别在于,自动化系统要求 Docker 在所有节点上对所有容器执行这些操作,而非要求管理员手动操作。
准备好开启 Kubernetes 之旅了吗?在这个点播课程中,您将了解如何实现应用和服务的容器化,如何使用 Docker 对其进行测试,并使用红帽 OpenShift® 在 Kubernetes 集群上部署应用和服务。
Kubernetes 的用途是什么?
Kubernetes 可以帮助您交付和管理容器化、传统和云原生应用,以及重构为微服务的应用。
为了满足日新月异的业务需求,开发团队需要能够快速构建新的应用和服务。云原生开发模式从容器内微服务开始,不仅可以加快开发速度,同时能够更轻松地转换和优化现有应用。
使用 Kubernetes 进行应用开发
生产应用跨越多个容器,而这些容器必须部署到多个服务器主机上。Kubernetes 可以提供所需的编排和管理功能,以便您针对这些工作负载大规模部署容器。
借助 Kubernetes 编排功能,您可以构建跨多个容器的应用服务、跨集群调度、扩展这些容器,并长期持续管理这些容器的健康状况。有了 Kubernetes,您便可切实采取一些措施来提高 IT 安全性。
Kubernetes 还需要与联网、存储、安全性、遥测和其他服务整合,以提供全面的容器基础架构。
一旦把它扩展到生产环境和多个应用,您显然需要许多托管在相同位置的容器来协同提供各种服务。
Linux 容器可为基于微服务的应用提供理想的应用部署单元和独立的执行环境。通过将微服务放入容器,就能更加轻松地编排各种服务(包括存储、网络和安全防护)。
随着这些容器的累积,环境中容器的数量会急剧增加,复杂度也随之增长。
Kubernetes 通过将容器分类组成 “容器集”,解决了容器激增带来的许多常见问题。容器集为分组容器增加了一个抽象层,可帮助您调度工作负载,并为这些容器提供所需的服务,如联网和存储等。
Kubernetes 的其他部分可帮助您在这些容器集之间平衡负载,同时确保运行正确数量的容器,充分支持您的工作负载。
如果能正确实施 Kubernetes,再辅以其他开源项目(例如 Open vSwitch、OAuth 和 SELinux),您就能够轻松编排容器基础架构的各个部分。
Kubernetes 与红帽
Kubernetes 是开源的,因此没有正式的技术支持结构与之相关,至少没有您的业务能够信赖的支持。如果在生产环境中运行时 Kubernetes 出现实施问题,您一定会感到非常担心,您的客户同样也会担心。
可以将 Kubernetes 比作汽车发动机。发动机可以单独运转,但当与变速箱、车轴和车轮组合在一起时,它就变成了一辆能行驶的汽车的一部分。只是安装 Kubernetes 还不能得到一个生产级平台。Kubernetes 需要其他组件才能发挥完整功用。您需要添加身份验证、网络、安全防护、监控、日志管理以及其他工具。于是,红帽 OpenShift 应运而生,它是一台完整的汽车。
红帽 OpenShift 是企业级的 Kubernetes。它汇集了所有相关的先进技术,旨在将 Kubernetes 打造成为可供企业使用的强大平台,这些技术包括:镜像仓库、联网、遥测、安全防护、自动化和服务。红帽 OpenShift 包含 Kubernetes 作为该平台的一个核心组件,它也是经过 CNCF 认证的 Kubernetes 产品。
借助红帽 OpenShift 容器平台的可扩展性以及控制和编排功能,开发人员可以构建新的容器化应用、对其进行托管并在云端加以部署,从而轻松快速地将各种奇思妙想转变为新业务。如果您想要将 Kubernetes 工作负载部署或迁移到托管云服务,OpenShift 也可以用作 Amazon Web Services(AWS)、微软 Azure、Google Cloud、IBM Cloud 和其他提供商上的云原生 Kubernetes 平台。
在 OpenShift 的基础上构建,您可以结合使用红帽高级集群管理和红帽 Ansible® 自动化平台,跨区域(包括公有云、本地和边缘环境)高效部署和管理多个 Kubernetes 集群。
用例:构建云平台,拥抱银行业创新
Emirates NBD 是阿拉伯联合酋长国(UAE)最大的银行之一,需要一个可扩展、有弹性的基础来实施数字化转型。该银行一直饱受置备速度缓慢、IT 环境复杂之苦。设置一台服务器可能耗费 2 个月,而更改大型单体式应用更是需要 6 个月以上。
该银行利用红帽 OpenShift 容器平台进行容器编排、集成和管理,创造了中东地区第一个由银行大规模运行的私有云:Sahab。Sahab 通过“即服务”模式提供端对端开发所需的应用、系统和其他资源,囊括从置备到生产的整个过程。
借助全新的平台,Emirates NBD 利用应用编程接口(API)和微服务改进了内部团队之间以及与合作伙伴的协作情况。此外,该银行通过采用敏捷方法和 DevOps 开发实践,缩短了应用的发布和更新周期。
巧“容”万象,赋能利“器”。