什么是Kubernetes?
网友 ibm中国

您一定听说过 Kubernetes,但它到底是什么?您能否向上司解释清楚它是什么?或者向您的同事?或者向您的小狗

 

Kubernetes 是 Google 开发的一个开源容器管理工具(可在 GitHub 中获取源代码),人们使用它已有 15 年。但这意味着什么?为什么您应该关注它

 

我们首先列出在容器集群中运行应用程序的一些问题。然后展示 Kubernetes 不是什么。最后,展示 Kubernetes 如何解决前面提出的问题。

 

完成学习后,您应该能够清楚地解释 Kubernetes,让您的上司和同事对您佩服到五体投地

 

问题

本节将介绍在集群化环境中运行基于容器的应用程序时您将面临的 3 个问题。任何解决方案都需要解决这些问题(剧透一下:Kubernetes 可以做到!)。

 

调度

您已经获得了这个卓越的基于容器的应用程序?太棒了!现在您需要确保它在计划的正确的时间和位置运行。让您的应用程序在集群中正确的机器上运行很重要,但集群中的所有机器不一定都是一样的

 

负载平衡

您的应用程序在正常运行。很好!现在,您需要确保客户端的负载均衡地分布在集群中的节点上。应用程序要以最佳的方式使用每个主机上的资源来处理客户端负载,这很重要。您也不想让一些容器全速运行,而其他容器却坐视不管吧

 

应用程序扩展

您的容器正在运行,而且客户端负载在它们之间得到了很好的平衡。太好了!现在,您需要能让一些容器上线来处理负载(和需求高峰),并在不再需要它们时终止它们。能够根据客户端的需求来处理负载高峰是非常重要的

 

集群管理和监控

现在,您的应用程序正在这个巨大的集群上高效运行,您需要管理它。您需要定义、启动、扩展、平衡负载和监控正在运行的容器的健康情况。这不是一项轻松的任务

 

Kubernetes 不是什么

平台即服务 (PaaS)

尽管 Kubernetes 具有 PaaS 产品所拥有的许多功能,比如存储管理和集群日志记录和监控。但是,Kubernetes 不是真正的 PaaS 产品,因为它没有提供像操作系统这样的组件,也没有供 Java 和 Docker 等支持工具。但是,Kubernetes 能与 PaaS 产品(比如 Bluemix 和OpenShift)紧密集成。

 

一个数据处理框架

Kubernetes 是一个绝对适合运行大数据应用程序的框架,但不会执行(或提供服务来执行)与像 Apache Spark 和 Hadoop Map/Reduce 这样的数据处理框架相同的功能。但,Kubernetes 能与 Spark 和 Hadoop 紧密集成(仅列举了两个例子)。

 

持续集成

Kubernetes 不会像 Jenkins 和其他 CI 工具一样构建应用程序的容器,但它能与 CI 紧密结合(让人惊喜!),帮助管理应用程序在其生命周期中演化的更新

 

解决方案

Kubernetes 解决了上面列出的所有问题(您没有感到震惊,对吗?)在下一节中,我将介绍如何解决这些问题,在此过程中还会介绍一些 Kubernetes 术语

 

调度

Kubernetes Pod 是一组容器,它们协同执行一个应用程序功能(或一组功能),是Kubernetes 中的调度单元。

 

创建一个 Pod 时,调度程序会查找最合适运行它(集群中的主机)。这由 kube-scheduler 组件处理,该组件会选择集群中的候选节点,确保该节点提供的资源与该 Pod 中的容器所需的资源相匹配。

 

负载平衡

Kubernetes 服务是对提供了相同功能的 Pod(称为副本)的逻辑分组,用于将 Pod 副本与它们的客户端解耦。

 

在 Kubernetes 中,负载平衡默认情况下由服务处理。对于每个服务,您可以提供一个标签选器来识别 Pod 的副本。因为副本的物理位置无关紧要,所以需要其功能的客户端既不知道也不关心它们实际在何处运行。调度程序使用标签选择器为请求选择正确的服务,确保客户端负载始终得到平衡

 

在一些受支持的云环境中,比如 IBM Bluemix Container 服务、Google Compute Engine (GCE) 和 Amazon Web Services (AWS),可通过将服务类型指定为 LoadBalancer,将一个服务配置为使用云提供商的负载平器。

 

应用程序扩展

Kubernetes 副本控制器可确保指定数量的 Pod 副本始终在集群中运行。

 

副本控制器会处理应用程序的扩展,确保您想要运行的副本数量实际上始终在运行。如果副本数量太少(可能有一两个副本因为某种原因而终止了),副本控制器会启动更多副本,直到达到目标数量。如果运行的副本太多(在自动扩展的情况下),副本控制器会结束一些副本

 

集群管理和监控

Kubernetes 仪表板是一个用于监控的基于 Web 的 UI,您可在其中的屏幕中管理正在运行的Pod,查看 CPU 和内存使用情况等指标。默认情况下没有部署该仪表板,但借助 kubectl 命令,可以部署并开始使用它:

 

kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

 

 

结束语

您应该对 Kubernetes 解决的问题和它解决问题的方式有了更好的了

 

在下一次员工会议中,您对 Kubernetes 的(深入)理解一定会让上司和同事们钦佩不已。如果在您解释之后,他们没有对您佩服的五体投地,或许您需要换一份新工作了。但至少您的小狗仍会喜欢您

 

参考资料和其他 Kubernetes 资源

在整篇文章中,我提供了一些链接来帮助您进一步了解 Kubernetes,但是我还想在这里提供一些更有概述性的文章链接。请尽情的阅读吧

  • 来源:https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

  • IBM Bluemix Container 服务 – 一种用于快速构建认知应用程序的高度安全、原生的Kubernetes 体验

  • 扩展容器:容器集群基础指南

  • Kubernetes 和 IBM Bluemix:如何部署、管理和保护基于容器的工作负

  • 比较其他容器集群管理工具

  • K8s 调度程序


CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