10 分钟了解 Kubernetes

Kubernetes 是如何诞生的

容器的要点

以前,容器是部署应用程序的最佳概念。它为开发和维护软件提供了新的视野。使用容器,软件开发人员可以轻松打包应用程序,包括库和其他依赖项等组件。它可以将包作为一个整体进行传送,而不需要传统的虚拟机。 

当计算世界变得分布式、更加基于网络并且更加依赖云计算时,单体应用程序迁移到微服务。这些微服务使用户能够单独扩展关键功能,并有能力处理数百万客户。最重要的是,Docker Container、Mesos 和 AWS ECS 等工具出现在企业中,为用户部署微服务创建了一致、可移植且简单的方法。

但是,一旦应用程序变得成熟和复杂,就需要在多台机器上运行多个容器。您需要弄清楚哪些是正确的容器,当然,它们如何在正确的时间相互通信,解决大型存储需求,并处理出现故障的容器。手动完成这一切可能是一场噩梦!

于是,为了解决容器化应用的编排需求,Kubernetes应运而生。

Kubernetes 历史:快速概述

当 Docker 在管理微服务和容器方面继续蓬勃发展时,容器管理系统成为首要需求。在那段时间,谷歌已经运行基于容器的管理基础设施多年,在那个时代,该公司做出了一个大胆的决定,开源一个名为 Borg 的内部项目。Borg 是运行 Gmail 和 Google 搜索等 Google 服务的关键。为了增强容器管理系统的功能,该公司提出了 Kubernetes——一个开源项目,可以自动化大规模部署和管理多容器应用程序的过程。Kubernetes 于 2014 年中期诞生,并在短时间内发展成为开源社区,来自 Google、Red Hat 和许多其他公司的工程师都为该项目做出了贡献。

什么是 Kubernetes?

Kubernetes 是一个开源容器管理系统,用于多个垂直行业的大型企业来执行关键任务。它的一些功能包括:

  • 管理容器集群

  • 提供用于部署应用程序的工具

  • 根据需要扩展应用程序

  • 管理对现有容器化应用程序的更改

  • 帮助优化容器下底层硬件的使用

  • 使应用程序组件能够根据需要重新启动并在系统中移动

Kubernetes 提供了超出基本框架的更多功能,使用户能够选择应用程序框架的类型、语言、监控和日志记录工具以及他们选择的其他工具。虽然它不是平台即服务,但它可以作为完整 PaaS 的基础。

几年之内,它已成为一种非常流行的工具,也是开源平台上最成功的案例之一。

Kubernetes 架构:它是如何工作的
 

图片标题

Kubernetes 的主从架构及其组件:

  • Kubernetes Master:
    它是管理整个系统的工作负载和通信的主要控制单元。它的每个组件都有一个不同的进程,可以在单个主节点或多个主节点上运行。其组成部分是:

    • Etcd Storage:是CoreOS团队开发的开源键值数据存储,可以被集群中的所有节点访问。Kubernetes 使用“Etcd”来存储集群的配置数据,以随时表示集群的整体状态。

    • API-Server:API服务器是接收REST修改请求的中央管理实体,作为控制集群的前端。而且,这是唯一与 Etcd 集群通信的东西,确保数据存储在 Etcd 中。

    • 调度器: 它帮助根据资源利用率来调度各个节点上的 Pod,并决定在哪里部署哪些服务。调度程序具有有关成员可用的资源的信息以及用于配置要运行的服务的剩余资源的信息。

    • 控制器管理器: 它在后台运行许多不同的控制器进程来调节集群的共享状态并执行例行任务。当服务发生任何变化时,控制器会发现变化并开始朝着新的所需状态努力。

  • Worker Node:
    这也称为 Kubernetes 或 Minion 节点,它包含管理 Docker 等容器之间的网络以及主节点之间的通信的信息,如按计划将资源分配给容器

    • Kubelet:  Kubelet 确保节点中的所有容器都在运行且处于健康状态。Kubelet 会监视 pod 的状态(如果它未处于所需状态)。如果节点发生故障,复制控制器会观察到此更改并在另一个运行状况良好的 Pod 上启动 Pod。

    • 容器:容器是最底层的微服务,放置在 Pod 内部,需要外部 IP 地址才能查看外部进程。

    • Kube Proxy:它充当网络代理和负载均衡器。此外,它还会将请求转发到集群中隔离网络上的正确 Pod。

    • cAdvisor:充当助手,负责监控和收集有关每个节点上的资源使用情况和性能指标的数据。

