写点什么

Knative 实战:一个微服务应用的部署

  • 2019-11-21
  • 本文字数:2865 字

    阅读完需:约 9 分钟

Knative 实战:一个微服务应用的部署

在 Istio 中提供了一个 Bookinfo 的示例,用于演示微服务之间的调用,那么如何在 Knative 中部署这个示例呢?本文将会给大家介绍一下在 Knative 中部署 Bookinfo 微服务以及查看调用链追踪信息。

背景

Bookinfo 这个示例应用由 4 个微服务组成。 Bookinfo 应用架构图如下:



  • productpage 微服务: 调用 details 微服务和 reviews 微服务来生成页面

  • details 微服务: 包含图书的详细信息

  • reviews 微服务: 提供图书的评论功能,也可以调用 rating 微服务给图书评分

  • ratings 微服务: 提供图书的评分功能


另外 reviews 微服务目前有 3 个版本:


  • v1 不会调用 ratings 微服务

  • v2 调用 ratings 微服务,并将评分显示 1~5 个黑色星星

  • v3 调用 ratings 微服务,并将每个评分显示为 1~5 个红色星星

准备

部署

首先开启 Istio Sidecar 注入,我们在 default 命名空间打上 istio-injection=enabled 的 Label:


kubectl label namespace default istio-injection=enabled
复制代码


部署 Bookinfo Knative Service 服务, 简单直接通过 yaml 文件一键拉起来,bookinfo.yaml:


apiVersion: serving.knative.dev/v1kind: Servicemetadata:  name: details-v1  namespace: defaultspec:  template:    spec:      containers:      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-details-v1:1.15.0        ports:        - containerPort: 9080---apiVersion: serving.knative.dev/v1kind: Servicemetadata:  name: ratings-v1  namespace: defaultspec:  template:    spec:      containers:      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-ratings-v1:1.15.0        ports:        - containerPort: 9080
---apiVersion: serving.knative.dev/v1kind: Servicemetadata: name: reviews-v1 namespace: defaultspec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v1:v1-aliyun ports: - containerPort: 9080
---apiVersion: serving.knative.dev/v1kind: Servicemetadata: name: reviews-v2 namespace: defaultspec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v2:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: RATINGS_HOSTNAME value: ratings-v1---apiVersion: serving.knative.dev/v1kind: Servicemetadata: name: reviews-v3 namespace: defaultspec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v3:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: RATINGS_HOSTNAME value: ratings-v1---apiVersion: serving.knative.dev/v1kind: Servicemetadata: name: productpage-v1 namespace: defaultspec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/productpage:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: DETAILS_HOSTNAME value: details-v1 - name: RATINGS_HOSTNAME value: ratings-v1 - name: REVIEWS_HOSTNAME value: reviews-v2
复制代码


这里需要说明几点:


  • productpage 环境变量设置:

  • SERVICES_DOMAIN:微服务直接通过内部访问域名进行访问,这里设置域名后缀为:default.svc.cluster.local

  • DETAILS_HOSTNAME:设置为 details-v1

  • RATINGS_HOSTNAME:设置为 ratings-v1

  • REVIEWS_HOSTNAME: 这里设置 reviews-v2

  • reviews v2, v3 环境变量设置。由于 v2 和 v3 需要访问 rate 进行评分, 因此需要设置对应的环境变量:

  • SERVICES_DOMAIN:微服务直接通过内部访问域名进行访问,这里设置域名后缀为:default.svc.cluster.local

  • RATINGS_HOSTNAME:设置为 ratings-v1


执行命令:


# kubectl apply -f bookinfo.yaml
复制代码


查看执行结果:


# kubectl get kserviceproductpage-v1                  http://productpage-v1.default.knative.kuberun.com                  productpage-v1-s4drn                  productpage-v1-s4drn                  True    ratings-v1                      http://ratings-v1.default.knative.kuberun.com                      ratings-v1-bsvb2                      ratings-v1-bsvb2                      True    details-v1                      http://details-v1.default.knative.kuberun.com                      details-v1-dj47j                      details-v1-dj47j                      True    reviews-v1                      http://reviews-v1.default.knative.kuberun.com                      reviews-v1-q5wz4                      reviews-v1-q5wz4                      True    reviews-v2                      http://reviews-v2.default.knative.kuberun.com                      reviews-v2-5r7mm                      reviews-v2-5r7mm                      True    reviews-v3                      http://reviews-v3.default.knative.kuberun.com                      reviews-v3-s2v6j                      reviews-v3-s2v6j                      True
复制代码


