Kubernetes 教程

2025年3月8日 | 阅读时长:7 分钟
Kubernetes Tutorial

什么是 Kubernetes?

Kubernetes 也被称为 'k8s'。这个词源于希腊语,意思是 飞行员舵手
Kubernetes 是一个可扩展、可移植的开源平台,由 Google2014 年设计。 它主要用于自动化跨节点集群的基于容器的应用程序的部署、扩展和操作。它还旨在通过不同的方法管理容器化应用程序的服务,从而提供可扩展性、可预测性和高可用性。

它实际上是“Borg”的增强版本,用于管理长时间运行的进程和批量作业。 如今,许多云服务提供基于 Kubernetes 的基础设施,可以在其上部署为平台提供服务。 这种技术或概念适用于许多容器工具,如 docker,并遵循客户端-服务器架构。

Kubernetes 的关键对象

以下是 Kubernetes 中存在的关键对象

Pod(容器组)

它是 Kubernetes 应用程序的最小和最简单的基本单元。 此对象指示在集群中运行的进程。

节点

节点(node) 只是一个主机,用于运行虚拟或物理机。 Kubernetes 集群中的节点也称为 minion(工作节点)。

服务

Kubernetes 中的 服务(service) 是一组逻辑上相关的 Pod,它们协同工作。借助服务,用户可以轻松地管理负载均衡配置。

ReplicaSet(副本集)

Kubernetes 中的 ReplicaSet 用于标识在给定时间运行的特定数量的 Pod 副本。 它取代了复制控制器,因为它更强大,并允许用户使用“基于集合”的标签选择器。

命名空间

Kubernetes 支持各种虚拟集群,称为命名空间(namespaces)。 这是一种在两个或多个用户之间划分集群资源的方法。

Kubernetes 的特性

以下是 Kubernetes 的基本特性

Kubernetes Tutorial
  1. Pod: 它是 Kubernetes 中的部署单元,具有单个 Internet 协议地址。
  2. 水平扩展: 它是 Kubernetes 中的一项重要特性。此特性使用 HorizontalPodAutoscalar,根据观察到的 CPU 利用率自动增加或减少部署、复制控制器、副本集或有状态集中的 Pod 数量。
  3. 自动装箱(Automatic Bin Packing): Kubernetes 帮助用户声明其容器计算机的最大和最小资源。
  4. 服务发现和负载均衡: Kubernetes 为一组容器分配 IP 地址和 DNS 名称,并在它们之间平衡负载。
  5. 自动化发布和回滚: 使用发布,Kubernetes 将更改和更新分发到应用程序或其配置。 如果系统出现任何问题,此技术会立即为您回滚这些更改。
  6. 持久存储: Kubernetes 提供了一个名为“持久存储”的重要特性,用于存储在 Pod 被杀死或重新调度后不会丢失的数据。 Kubernetes 支持各种存储系统来存储数据,例如 Google Compute Engine 的 Persistent Disks (GCE PD) 或 Amazon Elastic Block Storage (EBS)。 它还提供分布式文件系统:NFS 或 GFS
  7. 自愈: 此特性在 Kubernetes 的概念中起着重要作用。 对于执行过程中失败的容器,Kubernetes 会自动重启它们。 并且,对于那些不回复用户定义的健康检查的容器,它会自动停止它们的工作。

Kubernetes 架构

Kubernetes Tutorial

Kubernetes 的架构实际上遵循客户端-服务器架构。 它由以下两个主要组件组成

  1. 主节点(控制平面)
  2. 从节点/工作节点

主节点或 Kubernetes 控制平面

Kubernetes 架构中的主节点用于管理集群的状态。 它实际上是所有类型管理任务的入口点。 在 Kubernetes 集群中,存在多个主节点来检查容错能力。

以下是主节点或 Kubernetes 控制平面中存在的四个不同组件

  1. API 服务器
  2. 调度器
  3. 控制器管理器
  4. ETCD

API 服务器

Kubernetes API 服务器接收用户发送的 REST 命令。 接收后,它验证 REST 请求、处理,然后执行它们。 执行 REST 命令后,集群的结果状态将保存在“etcd”中,作为分布式键值存储。

调度器

主节点中的调度器将任务调度到工作节点。 并且,对于每个工作节点,它用于存储资源使用信息。
换句话说,它是一个负责将 Pod 分配给可用工作节点的过程。

