部署测试·示例应用、
bookinfo这个应用是一个在线书店的演示系统
文章目录
- 部署测试·示例应用、
-
- 为什么要用到 服务器网格
- 前言
- 一、架构图
- 二、开始安装
- 创建Ingress Gateway
为什么要用到 服务器网格
1、服务之间通讯安全没有保障 ,
(节点于节点通讯,未能实现加密通讯,就有可能被被人嗅探走数据)
2、跟踪通讯延迟非常困难
(他的通讯经历了哪些中间主键,如果要诊断问题,其实是不好实现的)
3、负责均衡功能有限
(k8s 里面 负载只有 通过server ,只能实现ipvs 核心基础调度,无法实现 流量分割,流量迁移,ab测试,流量镜像,等等功能)
在这里插入图片描述
前言
Istio是做什么的,这里就不在详细讲解了,可以看我上期博客,里面已经写清楚了
一、架构图
二、开始安装
#开启default 的 sidecar 自动注入,因为所有pod 都是运行在默认ns 里面的
[email protected]:~$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
[email protected]:~$ kubectl get pod
NAME READY STATUS RESTARTS AGE
details-v1-7f4669bdd9-bqsxw 2/2 Running 0 3m33s
productpage-v1-5586c4d4ff-6mp7v 2/2 Running 0 3m31s
ratings-v1-6cf6bc7c85-75qxt 2/2 Running 0 3m33s
reviews-v1-7598cc9867-sv2v6 2/2 Running 0 3m33s
reviews-v2-6bdd859457-vcwpz 2/2 Running 0 3m32s
reviews-v3-6c98f9d7d7-g8dfx 2/2 Running 0 3m32s
kubectl exec "$(kubectl get pod -l app=ratings -o \
jsonpath='{.items[0].metadata.name}')" \
-c ratings -- curl -sS \
productpage:9080/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>
这时候就说明可以访问 Envoy了
#验证到目前为止一切正常。运行以下命令,通过检查响应中的页面标题来查看应用程序是否在集群内运行并提供 HTML 页面:
创建Ingress Gateway
(Istio入站网关),将应用关联到istio网关:
此时Bookinfo应用虽然已经部署,但还不能被外界访问。
kubectl apply -f istio-1.15.0/samples/bookinfo/networking/bookinfo-gateway.yaml
kubectl get vs
kubectl get svc istio-ingressgateway -n istio-system
这类意味着我们访问任何一个 节点的30707 端都会被转发到 ingressgateway,但是这并不是最好的方法,
我们应该有个 loadBanlancer 来负责去请求 k8s 每个节点的node -pod,用户直接访问 loadBanlancer 地址
从集群外部访问bookinfo应用
http://192.168.10.148:30707/productpage
这里呢就进入了 书店的后台,说明已经部署完成了
我们在去看看 网络走势图
图例看出了 v1 版本 和 v2 版本 这时候 istio 就可以做 流量自动负载均衡,或者 微服务的 蓝禄部署了