Kubernetes:释放容器化应用程序管理的威力
  nQkVcpdWfLDr 2023年11月02日 39 0

Kubernetes(也称 k8s 或 “kube”)是一种开源的容器编排平台,它可以快速、高效地部署、管理和扩展容器化应用程序。Kubernetes可以自动执行许多手动操作,例如容器的调度、负载均衡、存储管理和自动扩展等,从而使开发人员和运维人员能够更轻松地管理和部署容器化应用程序。Kubernetes还提供了一些高级功能,如服务发现、自动故障恢复和滚动升级等,这些功能可以帮助应用程序更加稳定和可靠地运行。因此,Kubernetes被广泛应用于云计算、大数据、人工智能等领域。如果你在寻找一种简单、高效的容器编排平台来管理你的容器化应用程序,那么Kubernetes是一个非常好的选择。

1.介绍

Kubernetes,它是一个全新的基于容器技术的分布式架构方案,近些年在容器领域使用非常广泛,作为容器化部署实施的典型方案。 看似很新(相对于刚出现时来说),但它却是谷歌十几年以来大规模应用容器技术的经验积累和升华的重要成果。确切地说,Kubernetes是谷歌严格保密十几年的秘密武器——Borg的一个开源版本。Borg是谷歌的一个久负盛名的内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨过个数据中心资源利用率的最大化。十几年以来,谷歌一直通过Borg系统管理者数据庞大的应用程序集群,由于谷歌员工都签署了保密协议,即使离职也不能泄露Borg的内部设计,所以外界一直无法了解关于它的更多信息。直到 2015 年 4 月,传闻许久的Borg论文发布,伴随着Kubernetes的高调宣传被谷歌首次公开,大家才得以了解它的更多内幕。正式由于站在Borg这个前辈的肩膀上,汲取了Borg过去十年间的经验与教训,所以Kubernetes一经开源就一鸣惊人,并迅速称霸容器领域。

Borg就是一个喷气式飞机的驾驶系统,非常的专业和高大上,他适用于谷歌这样的大公司,它有几百万的机器。Kubernetes是一个它的简化版,它是一辆设计优良的轿车,它适合中小型公司,更方便的用它来调度自己的集群。

2.Kubernetes 的设计原理是什么?

正如 Kubernetes 实施细节中所述,Kubernetes 集群的设计基于 3 个原则。

Kubernetes 集群应做到:

安全。它应遵循最新的安全最佳实践。
易于使用。它应能通过一些简单的命令进行操作。 
可扩展。不应偏向于某一个提供商,而是能通过配置文件进行自定义。

3.Kubernetes 集群中包含哪些组件?

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

下图显示了 Kubernetes 集群的各个部分之间的关系:

Kubernetes:释放容器化应用程序管理的威力_Docker

4.Kubernetes 的功能和优势是什么?

在生产环境中(尤其是当您要面向云优化应用开发时)使用 Kubernetes 的主要优势在于,它提供了一个便捷有效的平台,让您可以在物理机和虚拟机(VM)集群上调度和运行容器。 4.Kubernetes 的功能和优势是什么?

更广泛一点说,它可以帮助您在生产环境中,完全实施并依赖基于容器的基础架构。由于 Kubernetes 的实质在于实现运维任务自动化,所以您可以将其它应用平台或管理系统分配给您的许多相同任务交给容器来执行。

借助 Kubernetes 模式,开发人员可以使用 Kubernetes 作为运行时平台来创建云原生应用。模式是 Kubernetes 开发人员在构建基于容器的应用和服务时所需的工具。

有了 Kubernetes,您可以:

跨多个主机编排容器。
更充分地利用硬件,最大化企业应用运行所需资源的效用。
控制和自动化应用的部署与更新。
挂载和添加运行有状态应用所需的存储。
动态扩展容器化应用及其资源。
对服务进行声明式管理,保证所部署的应用始终按照您期望的方式运行。
应用健康检查和自我修复,以及自动放置、自动启动、启动复制和自动扩展。

但是,Kubernetes 需要依赖其它项目来全面提供这些经过编排的服务。增添了其他开源项目后,您就能全面发挥 Kubernetes 的潜力。这些必要的部分包括(还有更多):

注册表,通过 Docker 注册表等项目实现。
网络,通过 OpenvSwitch 等项目和智能边缘路由来实现。
遥测,通过 Kibana、Hawkularz 和 Elastic 等项目实现。
安全性,通过 LDAP、SELinux、RBAC 和 OAUTH 等项目以及多租户层来实现。
自动化,通过添加 Ansible playbook 来进行安装和集群生命周期管理。
服务,通过常用应用模式的丰富目录来提供。

简要了解 Linux 容器和容器编排技术在这个点播课程中,您将了解如何实现应用和服务的容器化,如何使用 Docker 对其进行测试,并使用红帽® OpenShift® 在 Kubernetes 集群上部署应用和服务。

Kubernetes:释放容器化应用程序管理的威力_应用程序_02

5.Kubernetes术语

