K8s 入门:Kubernetes 基础知识盘点

复制 URL

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

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

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

什么是企业级 Kubernetes?

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

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

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

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

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

开始学习容器和 Kubernetes

红帽资源

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

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

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

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

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

了解 Kubernetes 架构中的其他组件

如果您已准备好自行开始使用 Kubernetes,可以利用 Minikube 这一开源工具来设置本地 Kubernetes 集群,从而在笔记本电脑上就能试用 Kubernetes。

参考有关 Linux 用户运行 Minikube 的指南

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 模式是基于容器的应用和服务的设计模式。

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。

了解有关实施 DevOps 的更多信息

部署容器化应用技术概述

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

进一步了解该培训课程

 

红帽 OpenShift 管理

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

进一步了解该培训课程

了解红帽培训与认证

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

进一步了解该培训课程

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

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

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

免费试用红帽 OpenShift
中心

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业。

扩展阅读

什么是 Kubernetes Java 客户端?

Kubernetes Java 客户端是一个支持使用 Java 编程语言与 Kubernetes 进行接口的客户端库。

AWS 上的 K8s:自助式应用平台与托管式应用平台比较

一文了解 AWS 上 K8s 的功能与优势。使用 AWS 上的 Kubernetes,您可以在开发时灵活地自行配置和管理部署,大规模运行应用,添加新功能, 无缝迁移应用, 随时随地运行。

什么是托管控制平面?

使较小的节点能够运行控制平面,从而降低集群的成本,助力实现真正的混合云,

容器 相关资源

相关文章