Kubernetes是什么?

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

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

你可能听说过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是什么?

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Kubernetes Ubuntu 应用服务中间件
在Ubuntu22.04 LTS上搭建Kubernetes集群
在Ubuntu22.04.4上安装Kubernetes v1.28.7,步骤超详细
323 1
在Ubuntu22.04 LTS上搭建Kubernetes集群
|
2月前
|
Kubernetes 安全 Docker
在 K8s 集群中创建 DERP 服务器
在 K8s 集群中创建 DERP 服务器
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【2月更文挑战第29天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的提升,有效的监控和日志管理变得至关重要。本文将探讨构建高效 Kubernetes 集群监控系统的策略,以及实施日志聚合和分析的最佳实践。通过引入如 Prometheus 和 Fluentd 等开源工具,我们旨在为运维专家提供一套完整的解决方案,以保障系统的稳定性和可靠性。
|
20天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
16 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
1天前
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化实践
【4月更文挑战第22天】在动态且复杂的微服务架构中,确保 Kubernetes 集群的高性能运行是至关重要的。本文将深入探讨针对 Kubernetes 集群性能优化的策略与实践,从节点资源配置、网络优化到应用部署模式等多个维度展开,旨在为运维工程师提供一套系统的性能调优方法论。通过实际案例分析与经验总结,读者可以掌握持续优化 Kubernetes 集群性能的有效手段,以适应不断变化的业务需求和技术挑战。
13 4
|
9天前
|
Kubernetes 搜索推荐 Docker
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装
47 17
|
22天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
15 0
|
22天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
104 0
|
29天前
|
Kubernetes Cloud Native Docker
【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0
Kubernetes 是一个开源平台,用于管理容器化工作负载和服务,提供声明式配置和自动化。源自 Google 的大规模运维经验,它拥有广泛的生态支持。本文档详细介绍了 Kubernetes 集群的搭建过程,包括服务器配置、Docker 和 Kubernetes 组件的安装,以及 Master 和 Node 的部署。此外,还提到了使用 Calico 作为 CNI 网络插件,并提供了集群功能的测试步骤。
217 0
|
1月前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践
【2月更文挑战第31天】 在微服务架构日益普及的今天,容器编排工具如Kubernetes已成为部署、管理和扩展容器化应用的关键平台。然而,随着集群规模的扩大和业务复杂性的增加,如何有效监控集群状态、及时响应系统异常,以及管理海量日志信息成为了运维人员面临的重要挑战。本文将深入探讨 Kubernetes 集群监控的最佳实践和日志管理的高效策略,旨在为运维团队提供一套系统的解决思路和操作指南。
27 0