登录 / 注册 Account

容器

Kubernetes 基础知识入门

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

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,可以利用 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 来支持 DevOps

DevOps 的关键是在应用的整个生命周期中,确保日常运维任务自动化和环境的标准化。

容器使得开发、交付和自动化能在一个统一环境中进行,也让应用在开发、测试和生产环境中轻松迁移。

持续集成和持续部署管道(CI/CD)是实施 DevOps 的一大重要成果。CI/CD 可帮助您频繁地向客户交付应用并检验软件质量,而且只需极少的人工干预。

利用 Kubernetes 部署和 Operator 并采用 DevOps 方法来管理 Kubernetes 的容器生命周期,能够使软件开发和 IT 运维齐头并行,从而助力 CI/CD 管道的顺畅运行。

 

参加 Kubernetes 培训

部署容器化应用技术概述 

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

 

红帽 OpenShift 管理 

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

 

OpenShift 应用简介

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

 

企业级 Kubernetes 

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

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

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

Kubernetes 入门工具

Red Hat OpenShift product logo

利用企业级 Kubernetes 开发、部署和管理容器——不限位置,不限规模。

使用内置安全策略从单个控制台控制 Kubernetes 集群和应用。 

Kubernetes——从“容”应对,"云"程万里