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

微处事架构在Kubernetes上的实现

发布时间:2019-07-13 16:15:46 所属栏目:移动互联 来源:新牛哥
导读:【编者的话】本文是微处事网格系列的第二部门,通过Kubernetes这个当前最风行的微处事陈设平台,来详细讲授微处事的陈设进程,让用户对微处事有详细认知,同时为后续团结Istio陈设更伟大处事打下基
副问题[/!--empirenews.page--]

【编者的话】本文是微处事网格系列的第二部门,通过Kubernetes这个当前最风行的微处事陈设平台,来详细讲授微处事的陈设进程,让用户对微处事有详细认知,同时为后续团结Istio陈设更伟大处事打下基本。

在上一篇文章中,我们接头了最近的微处事趋势,以及陪伴微处事架构也许呈现的一些伟大题目。在接下来的几周内,我们将深入切磋这个题目。我们将切磋差异计划选择中固有的衡量,以及可以采纳哪些法子来缓解这些题目。

微处事架构在Kubernetes上的实现

然而,在深入之前,我以为花一点时刻来相识当今微处事中的最新技能状态是故意义的。我们起首回首一下领先的容器打点和处事编排框架Kubernetes。 现在,Kubernetes和微处事险些是同义词,以是最好彻底相识它们是怎样组合在一路的。

Kubernetes

与微处事自己很是相似,容器连年来已成为当代可扩展架构中不行或缺的一部门。与微处事一样,容器已经风行起来,由于它们为开拓进程提供了真正的甜头:它们靠得住,易于扩展,并提供了一个很好的抽象,断绝了Web处事的焦点组件。假如你想和更多Kubernetes技能专家交换,可以加我微信liyingjiese,备注『加群』。群里每周都有环球各大公司的最佳实践以及行业最新动态。

出格是,一种容器化技能已远远高出其他技能。 这是正确的,我们的微处事之旅的下一站是看看Kubernetes和Docker,它是当代微处事办法的主力。简朴地说,Kubernetes是当代基于容器的DevOps和微处事以及容器联袂并进的黄金尺度。

02.png

跟着容器化技能的鼓起,有几种竞争技能可用于打点大型Docker陈设和基于容器的处事。你也许还记得个中一些退役的办理方案:Docker Swarm,Apache Mesos,OpenStack Magnum等。然而,此刻Kubernetes已经裁减了竞争敌手。它是独一的AWS,Azure,Google Cloud原生自带,同时RedHat和Pivotal等很多私有云供给商也提供的容器化办理方案。

Kubernetes可以或许云云敏捷地得到云云多的上风,根因在于它可以或许将设置与编排分隔。这种庞洪水平应该不敷为奇,由于Kubernetes来自谷歌的内部项目Borg,它是谷歌在漫衍式体系上的数十年履历总结。行使Kubernetes,你可以指定处事的外面,实例数,冗余范例,处事地址位置。然后,该器材自动计较从近况到建设该处事必要举办哪些变动。可以把它想象成SQL,你没有指定命据库怎样添加或转换每个行。你可以指定命据的外面,数据库会指出怎样实现数据。 Kubernetes也是一样的。

Kubernetes特点

Kubernetes提供的是将容器视为处事界说的手段。Kubernetes可以处理赏罚纯容器。纵然你想在不进入微处事规模的环境下只陈设容器,Kubernetes在打点和陈设方面也能为你提供许多辅佐。你在群齐集的处事器上安装Kubernetes软件,Kubernetes主历程将自动陈设你的软件。

除了根基的容器外,Kubernetes还可以行使它所称的Pod。 Pod是由一个或多个处事构成的单独界说。 Pod可以包括从单独运行的单个处事器到完备的多容器处事,譬喻数据库容器与键值存储和一个包括在一路的http处事器相团结。 Pod是Kubernetes的根基构建块。

最后一个元素是处事。在Kubernetes中,处事就像是将Pod组合到应用措施中的配方。固然Pod是具有生命周期的详细陈设,但处事更抽象。它描写了一个单独的组件,如后端或数据库。

团结全部这些手段的是Kubernetes呼吁行器材kubectl。固然Kubernetes提供的抽象很棒,但呼吁行器材很是强盛,应承你行使kubectl呼吁描写对架构的伟大变动。总而言之,kubectl CLI器材包括近50种差异的呼吁,用于处理赏罚在修改基于容器的微处事陈设进程中呈现的全部环境(你总会呈现堕落的时辰)。

下手实践一番

固然高条理描写很有辅佐,但现实上没有什么比现实陈设Kubernetes处事能更好的领略它的了。我们在这里没有做任何高妙的对象,只是展示怎样陈设一个简朴的“Hello World”处事,但它应该是有益的。

我们在Go中编写了一个简朴的处事器,用“Hello World”相应http哀求。代码很是简朴:

  1. package main 
  2. import ( 
  3. "fmt" 
  4. "log" 
  5. "net/http" 
  6. "os" 
  7. func handler(w http.ResponseWriter, r *http.Request) { 
  8. log.Print("Hello world received a request.") 
  9. version := os.Getenv("VERSION") 
  10. if version == "" { 
  11.   version = "v1" 
  12. log.Println(version) 
  13. fmt.Fprintf(w, "Hello world %sn",version) 
  14. func main() { 
  15. log.Print("Hello world sample started.") 
  16. http.HandleFunc("/api/hello", handler) 
  17. port := os.Getenv("PORT") 
  18. if port == "" { 
  19. port = "8080" 
  20. log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil)) 
  21. }  

运行它的第一步是将其构建到Docker容器中。为此,我们从基本Go Docker镜像开始构建以下Dockerfile。

  1. # Use the official Golang image to create a build artifact. 
  2. # https://hub.docker.com/_/golang 
  3. FROM golang as builder 
  4. # Copy local code to the container image. 
  5. WORKDIR /go/src/github.com/haseebh/hello-world 
  6. COPY . . 
  7. RUN go build -o helloworld-v1 main/helloworld-v1.go 
  8. # Use a Docker multi-stage build to create a lean production image. 
  9. # https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds 
  10. FROM alpine 
  11. COPY --from=builder /go/src/github.com/haseebh/hello-world-v1 /helloworld-v1 
  12. ENV PORT 8080 
  13. # Run the web service on container startup. 
  14. CMD ["/helloworld-v1"] 

(编辑:湖南网)

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

热点阅读