Kubernetes 入门教程:基础、功能、架构

在开始本 Kubernetes 教程之前,让我们先来了解一下

什么是 Kubernetes?

Kubernetes 是一个在 Google 平台上开发的容器管理系统。Kubernetes 有助于在各种物理、虚拟和云环境中管理容器化应用程序。Google Kubernetes 是一个高度灵活的容器工具,能够跨由数百到数千台独立服务器组成的集群,一致地交付运行复杂的应用程序。

你为什么需要容器?

当今的互联网用户从不容忍停机。因此,开发人员必须找到一种在不中断服务的情况下执行维护和更新的方法。

因此,容器是一个隔离的环境。它包含了运行应用程序所需的一切。这使得开发人员可以轻松地编辑和部署应用程序。此外,容器化已成为打包、部署和更新 Web 应用程序的首选方法。

Kubernetes 执行哪些任务?

Kubernetes 是用于分布式系统的 Linux 内核。它可以帮助您抽象底层硬件节点(服务器),并为使用共享资源池的应用程序提供一致的接口。

为什么使用 Kubernetes?

Kubernetes 帮助您控制云应用程序和微服务的资源分配和流量管理。它还有助于简化面向服务的基础设施的各个方面。Kubernetes 允许您确保容器化应用程序在何处以及何时运行,并帮助您找到要使用的资源和工具。

Kubernetes 的特性

以下是必不可少的 Kubernetes 功能

  • 自动化调度
  • 自我修复能力
  • 自动化发布与回滚
  • 水平扩展与负载均衡
  • 为开发、测试和生产环境提供一致性
  • 基础设施与各个组件松散耦合,可作为独立单元
  • 提供更高的资源利用率
  • 提供企业级功能
  • 以应用为中心进行管理
  • 自动扩展的基础设施
  • 您可以创建可预测的基础设施

Kubernetes 基础知识

现在,在本 Kubernetes 教程中,我们将学习一些重要的 Kubernetes 基础知识

  • 集群

    它是一组主机(服务器),有助于聚合其可用资源。这包括 RAM、CPU、RAM、磁盘及其设备,并将其组成一个可用的池。

  • Master

    Master 是一个由组件组成的集合,它们构成了 Kubernetes 的控制面板。这些组件用于所有的集群决策。它包括调度和响应集群事件。

  • 节点

    它是一台可以运行在物理或虚拟机上的主机。节点应同时运行 kube-proxy、minikube 和 kubelet,这些都被视为集群的一部分。

  • Namespace

    它是一个逻辑集群或环境。它是一种广泛使用的方法,用于界定访问范围或划分集群。

Kubernetes 架构

下面是一个详细的 Kubernetes 架构图

Kubernetes Architecture Diagram
Kubernetes 架构图

Master 节点

Master 节点是第一个也是最重要的组件,负责管理 Kubernetes 集群。它是所有管理任务的入口点。集群中可能有多个 master 节点以实现容错。

Master 节点有 API Server、Controller Manager、Scheduler 和 ETCD 等各种组件。让我们逐一了解它们。

API Server:API 服务器是所有用于控制集群的 REST 命令的入口点。

Scheduler

调度器将任务调度到从节点。它存储每个从节点的资源使用信息。它负责分发工作负载。

它还帮助您跟踪集群节点上的工作负载使用情况。它帮助您将工作负载放置在可用且可以接受工作负载的资源上。

Etcd

etcd 组件存储配置详细信息和写入值。它与大多数组件通信以接收命令并执行工作。它还管理网络规则和端口转发活动。

Worker/Slave 节点

Worker 节点是另一个重要组件,它包含管理容器之间网络连接、与 master 节点通信所需的所有服务,允许您为计划的容器分配资源。

  • Kubelet:从 API 服务器获取 Pod 的配置,并确保描述的容器正常运行。
  • Docker Container:Docker 容器在每个 worker 节点上运行,负责运行配置的 Pod。
  • Kube-proxy:Kube-proxy 作为负载均衡器和网络代理,在单个 worker 节点上执行服务。
  • Pods:Pod 是一个或多个容器的组合,它们在节点上逻辑上一起运行。