与大多数技术一样,特定于 Kubernetes 的语言或可成为有碍入门的绊脚石。为了帮助您更好地了解 Kubernetes,我们在下面来解释一些常用术语。

控制平面(Control Plane):控制 Kubernetes 节点的进程的集合。所有任务分配都来自于此。

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

容器集(Pod):部署在单个节点上的一个或多个容器组成的容器组。同一容器集中的所有容器共享同一个 IP 地址、IPC、主机名称及其它资源。容器集会将网络和存储从底层容器中抽象出来。这样,您就能更加轻松地在集群中移动容器。

复制控制器(Replication controller):用于控制容器集在集群上运行的实例数量。

服务(Service):将工作定义与容器集分离。Kubernetes 服务代理会自动将服务请求分发到正确的容器集——无论这个容器集会移到集群中的哪个位置,甚至可以被替换掉。

Kubelet:运行在节点上的服务,可读取容器清单(container manifest),确保指定的容器启动并运行。

kubectl:Kubernetes 的命令行配置工具。

6.为什么使用 Kubernetes?

使用Kubernetes的理由很多,最重要的理由是,IT 行业从来都是由新技术驱动的。

当前,Docker 容器化技术已经被很多公司采用,从单机走向集群已成为必然。云计算的蓬勃发展正在加速这一进程。Kubernetes作为当前被业界广泛认可和看好的基于 Docker 的大规模容器化分布式系统解决方案,得到了以谷歌为首的 IT 巨头们的大力宣传和维持推进。

2015 年,谷歌联合 20 多家公司一起建立了CNCF(Cloud Native Computing Foundation,云原生计算基金会)开源组织来推广Kubernetes,并由此开创了云原生应用(Cloud Native Application)的新时代。作为 CNCF“钦定”的官方云原生平台,Kubernetes正在颠覆应用程序的开发方式。

不妨从以下几个方面来看看,你一定会喜欢上它的哦!

(1).一个平台搞定所有

使用 Kubernetes部署任何应用都是小菜一碟。只要应用可以打包成镜像,能够容器部署,Kubernetes就一定能启动它。

不管什么语言、什么框架写的应用(如:Java, Python, Node.js),Kubernetes都可以在任何环境中安全的启动它,如:物理服务器、虚拟机、云环境。

(2).云环境无缝迁移

如果你有换云环境的需求,例如从 GCP 到 AWS,使用Kubernetes的话,你就不用有任何担心。

Kubernetes:释放容器化应用程序管理的威力_开发人员_03

Kubernetes完全兼容各种云服务提供商,例如 Google Cloud、Amazon、Microsoft Azure,还可以工作在 CloudStack, OpenStack, OVirt, Photon, VSphere等。

(3).高效的利用资源

看下图,左边是 4 个虚拟机,黄色和蓝色部分是运行的应用,白色部分是未使用的内存和处理器资源。

Kubernetes:释放容器化应用程序管理的威力_Docker_04

右边,同样的应用打包运行在容器中。

Kubernetes如果发现有节点工作不饱和,便会重新分配pod,帮助我们节省开销,高效的利用内存、处理器等资源。

如果一个节点宕机了,Kubernetes会自动重新创建之前运行在此节点上的pod,在其他节点上运行。

(4).开箱即用的自动缩放能力

网络、负载均衡、复制等特性,对于Kubernetes都是开箱即用的。

pod 是无状态运行的,任何时候有 pod 宕了,立马会有其他 pod 接替它的工作,用户完全感觉不到。

如果用户量突然暴增,现有的 pod 规模不足了,那么会自动创建出一批新的 pod,以适应当前的需求。

反之亦然,当负载降下来的时候,Kubernetes也会自动缩减 pod 的数量。

Kubernetes:释放容器化应用程序管理的威力_开发人员_05

(5).使 CI/CD 更简单

你不必精通于Chef 和 Ansible这类工具,只需要对 CI 服务写个简单的脚本然后运行它,就会使用你的代码创建一个新的 pod,并部署到 Kubernetes集群里面。

应用打包在容器中使其可以安全的运行在任何地方,例如你的 PC、一个云服务器,使得测试极其简单。

Kubernetes:释放容器化应用程序管理的威力_开发人员_06

(6).可靠性

Kubernetes如此流行的一个重要原因是:应用会一直顺利运行,不会被 pod 或节点的故障所中断。

如果出现故障,Kubernetes会创建必要数量的应用镜像,并分配到健康的 pod 或节点中,直到系统恢复。而且用户不会感到任何不适。

Kubernetes:释放容器化应用程序管理的威力_开发人员_07

个容器化的基础设施是有自愈能力的,可以提供应用程序的不间断操作,即使一部分基础设施出现故障。

总之,Kubernetes是一个强大的容器编排平台,它可以帮助开发人员和运维人员更轻松地管理和部署容器化应用程序。Kubernetes的核心原理包括节点和集群、容器、Pod、控制器、服务发现和负载均衡、存储和安全等方面。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
nQkVcpdWfLDr