Kubernetes是什么?

 本文讲的是Kubernetes是什么?【编者的话】你能向你的老板,同事解释清楚Kubernetes到底是个什么东西吗?本文应该能帮助到你。

【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。

你可能听说过Kubernetes,但是它到底是什么? 说真的,你能向你的老板,同事或者你家的狗(玩笑)解释清楚这件事情吗?

Kubenetes是一款由Google开发的开源的容器编排工具(GitHub源码),在Google已经使用超过15年(译者注:Kubernetest前身Borg)。但这意味着什么? 为什么你需要关心它?

首先我们先简要说明一下在容器集群中运行应用时会面临到的一些问题,然后我会告诉你Kubernetes不是什么。 最后,我将会让你了解到Kubernetes是如何解决以上这些问题的。

那最后你应该能够说清楚Kubernetes到底是什么,这时他们(老板、同事)应该都会听你的了吧。

问题

在这节当中,我们将会看到三个当你在集群环境中运行容器应用程序时所会面临到的问题。 任何(容器集群)解决方案都需要解决这些问题(剧透警告:Kubernetes就是这样的)。

调度

你已经得到了这个很棒的基于容器的应用程序? 太棒了!现在你需要确保它能够运行在它应该运行的地方。将应用运行在集群中正确的主机上对你的应用程序而言是很重要的一件事情,因为并不是集群中所有主机都是一样的。

负载均衡

你的应用程序已经启动并且成功运行起来了。 好样的! 现在你需要保证来自客户端的负载(请求)能够均匀的分布到集群的节点当中。这对于你的应用程序能够以最佳的方式利用每台主机的资源来处理客户端负载是非常重要的。你并不希望当中一些容器正在满负荷的工作,而另外一些却处在空闲的状态。

应用伸缩

这时你的容器已经运行起来了,并且客户端负载能够在这些容器当中很好的取得平衡。好极了!而现在你需要能够启动一些新的容器来处理负载(当请求高峰时),同时可以清理掉一些(容器)当不再需要这些容器的时候。这很重要,因为这样才能够有效的(按需的)处理客户端请求的峰值。

集群管理和监控

现在你的应用程序已经可以在这个庞大的集群中高效的运行,这时你必须要管理它。 你需要明确知道它们 (集群中的相关服务)都是正常运行的,如部署,弹性伸缩,负载均衡以及容器的健康状态。当然这并不是一个轻松的活儿。

Kubernetes不是什么?

平台即服务(PaaS)

尽管Kubernetes提供了很多与PaaS相似的功能,如存储管理,集群日志以及监控等。 但是Kubernetes并不是一个真正的PaaS,因为它并不提供诸如操作系统之类的组件,或者提供对Docker或者Java的支持工具,然而Kubernetes却可以和像Bluemix以及OpenShift这样的PaaS平台产品完美融合。

数据处理框架

Kubernetes毫无疑问是一个非常适合于运行大数据应用的框架,但是它并不能执行或者提供与数据处理的框架(如Apache Spark和Hadoop Map/Reduce)相同的功能。然而Kubernetes与Sprak以及Hadoop都能够很好的集成(这里仅举两个例子)。

持续集成

Kubernetes并不能像Jenkins或者其它CI工具一样去构建你的应用程序容器,但(令人惊喜的是)它可以与CI协同工作,以帮助管理应用程序在其生命周期中的更新升级。

解决方案

Kubernetes解决了上面列举的每一个问题(你不会震惊,是吗?)。在接下来的部分,我将会讲述Kubernetes是如何解决这些问题的,同时也会介绍Kubernetes相关的一些术语(加粗的斜体部分)。

调度

在Kubernetes中Pod是指一组容器,它们一起工作,并且对外提供一个(或者一组)功能,Pod是Kubernetes中的调度的(最小)单元。

当一个pod被创建,调度器将会寻找最适合运行它的Node节点(集群当中的主机)。这个(调度)过程主要由kube-scheduler组件负责完成,它会在集群中选择备选节点,并且确保其(节点)提供的资源能够满足pod中容器的需求。

负载均衡