其他关键术语

Replication Controllers

Replication Controller 是一个定义 Pod 模板的对象。它还控制参数,通过增加或减少运行副本的数量来水平扩展相同的 Pod 副本。

Replication Sets

Replication Sets 是对 Replication Controller 设计的改进,在控制器如何识别其应管理的 Pod 方面具有灵活性。由于其更高的副本选择能力,它取代了 Replication Controllers。

Deployments

Deployment 是可以直接创建和管理的常见工作负载。Deployment 使用 Replication Set 作为构建块,增加了生命周期管理的功能。

Stateful Sets

它是一种专门的 Pod 控制器,提供顺序和唯一性。它主要用于精细控制,当你对部署顺序、稳定网络和持久数据有特定需求时。

Daemon Sets

Daemon Sets 是另一种专门的 Pod 控制器形式,它在集群的每个节点上运行一个 Pod 副本。这种类型的 Pod 控制器是部署 Pod 的有效方法,允许您执行维护并为节点本身提供服务。

Kubernetes 与 Docker Swarm 对比

以下是Kubernetes 与 Docker 的重要区别。

参数 Docker Swarm Kubernetes
扩展性 无自动扩展 自动扩展
负载均衡 自动进行负载均衡 手动配置您的负载均衡设置
存储卷共享 与任何其他容器共享存储卷 在同一 Pod 内的多个容器之间共享存储卷
日志和监控工具的使用 使用 ELK 等第三方工具 提供内置的日志和监控工具。
安装 简单快捷 复杂且耗时
GUI 无 GUI 有 GUI
可扩展性 扩展速度比 K8S 快,但集群强度不如 K8S 稳健 扩展速度比 Swarm 慢,但保证了更强的集群状态。负载均衡需要手动配置服务。
负载均衡 提供内置的负载均衡技术 在更新期间用于维护服务的进程调度
更新与回滚、数据卷、日志与监控 渐进式更新和服务健康监控。 仅与同一 Pod 内的容器共享。内置日志和监控工具。

Kubernetes 的优点

  • 通过 Pod 轻松组织服务
  • 由 Google 开发,带来了多年的宝贵行业经验
  • 在容器编排工具中拥有最大的社区
  • 提供多种存储选项,包括本地、SAN 和公共云
  • 遵循不可变基础设施的原则
  • Kubernetes 可以在本地裸金属、OpenStack、公共云GoogleAzureAWS 等平台上运行。
  • 它有助于避免供应商锁定问题,因为它可以使用任何供应商特定的 API 或服务,除非 Kubernetes 提供了抽象,例如负载均衡器和存储。
  • 使用 Kubernetes 的容器化允许打包软件来实现这些目标。它允许在不停机的情况下发布和更新应用程序。
  • Kubernetes 允许您确保容器化应用程序在您想要的时间和地点运行,并帮助您找到您想要使用的资源和工具。

Kubernetes 的缺点

  • Kubenetes 的仪表板不如预期有用
  • Kubernetes 有点复杂,在所有开发都在本地完成的环境中是不必要的。
  • 安全性不是非常有效。

摘要

  • 容器帮助组织在不中断服务的情况下执行维护和更新
  • Kubernetes 是在 Google 平台上开发的容器管理系统的一个例子。
  • 使用 Kubernetes 的最大优势在于它可以运行在本地 OpenStack、公共云 Google、Azure、AWS 等平台上。
  • Kubernetes 提供自动化调度和自我修复能力。
  • Cluster、master、node 和 namespace 是 kubernetes 的重要基础。
  • Master 节点和 worker 节点是 Kubernetes 架构的重要组成部分。
  • Replication Controllers、Replication sets、Deployments、Stateful Sets、Daemon Sets 是 Kubernetes 中使用的其他重要术语。
  • Docker swarm 不允许自动扩展,而 Kubernetes 允许自动扩展。
  • Kubenetes 最大的缺点是其仪表板不太有用且无效