通过页面进行访问,说明服务访问正常:


微服务调用链

一般情况下,用户比较关注微服务中的调用链信息,通过 Tracing Analysis 服务,我们可以方便的查看服务调用链。


首先我们进行一次服务访问,在 productpage 页面,点击 Normal user



可以看到 Book Details  和 Book Reviews 信息。productpage 服务依次会调用:details、reviews 和 ratings 服务。



接下来登录 Tracing Analysis 服务控制台,选择【应用列表】,点击 productpage.default



选择 调用链分析 页签,可以查看服务调用链信息。


结论

通过上面的介绍,我们可以在 Knative 中轻松实现微服务部署,并且结合 Tracing Analysis 服务可以满足部署生产级别服务诉求。


作者简介:


元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工作。了解 ACK 容器服务,请点击。本文转载自阿里巴巴云原生微信公众号(ID:Alicloudnative),主要关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践。


2019-11-21 11:123409

评论

发布
暂无评论
发现更多内容

Playwright MCP浏览器自动化教程

测吧(北京)科技有限公司

鸿蒙应用开发从入门到实战(七):ArkTS组件声明语法

程序员潘Sir

鸿蒙 HarmonyOS

第五届电气工程与机电一体化技术国际学术会议(ICEEMT 2025)

搞科研的小刘

国际学术会议 电器工程 机电一体化

RFID技术应用中常见的误区与防坑指南

斯科信息

RFID技术 RFID读写器 RFID标签

【新模型速递】PAI-Model Gallery云上一键部署Qwen3-Next系列模型

阿里云大数据AI技术

阿里云 大模型 通义千问 PAI

EdgeOne Pages成为中小企业与开发者出海首选平台

极客天地

工具过多:如何管理前端工具泛滥?

掘金安东尼

企业内网IM:构建高效安全的企业内网即时通讯系统

BeeWorks

即时通讯 IM 私有化部署

KWDB 携手“开放原子校源行”走进河北工业大学

KaiwuDB

数据库

2025财务机器人选型全攻略:谁能成为企业“财务大脑”?

Techinsight

大数据公有云市场第一,阿里云占比47%!

阿里云大数据AI技术

AI Compass前沿速览:GPT-5-Codex 、宇树科技世界模型、InfiniteTalk美团数字人、ROMA多智能体框架、混元3D 3.0

汀丶人工智能

“融海计划”一周年,金融AI产业交出一张生态答卷

脑极体

AI

大数据-99 Spark Streaming 数据源全面总结:原理、应用 文件流、Socket、RDD队列流

武子康

Java 大数据 flink spark 分布式

重要:Java25正式发布(长期支持版)!

王磊

纯电拐点,一场尚未到来的革命

脑洞汽车

AI

行业分享丨汽车电磁兼容仿真技术与应用

Altair RapidMiner

人工智能 AI 汽车 仿真 CAE

AI大模型如何生成PPT?7个主流PPT生成器大盘点

职场工具箱

PPT AI大模型 AIGC AI工具 AI生成PPT

docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’

刘大猫

人工智能 数据挖掘 机器学习 算法 数据分析

MySQL 31 误删数据怎么办?

伤感汤姆布利柏

AI Agents 能自己开发工具自己使用吗?一项智能体自迭代能力研究

Baihai IDP

AI LLM AI Agent

从慕尼黑街头的伪装车,看汽车背后的“千锤百炼”

DevOps和数字孪生

速卖通商品列表API秘籍!轻松获取商品列表数据

tbapi

速卖通商品数据采集 速卖通API 速卖通商品详情API 速卖通商品数据分析

【IEEE出版|上海理工大学主办】第六届大数据、人工智能与物联网工程国际会议(ICBAIE 2025)

搞科研的小刘

人工智能 大数据 国际学术会议 上海理工

即时通讯软件,能聊天还能协同办公的企业IM

BeeWorks

即时通讯 IM 私有化部署

腾讯会议AI功能用户量同比增长超150%

极客天地

金融保险行业 AD 域自动化管理解决方案

运维有小邓

AD域 AD域管理

挖掘PDF生成器中的SSRF漏洞:从发现到利用

qife122

网络安全 SSRF

上线半年客户数增长超300%,腾讯云音视频低代码互动直播组件释放全球开发者生产力

极客天地

如何在 OpenShift 上部署和使用 KubeBlocks

小猿姐

k8s 容器化 Redshift

Knative 实战:一个微服务应用的部署_服务革新_元毅_InfoQ精选文章