Kubernetes中Service服务是逻辑上的一组Pod(也被称为Replicas副本),这组Pod提供了相同的功能,Service服务解除了这些Pod副本与它们客户端之间的耦合(译者注:这里指当客户端需要访问Pod所提供的功能或服务时,直接访问Service即可,而不同知道具体是哪一个Pod实例在提供服务)。

在Kubernetes中,负载均衡在默认情况下是由Service来处理。 对于每一个Service实例你可以提供一个lable selector(标签选择器),用于标识(与该服务关联的)Pod的Replica副本。由于Service服务与Replica副本的物理位置并不相关,因此当客户端使用它门(Pod副本)所提供的功能时,客户端既不知道也不关心它们实际运行的位置。调度器使用标签选择器为请求选择正确的服务,并且确保客户端负载始终均衡。

在某些受支持的云环境中,比如在IBM Bluemix容器服务, Google Compute Engine(GCE)以及Amazon Web Services(AWS)中,你可以通过指定服务类型为LoadBalancer来将服务配置为云供应商的负载均衡器

应用伸缩

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

Replication控制器通过确保要运行的副本数量来实现应用程序的扩展伸缩。如果副本数量(可能有一个或者多个副本因为某些原因死掉),Replication控制器则会启动更多的实例,直到达到目标数量。而如果当存在过多的副本时(在弹性伸缩的情况下),则会自动关闭部分实例。

集群管理和监控

Kubernetest Dashboard是一个基于Web的集群监控UI,包括管理运行中的pod实例,以及查看CPU,内存使用情况等指标。 在默认情况下Kubernetest并不会部署Dashboard,但通过kubectl命令你可以快速部署Dashboard,并开始使用它:

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

总结

你应该已经更好的理解Kubernetes所要解决的问题,以及是如何解决的。

好了,当在下一次员工会议时,让你的老板和同事惊讶于你对Kubernetes的(深入)了解。如果当你介绍完Kubernetes,他们还没有打算听你的,那你可能需要一份新的工作了,但是至少你的狗还是爱你的(玩笑)。

参考和一些其他Kubernetes相关的资料

在这篇文章里面,我已经给出了一些连接,以帮助你更多的了解Kubernetes,但是我认为我还是应该在这里列出一些更概括的参考资料,请享用!

原文链接:What is Kubernetes (翻译:云龙,校对:李韵宇)

原文发布时间为:2017-08-30

本文作者:云龙云

本文来自合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Kubernetes是什么?

时间: 2024-09-20 10:54:39

Kubernetes是什么?的相关文章

学习笔记TF064:TensorFlow Kubernetes

AlphaGo,每个实验1000个节点,每个节点4个GPU,4000 GPU.Siri,每个实验2个节点,8个GPU.AI研究,依赖海量数据计算,离性能计算资源.更大集群运行模型,把周级训练时间缩短到天级小时级.Kubernetes,应用最广泛容器集群管理工具,分布式TensorFlow监控.调度生命周期管理.容器集群自动化部署.扩容.运维开源平台,提供任务调度.监控.失败重启.TensorFlow.Kubernetes都是谷歌公司开源.https://kubernetes.io/ .谷歌云平台

跨集群服务——实现Kubernetes应用的高可用

本文讲的是跨集群服务--实现Kubernetes应用的高可用[编者的话]本文是Kubernetes 1.3版本新功能深入介绍系列文章中的一篇,原文作者Quintion Hoole是Kubernetes集群联邦的技术主管,负责集群联邦的设计和开发.本文主要介绍跨集群服务的创建和和使用,该功能是集群联邦在Kubernetes 1.3版本的核心功能. 我们在进行生产环境部署时得到的一个明确的需求,是Kubernetes用户希望服务部署能够zone.跨区域.跨集群甚至跨云边界(译者:如跨云供应商).相比

揭开面纱:Kubernetes架构详解

