Jump to section

K8s 入门:Kubernetes 基础知识盘点

复制 URL

容器可以让开发人员全心投入应用开发,让运维团队专注于基础架构维护——容器编排就是在整个企业内管理这些部署的方式。

Kubernetes 是一个开源的容器编排平台,可以自动完成在部署、管理和扩展容器化应用过程中涉及的许多手动操作。

Kubernetes 可以帮助您在不同环境中大规模交付和管理容器化应用、传统应用和云原生应用,以及重构成微服务的应用,这些环境包括私有云以及 Amazon Web Services(AWS)Google CloudIBM CloudMicrosoft Azure 等主流公共云提供商

Kubernetes 可为您提供一个便捷有效的平台,让您可以在物理机或虚拟机集群上调用和运行容器。Kubernetes 架构将集群分为不同的组件,这些组件会协同工作来维护集群的预期状态。

Kubernetes 集群是一组用于运行容器化应用的节点计算机。您可以将 Kubernetes 集群可视化为两个部分:控制平面与计算设备(或称为节点)。每个节点都是其自己的 Linux® 环境,可以是物理机也可以是虚拟机。每个节点都运行由若干容器组成的容器集。

Kubernetes API(应用编程接口) 是 Kubernetes 控制平面的前端,也是用户与其 Kubernetes 集群进行交互的途径。API 服务器会确定请求是否有效,然后对其进行处理。

Kubernetes API 是用于管理、创建和配置 Kubernetes 集群的接口。用户、外部组件和集群中的各个部分就是通过它来相互通信的。

这份 Kubernetes 快速教程将为您演示如何创建集群和部署应用。

节点(Node):
这些设备负责执行由控制平面分配的请求任务。

容器集(Pod):
部署到单个节点上且包含一个或多个容器的容器组。容器集是最小、最简单的 Kubernetes 对象。

服务(Service):
一种将一组容器集上运行的应用开放为网络服务的方法。它会把工作定义与容器集分离。

Kubectl:
可用于管理 Kubernetes 集群的命令行界面。学习适合新手的基本 kubectl 和 Helm 命令。

kubelet:
位于各个节点内的小应用,用于和控制平面通信。Kublet 可确保容器在容器集内运行。

如果您已准备好自行开始使用 Kubernetes,可以利用 Minikube 这一开源工具来设置本地 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 中的一个资源对象,可以对应用进行声明性更新。

部署(Deployment)允许您描述应用的生命周期,比如应用使用的镜像、容器集数量,以及容器集更新方式。

手动更新容器化应用的过程耗时而繁琐。而 Kubernetes 部署可让这一过程自动化并且可重复。

部署完全由 Kubernetes 后端管理,并且整个更新过程在服务器端执行,无需客户端干预。

Kubernetes 部署对象允许您:

  • 部署副本集或容器集
  • 更新容器集和副本集
  • 回滚到以前的部署版本
  • 扩展部署
  • 暂停或继续部署

Kubernetes 模式是基于容器的应用和服务的设计模式。

Kubernetes 可以帮助开发人员编写云原生应用,并且可以提供一个应用编程接口(API)库以及用来构建应用的工具。

但是,Kubernetes 并没有为开发人员和架构师提供指导,告知其如何使用这些内容来构建满足业务需求和目标的完整系统。

模式能够让您重新利用系统架构。您可以直接使用现有的 Kubernetes 模式,不再需要完全自行创建架构,同时还能确保一切按预期的方式运行。

模式是 Kubernetes 开发人员的必备工具,它们会告诉您如何构建系统。

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。

部署容器化应用技术概述

这一系列的点播课程和深度演示介绍了如何使用 Docker、Kubernetes 和红帽® OpenShift® 容器平台来掌握 Linux 容器和容器编排技术。

 

红帽 OpenShift 管理

这一课程教您如何安装并管理红帽 OpenShift® 容器平台。这门以实操练习为主的课程将向您演示如何安装、配置和管理 OpenShift 集群,并部署示例应用,使您进一步了解开发人员会如何使用此平台。

这一课程主要面向开发人员介绍红帽 OpenShift 应用构建、部署、扩展和故障排除。随着 OpenShift 和 Kubernetes 的应用日渐广泛,开发人员越来越需要了解如何运用容器化的应用平台来开发、构建和部署应用

红帽 OpenShift 是企业级的 Kubernetes。它汇集了所有相关的先进技术,旨在将 Kubernetes 打造成为可供企业使用的强大平台,这些技术包括:注册表、联网、遥测、安全性、自动化和服务。

借助红帽 OpenShift 的可扩展性以及控制和编排功能,开发人员可以构建新的容器化应用、对其进行托管并在云端加以部署,从而轻松快速地将各种奇思妙想转变为新业务。

您可以利用 60 天免费试用期,尝试用红帽 OpenShift 来自动化您的容器运维。

继续阅读

文章

容器与虚拟机

Linux 容器和虚拟机(VM)都是封装型计算环境,里面组合了各种 IT 组件并独立于系统的其余部分。

文章

什么是容器编排?

容器编排是指自动化容器的部署、管理、扩展和联网。

文章

什么是 Linux 容器?

Linux 容器是与系统隔离开的一系列进程,它从单独的镜像运行,并由该镜像提供支持进程所需的全部文件。

详细了解容器

产品

企业级应用平台,包含一系列久经测试的服务,可在您选择的基础架构上将应用推向市场。

相关资源

培训

免费培训课程

"通过红帽来运行容器"技术概述

免费培训课程

容器、Kubernetes 和红帽 OpenShift 技术概述

免费培训课程

利用微服务架构开发云原生应用