库伯内特斯的优势

便携且开源

Kubernetes 可以在一个或多个公共云环境、虚拟机或裸机上运行容器,这意味着它可以部署在任何基础设施上。此外,它还兼容多个平台,使多云策略具有高度的灵活性和可用性。

工作负载可扩展性

Kubernetes 提供了一些用于扩展目的的有用功能:

  • 基础设施水平扩展:操作在单个服务器级别完成,以实现水平扩展。可以轻松添加或删除新服务器。

  • 自动缩放:根据CPU资源的使用情况或其他应用程序指标,您可以修改正在运行的容器的数量。

  • 手动伸缩:您可以通过命令或界面手动伸缩正在运行的容器数量。

  • 复制控制器:复制控制器确保集群具有指定数量的等效 Pod 处于运行状态。如果 pod 太多,复制控制器可以删除多余的 pod,反之亦然。

高可用性 

Kubernetes 可以处理应用程序和基础设施的可用性。它解决:

  • 健康检查:Kubernetes 通过不断检查模式和容器的健康状况来确保应用程序不会失败。如果 pod 由于错误而崩溃,Kubernetes 提供自我修复和自动替换功能。

  • 流量路由和负载均衡:Kubernetes 负载均衡器将负载分布在多个负载之间,使您能够在偶发流量或批处理过程中快速平衡资源。

专为部署而设计:

容器化能够加快构建、测试和发布软件的过程,有用的功能包括:

  • 自动推出和回滚: Kubernetes 在不停机的情况下处理应用程序的新版本和更新,同时还在推出期间监控运行状况。如果过程中出现任何故障,会自动回滚。

  • 金丝雀部署:Kubernetes 并行测试新部署和先前版本的生产,即在扩大新部署并同时缩小先前部署之前。

  • 编程语言和框架支持: Kubernetes支持大多数编程语言和框架,如Java、.NET等,并且也得到了开发社区的大力支持。如果应用程序能够在容器中运行,那么它也可以在 Kubernetes 中运行。

还有一些需要寻找的东西

Kubernetes 提供 DNS 管理、资源监控、日志记录、存储编排,并将安全性作为首要任务之一。例如,它确保密码或 ssh 密钥等信息安全地存储在 Kubernetes 机密中。新功能不断发布,可以在 Kubernetes GitHub 上找到。

Kubernetes 和有状态容器

Kubernetes StatefulSets 提供卷、稳定网络 ID 和从 0 到 N 的序数索引等资源来处理有状态容器。卷是支持运行有状态应用程序的关键功能之一。支持的两种主要卷类型是:-

  • 临时存储卷:
    临时数据存储与 Docker 不同。在 Kubernetes 中,卷会考虑在 pod 内运行的任何容器,并且数据存储在容器中。但是,如果 Pod 被杀死,该卷将自动删除。

  • 持久存储:
    数据在整个生命周期内保留。当 Pod 死亡或移动到另一个节点时,该数据仍将保留,直到被用户删除。因此,数据是远程存储的。

Kubernetes:奠定开发云应用程序的支柱

一些容器管理和编排工具(例如 Apache Mesos with Marathon、Docker Swarm 和 AWS EC2 Container Service)提供了出色的功能,但重量却比 Kubernetes 轻。

Docker Swarm 与 Docker 运行时紧密捆绑;因此很容易从 Docker 转移到 Swarm,反之亦然。Mesos 与 Marathon 可以部署任何类型的应用程序,而不仅限于容器。当前 AWS 用户可以轻松访问 AWS ECS。

随着这个框架变得成熟,他们开始在特性和功能方面与其他工具进行复制。但是,Kubernetes 是独一无二的,并且由于其架构、创新和大型开源社区而将继续流行。

Kubernetes 使团队能够跟上软件开发的要求,为 DevOps 铺平了道路。如果没有 Kubernetes,软件开发团队需要编写自己的软件部署脚本、手动扩展并更新工作流程。在大型企业中,有一个庞大的团队单独处理这项任务。Kubernetes 有助于充分利用容器的实用性,并能够开发云应用程序,而不管特定于云的要求如何。

除此之外,企业正在使用 Kubernetes,因为它可以部署在公有云环境之一的公司现有数据中心中,甚至可以作为服务运行。由于 Kubernetes 抽象了底层基础设施层,因此开发人员可以专注于开发应用程序,然后将它们部署到任何这些环境中。这增加了公司对 Kubernetes 的采用,因为它可以在本地运行,同时继续构建任何云策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wouderw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值