概述
容器可以让开发人员全心投入应用开发,让运维团队专注于基础架构维护——容器编排就是在整个企业内管理这些部署的方式。
Kubernetes 是一个开源的容器编排平台,可以自动完成在部署、管理和扩展容器化应用过程中涉及的许多手动操作。
Kubernetes 可以帮助您在不同环境中大规模交付和管理容器化应用、传统应用和云原生应用,以及重构成微服务的应用,这些环境包括私有云以及 Amazon Web Services(AWS)、Google Cloud、IBM Cloud 和 Microsoft Azure 等主流公共云提供商。
Kubernetes 集群的其他部分
节点(Node):
这些设备负责执行由控制平面分配的请求任务。
容器集(Pod):
部署到单个节点上且包含一个或多个容器的容器组。容器集是最小、最简单的 Kubernetes 对象。
服务(Service):
一种将一组容器集上运行的应用开放为网络服务的方法。它会把工作定义与容器集分离。
Kubectl:
可用于管理 Kubernetes 集群的命令行界面。学习适合新手的基本 kubectl 和 Helm 命令。
kubelet:
位于各个节点内的小应用,用于和控制平面通信。Kublet 可确保容器在容器集内运行。
如果您已准备好自行开始使用 Kubernetes,可以利用 Minikube 这一开源工具来设置本地 Kubernetes 集群,从而在笔记本电脑上就能试用 Kubernetes。
Kubernetes 是如何运行的?
Kubernetes 基于定义状态和实际状态工作。Kubernetes 对象代表集群的状态,并会告知 Kubernetes 您希望工作负载进入何种状态。
在创建并定义了对象后,Kubernetes 会确保该对象始终存在。
控制器(Controller)主动管理 Kubernetes 对象的状态,并会作出变更,使集群从当前状态转变为所需状态。
开发人员或系统管理员利用提交到 Kubernetes API 的 YAML 或 JSON 文件来指定定义的状态。Kubernetes 使用控制器来分析新定义的状态和集群中实际状态之间的差别。
Kubernetes 集群的预期状态定义了应运行哪些应用或其他工作负载、应使用哪些容器镜像、应提供哪些资源,以及其他配置详情。
配置数据以及有关集群状态的信息位于 etcd(一个键值存储数据库)中。etcd 采用分布式、容错设计,被视为集群的最终事实来源。
Kubernetes 会自动管理您的集群,以匹配预期状态。为此,控制器通常发送消息到 API 服务器以产生所需的更改,一些 Kubernetes 资源还有内置的控制器。
我们举个例子来说明 Kubernetes 如何管理预期状态。假设您要部署一个预期状态为"3"的应用,这意味着要运行该应用的 3 个副本。
如果这些容器中有 1 个发生崩溃,Kubernetes 副本集就会看到只有 2 个副本在运行,所以它会再添加 1 个副本以满足预期状态。
副本集是一种控制器,可确保在特定时间运行指定数量的容器集。
Kubernetes 部署是管理副本集的首选方式,可以向容器集提供声明性更新,因此您不必自己来手动管理它们。
您也可以使用 Kubernetes 中的自动扩展功能,来基于用户需求管理服务的扩展。在指定应用或服务的预期状态时,您还可以让控制器随着需求增加而提供额外的容器集。
例如,在繁忙时段,应用的预期状态可能会增加到 10 个副本,而不是平常的 3 个。
Kubernetes 部署
Kubernetes 部署是 Kubernetes 中的一个资源对象,可以对应用进行声明性更新。
部署(Deployment)允许您描述应用的生命周期,比如应用使用的镜像、容器集数量,以及容器集更新方式。
手动更新容器化应用的过程耗时而繁琐。而 Kubernetes 部署可让这一过程自动化并且可重复。
部署完全由 Kubernetes 后端管理,并且整个更新过程在服务器端执行,无需客户端干预。
Kubernetes 部署对象允许您:
- 部署副本集或容器集
- 更新容器集和副本集
- 回滚到以前的部署版本
- 扩展部署
- 暂停或继续部署
Kubernetes 模式
Kubernetes 模式是基于容器的应用和服务的设计模式。
Kubernetes 可以帮助开发人员编写云原生应用,并且可以提供一个应用编程接口(API)库以及用来构建应用的工具。
但是,Kubernetes 并没有为开发人员和架构师提供指导,告知其如何使用这些内容来构建满足业务需求和目标的完整系统。
模式能够让您重新利用系统架构。您可以直接使用现有的 Kubernetes 模式,不再需要完全自行创建架构,同时还能确保一切按预期的方式运行。
模式是 Kubernetes 开发人员的必备工具,它们会告诉您如何构建系统。
Kubernetes Operator 是什么?
Kubernetes Operator 是一种封装、部署和管理 Kubernetes 应用的方法。我们使用 Kubernetes API 和 kubectl 工具在 Kubernetes 上部署并管理 Kubernetes 应用。
Kubernetes Operator 是一种特定于应用的控制器,可扩展 Kubernetes API 的功能,来代表 Kubernetes 用户创建、配置和管理复杂应用的实例。
了解如何通过使用 Operator SDK 在 10 分钟内构建 Kubernetes Operator。
它基于基本 Kubernetes 资源和控制器概念构建,但又涵盖了特定于域或应用的知识,用于实现其所管理软件的整个生命周期的自动化。
如果您要进一步了解 Kubernetes Operator 及其重要性,请查看这篇通俗易懂的文章。
除了 Kubernetes 中提供的基本自动化功能之外,Operator 还允许您编写代码来实现任务自动化。对于采用 DevOps 或站点可靠性工程(SRE)方法的团队,开发了将 SRE 实践应用到 Kubernetes 的 Operator。
详细了解 Kubernetes Operator 的工作原理(包括实例),以及如何使用 Operator 框架和软件开发套件构建 Operator。
Kubernetes 相关培训课程
部署容器化应用技术概述
这一系列的点播课程和深度演示介绍了如何使用 Docker、Kubernetes 和红帽® OpenShift® 容器平台来掌握 Linux 容器和容器编排技术。
红帽 OpenShift 管理
这一课程教您如何安装并管理红帽 OpenShift® 容器平台。这门以实操练习为主的课程将向您演示如何安装、配置和管理 OpenShift 集群,并部署示例应用,使您进一步了解开发人员会如何使用此平台。
OpenShift 应用简介
这一课程主要面向开发人员介绍红帽 OpenShift 应用构建、部署、扩展和故障排除。随着 OpenShift 和 Kubernetes 的应用日渐广泛,开发人员越来越需要了解如何运用容器化的应用平台来开发、构建和部署应用
企业级 Kubernetes
红帽 OpenShift 是企业级的 Kubernetes。它汇集了所有相关的先进技术,旨在将 Kubernetes 打造成为可供企业使用的强大平台,这些技术包括:注册表、联网、遥测、安全性、自动化和服务。
借助红帽 OpenShift 的可扩展性以及控制和编排功能,开发人员可以构建新的容器化应用、对其进行托管并在云端加以部署,从而轻松快速地将各种奇思妙想转变为新业务。
您可以利用 60 天免费试用期,尝试用红帽 OpenShift 来自动化您的容器运维。