【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⊙)!!!