> 文章列表 > 【k8s】部署Bookinfo应用

【k8s】部署Bookinfo应用

【k8s】部署Bookinfo应用

文章目录

  • 👹 关于作者
      • 部署Bookinfo应用
        • (1)Bookinfo简介
        • (2)部署应用程序
        • (3)启用对应用程序的外部访问
        • (4)生产测试
  • ✊ 最后

在这里插入图片描述

👹 关于作者


大家好,我是秋意临。

😈 CSDN作者主页

  • 😎 博客主页

👿 简介

  • 👻 普通本科生在读
  • 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛”,斩获多项奖项荣誉证书
  • 🔥 各个平台,秋意临 账号创作者
  • 🔥 云社区 创建者
点赞、收藏+关注下次不迷路!。

欢迎加入云社区


部署Bookinfo应用

(1)Bookinfo简介

Bookinfo应用模仿在线书店的一个分类,显示一本书的信息。页面上会显示一本书的描述,书籍的细节(ISBN、页数等),以及关于这本书的一些评论。

Bookinfo应用分为四个单独的微服务:

● productpage:调用details和reviews两个微服务,用来生成页面;

● details:包含书籍的信息;

● reviews:包含书籍相关的评论,会调用ratings微服务;

● ratings:包含由书籍评价组成的评级信息。

reviews微服务有3个版本:

● v1版本不会调用ratings服务;

● v2版本会调用ratings服务,并使用1到5个黑色星形图标来显示评分信息;

● v3版本会调用ratings服务,并使用1到5个红色星形图标来显示评分信息。

Bookinfo应用的端到端架构如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qa1JXV0v-1655626971588)(E:\\笔记\\Typora\\图片\\wKggBmIe5HeAOZo_AACNM4baRR0997.png)]

(2)部署应用程序

解压软件包并导入镜像:

[root@k8s-master-node1 ~]# tar -zxf ServiceMesh.tar.gz
[root@k8s-master-node1 ~]# cd ServiceMesh/
[root@k8s-master-node1 ServiceMesh]# docker load -i images/image.tar

部署应用到Kubernetes集群:

[root@k8s-master-node1 ServiceMesh]# kubectl apply -f bookinfo/bookinfo.yaml
[root@k8s-master-node1 ServiceMesh]# kubectl get pods
NAME                         READY   STATUS   RESTARTS   AGE
details-v1-79f774bdb9-m98sl       1/1       Running     0           46s
productpage-v1-6b746f74dc-snpf9   1/1       Running     0           46s
ratings-v1-b6994bb9-nmws8        1/1       Running     0           46s
reviews-v1-545db77b95-4rtn4       1/1       Running     0           46s

(3)启用对应用程序的外部访问

现在Bookinfo应用程序已成功运行,需要使应用程序可以从外部访问,可以用Istio Gateway来实现这个目标。

[root@k8s-master-node1 bookinfo]# cat bookinfo-gateway.yaml
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:name: bookinfo-gateway
spec:selector:istio: ingressgatewayservers:- port:name: httpnumber: 80protocol: HTTPhosts:- "*"
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:name: bookinfo
spec:hosts:- "*"gateways:- bookinfo-gatewayhttp:- match:- uri:exact: /productpage- uri:prefix: /static- uri:exact: /login- uri:exact: /logout- uri:prefix: /api/v1/productsroute:- destination:host: productpageport:number: 9080

查看Ingress Gateway:

[root@k8s-master-node1 ServiceMesh]# kubectl get gateway
NAME               AGE
bookinfo-gateway       32s
[root@k8s-master-node1 ServiceMesh]# kubectl get svc -n istio-system
NAME     TYPE     CLUSTER-IP     EXTERNAL-IP     PORT(S)     AGE
istio-egressgateway   ClusterIP      10.101.130.107   <none>        80/TCP,443/TCP                                                           30m
istio-ingressgateway   LoadBalancer   10.102.250.102   <pending>     15021:32634/TCP,80:22092/TCP,443:30119/TCP,31400:30282/TCP,15443:32486/TCP   30m

可以看到Gateway 80端口对应的NodePort端口是22092,在浏览器上通过http://master_IP:22092/productpage访问Bookinfo应用,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cEOZmyGo-1655626971589)(E:\\笔记\\Typora\\图片\\wKggBmIe5IOAH7c-AACets_5mB0166.png)]

(4)生产测试

使用Curl工具向Bookinfo应用发送请求产生模拟流量。

[root@k8s-master-node1 ServiceMesh]# cat curl.sh
#!/bin/bash
while true
docurl http://192.168.200.10:20737/productpage >/dev/null 2>&1sleep 1
done

后台运行脚本:

[root@k8s-master-node1 ServiceMesh]# chmod +x curl.sh
[root@k8s-master-node1 ServiceMesh]# bash curl.sh &
[1] 2924

✊ 最后


👏 我是秋意临,欢迎大家一键三连、加入云社区

👋 我们下期再见(⊙o⊙)!!!