Kubernetes 是 Google 开发的开源容器编排工具。您可以使用 Kubernetes 运行和管理基于容器的工作负载。最常见的 Kubernetes 用例是部署一系列相互连接的微服务,以云原生方式构建应用程序。您可以创建跨越本地、公共、私有或混合云的主机的 Kubernetes 集群。
传统上,应用程序部署在单个操作系统之上。使用虚拟化,您可以将物理主机拆分为多个虚拟主机。在共享资源上处理虚拟实例对于效率和可扩展性而言并非最佳选择。由于虚拟机 (VM) 消耗的资源与物理机一样多,因此提供虚拟机资源(如 CPU、RAM 和存储)可能成本很高。此外,您可能会看到由于在共享资源上使用虚拟实例而导致应用程序性能下降。
为了解决这个问题,您可以使用容器化技术将应用程序隔离在容器化环境中。与虚拟机 (VM) 类似,容器拥有自己的文件系统、虚拟 CPU (vCPU)、内存、进程空间、依赖项等等。容器与底层基础设施解耦,可在不同的云和操作系统发行版之间移植。容器本身比功能齐全的操作系统轻得多,是运行在操作系统内核上的轻量级隔离进程。虚拟机的启动速度较慢,是对物理硬件的抽象。虚拟机借助虚拟机管理程序 (hypervisor) 在单台机器上运行。
您可以使用 Kubernetes 执行以下操作:
共享资源
跨多个主机编排容器
安装新的硬件配置
运行健康检查和自愈应用程序
扩展容器化应用程序
组件 | 用途 |
---|---|
|
运行在集群中的每个节点上,维护 Kubernetes 资源之间的网络流量。 |
|
管理集群的状态。 |
|
将 Pod 分配到节点。 |
|
存储集群数据。 |
|
验证和配置 API 对象的数据。 |
|
运行在节点上,读取容器清单。确保已定义的容器已启动并正在运行。 |
|
允许您定义希望如何运行工作负载。使用 |
节点 (Node) |
节点是 Kubernetes 集群中的物理机或虚拟机。控制平面管理每个节点,并在 Kubernetes 集群中的节点之间调度 Pod。 |
容器运行时 (container runtime) |
容器运行时在主机操作系统上运行容器。必须在每个节点上安装容器运行时,以便 Pod 可以在节点上运行。 |
持久化存储 (Persistent storage) |
即使设备关闭后也能存储数据。Kubernetes 使用持久卷来存储应用程序数据。 |
|
存储和访问容器镜像。 |
Pod |
Pod 是 Kubernetes 中最小的逻辑单元。一个 Pod 包含一个或多个在工作节点上运行的容器。 |
自定义资源是 Kubernetes API 的扩展。您可以使用自定义资源来自定义 Kubernetes 集群。Operators 是软件扩展,它们借助自定义资源来管理应用程序及其组件。当您希望在处理集群资源时获得固定的预期结果时,Kubernetes 使用声明性模型。通过使用 Operators,Kubernetes 以声明的方式定义其状态。您可以使用命令式命令修改 Kubernetes 集群资源。Operator 充当控制循环,持续比较资源的期望状态与资源的实际状态,并采取措施使实际状态与期望状态一致。
资源 | 用途 |
---|---|
服务 (Service) |
Kubernetes 使用服务来公开一组 Pod 上运行的应用程序。 |
|
Kubernetes 使用 |
部署 (Deployment) |
维护应用程序生命周期的资源对象。 |
Kubernetes 是 OpenShift Container Platform 的核心组件。您可以使用 OpenShift Container Platform 来开发和运行容器化应用程序。凭借其 Kubernetes 基础,OpenShift Container Platform 集成了与大型电信、流媒体视频、游戏、银行和其他应用程序相同的技术。您可以使用 OpenShift Container Platform 将容器化应用程序扩展到单个云之外,扩展到本地和多云环境。
集群是在云环境中由多个节点组成的单个计算单元。Kubernetes 集群包括控制平面和工作节点。您可以在各种机器和环境中运行 Kubernetes 容器。控制平面节点控制和维护集群的状态。您可以使用工作节点运行 Kubernetes 应用程序。您可以使用 Kubernetes 命名空间来区分集群中的集群资源。命名空间范围适用于资源对象,例如部署、服务和 Pod。您不能将命名空间用于集群范围的资源对象,例如存储类、节点和持久卷。
在开始使用 OpenShift Container Platform 之前,请考虑这些 Kubernetes 的概念指南:
从一个或多个工作节点开始运行容器工作负载。
从一个或多个控制平面节点管理这些工作负载的部署。
将容器打包到称为 Pod 的部署单元中。使用 Pod 可以为容器提供额外的元数据,并提供将多个容器分组到单个部署实体中的能力。
创建特殊类型的资源。例如,服务由一组 Pod 和定义其访问方式的策略表示。此策略允许容器连接到它们所需的服务器,即使它们没有服务器的特定 IP 地址也是如此。复制控制器是另一种特殊资源,它指示一次需要运行多少个 Pod 副本。您可以使用此功能自动扩展应用程序以适应其当前需求。
OpenShift Container Platform 集群的 API 完全兼容 Kubernetes。在任何其他 Kubernetes 上运行的容器与在 OpenShift Container Platform 上运行的容器之间没有任何区别。应用程序无需更改。OpenShift Container Platform 提供增值功能,为 Kubernetes 提供企业级增强功能。OpenShift Container Platform CLI 工具 (oc
) 与kubectl
兼容。虽然 Kubernetes API 在 OpenShift Container Platform 中完全可访问,但kubectl
命令行缺少许多可以使其更易于使用的功能。OpenShift Container Platform 提供了一组功能和命令行工具,例如oc
。虽然 Kubernetes 擅长管理您的应用程序,但它没有指定或管理平台级需求或部署流程。强大的灵活的平台管理工具和流程是 OpenShift Container Platform 提供的重要优势。您必须向容器化平台添加身份验证、网络、安全、监控和日志管理。