加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

为什么说Kubernetes是新的应用处事器?

发布时间:2018-12-19 02:04:52 所属栏目:业界 来源:高效开发运维
导读:你是否想过我们为什么要行使容器陈设多平台应用呢?莫非这仅仅是跟风吗?在本文中,我将提出一些有挑衅性的题目,以佐证我的概念,那就是为什么说 Kubernetes 是新的应用处事器。 你也许已经留意到了,大大都的说话都是要颠末表明(interpret)的,而且行使运
副问题[/!--empirenews.page--]

你是否想过我们为什么要行使容器陈设多平台应用呢?莫非这仅仅是“跟风”吗?在本文中,我将提出一些有挑衅性的题目,以佐证我的概念,那就是为什么说 Kubernetes 是新的应用处事器。

你也许已经留意到了,大大都的说话都是要颠末“表明(interpret)”的,而且行使“运行时”来执行源码。在理论上,大大都的 Node.js、Python 和 Ruby 代码可以很轻易地从一个平台(Windows、Mac、Linux)转换到另一个平台。Java 应用则更进一步,它将编译后的 Java 类转换成了字节码,可以或许在任何具有 JVM(Java 假造机)的处所运行。

为什么说Kubernetes是新的应用处事器?

Java 生态体系提供了尺度的名目来分发统一个应用中的全部 Java 类。我们可以将这些类打包为 JAR(Java Archive)、WAR(Web Archive)以及 EAR(Enterprise Archive),在这些名目中包括了前端、后端以及嵌入个中的库。那么我就要问了:你为什么要行使容器来分发 Java 应用呢?莫非它不是已经支持很便利地在差异情形间迁徙了吗?

站在开拓职员的角度答复这个题目的话,谜底也许并不那么明明。可是,我们思量一下你的开拓情形,以及由于开拓情形和出产情形的差别也许导致的题目:

  • 你行使 Mac、Windows 照旧 Linux?在路径脱离符方面有没有碰着过和/相干的题目?
  • 你行使什么版本的 JDK?是否在开拓情形行使 Java 10,而在出产情形行使 JRE 8?你有没有碰着过 JVM 差别所引入的 bug?
  • 你行使什么版本的应用处事器?出产情形是否行使沟通的设置、安详补丁和沟通版本的库?
  • 在出产陈设的时辰,是否碰着过差异版本的驱动或数据库处事器所导致的 JDBC 驱动题目,而这些题目在开拓情形也许并不存在?
  • 你是否哀求过应用处事器打点员为你建设数据源或 JMS 行列,可是在建设的进程中却呈现了拼写错误?

全部的这些题目都是由应用之外的身分导致的,容器最大的甜头之一就是它可以或许在一个预先构建的容器中陈设全部的内容(好比 Linux 刊行版、JVM、应用处事器、库、设置,最后尚有你的应用)。其它,在一个容器中将全部的对象都包括进来可以或许更轻易地将你的代码转移到出产情形中,在它无法正常运行的时辰,也更轻易说明个中的差别。由于它易于执行,以是也很轻易将沟通的容器镜像扩展至多个副本。

强化应用

在容器风行起来之前,应用处事器提供了一些非成果性需求(NFR,non-functional requirement),好比安详性、断绝性、容错、设置打点等等。打个例如,应用处事器和应用之间的相关就像 CD 播放器和 CD 之间的相关一样。

作为开拓职员,你应该遵循预界说的尺度并凭证特定的名目分发应用,而应用处事器会“执行”你的应用并带来一些特另外成果,这些成果因处事器“品牌”的差别而有所差异。

与 CD 播放器的类例如法相似,跟着容器的风行,容器镜像成为了新的 CD 名目。现实上,容器镜像仅仅是用来分发容器的名目。

容器的真正收益在你必要为应用添加企业级成果时才浮现出来。为容器化的应用提供这些成果的最佳方法就是行使 Kubernetes 作为它们的平台。其它,Kubernetes 平台还为其他项目提供了很棒的基本实验,这些项目包罗 Red Hat OpenShift、Istio 以及 Apache OpenWhisk,基于这些基本办法可以或许更轻易的构建和陈设结实的出产级质量的应用。

接下来,我们切磋九个这样的成果:

为什么说Kubernetes是新的应用处事器?

1. 处事发明

处事发明指的是确定怎样毗连处事的进程。要得到容器以及云原生应用的许多收益,我们必要将设置从容器镜像中移除出去,这样的话,我们就能把沟通的容器镜像应用到全部的情形中。将设置提取到应用外部是 12 要素应用的焦点原则之一。处事发明是从运行时情形中获取设置信息的方法之一,这样可以或许停止将其硬编码到应用之中。Kubernetes 自带了处事发明。Kubernetes 还提供了 ConfigMaps 和 [Secrets] (https://kubernetes.io/docs/concepts/configuration/secret/) 用来将设置从应用容器中移除。在运行时情形中,假如要毗连数据库这样的处事,我们会存储凭据信息,Secrets 办理了一些这方面所面对的挑衅。借助 Kubernetes,我们无需行使外部的处事器或框架。

2. 根基挪用

容器中的应用可以通过 Ingress 举办会见,也就是从外部天下路由到你所袒露的处事。OpenShift 提供了基于 HAProxy 的 route objects,它具有各项成果和负载平衡计策。你可以行使路由成果举办轮番陈设。这可以作为一些很是伟大的 CI/CD 计策的基本。拜见下文的“6. 构建和陈设管道”。

假如你想运行一次性的使命,好比一个批处理赏罚可能只是行使集群来计较一个功效(好比计较 Pi 的位数),那该怎么办呢?针对这种场景,Kubernetes 提供了 job objects。同时尚有一个 cron job,可以或许打点基于时刻的使命。

3. 弹性

在 Kubernetes 中,弹性(elasticity)是通过 ReplicaSets(它已往被称为 Replication Controllers)办理的。与面向 Kubernetes 的大大都设置相同,ReplicaSet 是一种和谐所需状态的方法:你汇报 Kubernetes,体系应该处于各类状态,Kubernetes 就能知道怎样到达该状态。在恣意时刻,ReplicaSet 都能节制副本的数目或应用措施准确的实例数目。

可是,假如你所构建的处事受接待水平超出了预先的筹划,计较资源耗尽了该怎么办呢?你可以借助 Kubernetes Horizontal Pod Autoscaler,它会基于视察到的 CPU 操作率(或所支持的自界说指标,以及应用提供的指标)扩展 pod 的数目。

4. 日记

由于 Kubernetes 集群可以或许运行容器化应用的多个副本,以是将这些日记聚合起来,以便于在统一个处所举办查察就变得很是重要了。同时,为了操作自动扩展(以及其他云原生应用的成果)所带来的收益,容器应该是不行变的。以是,我们应该将日记存储在容器之外,这样它们才气跨运行时耐久化。OpenShift 应承我们陈设 EFK 技能栈来聚合来自主机和应用的日记,即便这些日记来自多个容器乃至已删除的 pod 均是可以的。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读