控制器管理器

控制器管理器也称为控制器。 它是一个在非终止控制循环中执行的守护进程。 主节点中的控制器执行任务并管理集群的状态。 在 Kubernetes 中,控制器管理器执行各种类型的控制器来处理节点、端点等。

ETCD

它是一个开源、简单、分布式的键值存储,用于存储集群数据。 它是用 GO 编程语言编写的主节点的一部分。

现在,我们已经了解了主节点的功能和组件; 让我们看看从节点/工作节点的功能以及它的组件是什么。

工作/从节点

Kubernetes 中的工作节点也称为 minion。 工作节点是一台物理机器,它使用 Pod 执行应用程序。 它包含所有必要的服务,这些服务允许用户将资源分配给调度的容器。

以下是工作节点或从节点中存在的不同组件

Kubelet

此组件是一个代理服务,在集群中的每个工作节点上执行。 它确保 Pod 及其容器平稳运行。 每个工作节点中的每个 kubelet 都与主节点通信。 它还启动、停止和维护由主节点直接组织到 Pod 中的容器。

Kube-proxy

它是 Kubernetes 的代理服务,它只是在集群中的每个工作节点上执行。 此组件的主要目的是请求转发。 每个节点都通过 Kube-proxy 与 Kubernetes 服务交互。

Pod(容器组)

Pod 是一个或多个容器的组合,它们在节点上以逻辑方式一起执行。 一个工作节点可以轻松地执行多个 Pod。

在 Linux 上安装 Kubernetes

在 Linux 上安装 Kubernetes 是一个简单的过程。 请按照以下步骤安装 Kubernetes。 在 Kubernetes 的安装中,每个步骤都是强制性的。

步骤 1: 在此步骤中,我们必须使用两个命令更新系统的必要依赖项。

第一个命令用于获取所有更新。 在终端中执行以下命令; 它将要求输入系统的密码。

输出

Kubernetes Tutorial

成功执行第一个命令后,键入以下第二个命令,该命令用于创建存储库。

输出

Kubernetes Tutorial

步骤 2: 成功执行上述步骤后,我们必须在此步骤中安装 docker 的依赖项。

键入以下命令以安装 docker。 在安装过程中,我们必须选择 Y 以确认安装。

输出

Kubernetes Tutorial

安装 docker 后,我们必须键入不同的两个命令来启动和启用 docker。 键入以下第一个命令,该命令启动 docker

现在,键入以下第二个命令,该命令启用 docker

输出

Kubernetes Tutorial

现在,我们可以通过键入以下命令来检查 docker 的版本

输出

Kubernetes Tutorial

步骤 3: 成功执行第二步的所有命令后,我们必须安装 curl 命令。 curl 用于使用 URL 语法发送数据。

现在,使用以下命令安装 curl。 在安装中,我们必须键入 Y。

输出

Kubernetes Tutorial

现在,我们必须通过以下命令下载 Kubernetes 的 add package key

输出

Kubernetes Tutorial

如果从上面的命令中收到错误,则意味着您的 curl 命令未成功安装,因此请首先安装 curl 命令,然后再次运行上面的命令。

现在,我们必须通过以下命令添加 Kubernetes 存储库

输出

Kubernetes Tutorial

成功执行上述命令后,我们必须通过执行以下命令来检查任何更新

输出

Kubernetes Tutorial

步骤 4: 在上述步骤中执行上述命令后,我们必须通过执行以下命令来安装 Kubernetes 的组件

输出

Kubernetes Tutorial

步骤 5: 完成以上安装后,我们必须通过执行以下命令来初始化 kubeadm。 以下命令禁用其他设备上的交换

输出

Kubernetes Tutorial

现在,我们必须通过执行以下命令来初始化 kubeadm

输出

Kubernetes Tutorial

步骤 6: 成功执行上述命令后,我们必须运行以下命令,这些命令在 kubeadm 的初始化中给出。 这些命令显示在上面的屏幕截图中。 以下命令用于启动集群


Kubernetes Tutorial
Kubernetes Tutorial

输出

步骤 7: 在此步骤中,我们必须使用以下命令部署路径

输出

Kubernetes Tutorial

步骤 8: 执行完以上命令后,我们需要运行以下命令来验证安装是否成功

输出

Kubernetes Tutorial

如果输出显示如以上截图中所示,则表示 Kubernetes 已成功安装在我们的系统上。