[编者的话] 本文介绍了Kubernetes中的主要组件和各个组件的工作模式. 入门导论:Kubernetes组件和组件之间如何协同工作 本文讲的是揭开面纱:Kubernetes架构详解如果你正在实现容器的落地,你需要一个容器管理平台.假如你正在阅读本文,那你很有可能已经考虑了Kubernetes的优势. 什么是Kuberbetes?这个异常火爆的容器编排引擎的内在到底是些什么?它们如何一同为处理生产环境中的容器化应用提供一个面向未来的.可靠的.可伸缩的潜在方案?(请注意这里故意使用了"潜在&q

《开源容器云OpenShift:构建基于Kubernetes的企业应用云平台》一3.2 核心组件详解

3.2 核心组件详解 OpenShift的核心组件及其之间的关联关系如图3-2所示.OpenShift在容器编排层使用了Kubernetes,所以OpenShift在架构上和Kubernetes十分接近.其内部的许多组件和概念是从Kubernetes衍生而来,但是也存在一些在容器编排层之上,OpenShift特有的组件和概念.下面将详细介绍OpenShift内部的核心组件和概念. 3.2.1 Master节点 在介绍Master节点前,我们先补充一些内容.OpenShift集群可以由一台或多台主

给大家kubernetes核心技术详解之一

好长时间没写文章了,昨天刚倒霉一天,今天写篇文章安慰的自己,废话不多说直接看题.   kubernetes核心技术详解 1.概述 模块化,可插拔化 公有云,私有云,混合云部署 可挂载 可组合 自动恢复 自动复制 自动重启 使用 使用命令 kubectl 进行交互 kubectl  create -f    name.yaml 创建pod kubectl   get  pods   查看创建的pods READY是1 表明是成功的服务正常 kubectl   delete  pods  names

DockOne微信分享(一二〇):基于Kubernetes的私有容器云建设实践

本文讲的是DockOne微信分享(一二〇):基于Kubernetes的私有容器云建设实践[编者的话]本次分享将为大家介绍易宝支付私有容器云从0到1的建设之路.包括技术选型.理论基础.基于Kubernetes的容器云和CI/CD落地过程中的挑战和踩过的坑. 建设背景及目标 在Docker技术流行开来之前,保证软件交付的质量和速度对于大多数企业来说都是困难的.业务的复杂性带来了应用的复杂性,面对成千上万的不同应用,运维部门需要时刻应对来自不同应用.不同环境的挑战.特别是在自动化运维程度不高的企业,"

巅峰对决之Swarm、Kubernetes、Mesos

本文讲的是巅峰对决之Swarm.Kubernetes.Mesos,[编者的话]这篇文章对比了三大主流调度框架:Swarm.Kubernetes和Mesos.文章不仅从理论上讨论了各个框架的优缺点,还从两个实际的案例出发,分析了每个框架具体使用方法. 这篇文章对比了三大主流调度框架:Docker Swarm.Google Kubernetes和Apache Mesos(基于Marathon框架).在解释了调度和容器的基本概念后,文章探讨了每个框架的特点,并从以下两个用例来对比他们:一个只使用了两个

我们为什么选择Kubernetes

本文讲的是我们为什么选择Kubernetes,[编者的话]这篇文章介绍了作者在选择容器编排工具过程中的一些总结和经验,各个编排工具的特性比较,以及自己团队为什么选择Kubernetes. 几个月前,我开始调研Docker容器的编排工具,例如一些可以帮助我们把docker容器部署到集群中节点上,并能保证容器一直处于运行状态的工具.首先我们来看下为什么需要这些. Prior Setup 在我们移到Kubernetes之前我们也有一套正式的部署流程.我们使用Jenkins实现持续集成,对每一个提交我们

Google Kubernetes & Docker

Google Kubernetes, 可以理解为一个开源的容器管理平台.  Kubernetes is an open source implementation of container cluster management. 截取自 http://www.csdn.net/article/2014-09-18/2821759-Google-Kubernetes-interview Docker出现后,Google开源了 Kubernetes.据说,Google的搜索.地图.邮箱等服务全部运行

kubernetes架构之二

一.概述 IaaS:即基础设施即服务,通过虚拟化和分布式存储等技术,实现对包括服务器.存储设备.网络设备等各种物理资源的抽象:从而形成了一个可扩展.可按需分配的虚拟资源池.最具代表性的IaaS产品有Amazon AWS,提供虚拟机EC2和云存储S3等服务: PaaS:平台即服务,为开发者提供了应用的开发环境和运行环境,将开发者从繁琐的IT环境管理中解放出来:PaaS主要面向的是软件专业人员: SaaS:软件即服务,面向使用软件的终端用户.比如:在线使用的邮箱系统  二.架构和组件 kuberne