系列文章:web
总目录索引:九析带你轻松完爆 istio 服务网格系列教程tomcat
目录服务器
1 前言app
2 邀约ide
3 virtual service 简述微服务
4 virtual service 样例spa
4.1 jiuxi-busybox.yamlorm
4.2 jiuxi-deployment.yaml视频
4.3 jiuxi-svc.yamlblog
4.4 jiuxi-vs.yaml
5 Istio 注入
6 登陆客户端验证规则生效
7 总结
1 前言
若是你对博客有任何疑问,请告诉我。
2 邀约
你能够从 b 站搜索 “九析”,获取免费的、更生动的视频资料:
3 virtual service 简述
在前面的章节中已经讲过了 virtual service 的概念和理论了。这里再作一个赘述,virtual service 是虚拟服务,它并不是真正的 k8s service,首先不能经过 kubectl get svc 的方式找到它,其次在服务调用的时候也不会直接调用它,它就像 k8s service 背后的女人同样,牢牢握着 k8s service 的老二,让它乖乖按照本身的旨意将请求流量路由到网格内的特定目标。
以下是常常困扰初学者的问题,下面一一作解答。
问题一:Virtual service 跟 k8s service 的关系是什么。属于强绑定吗?
回答:不是强绑定。virtual service 能够帮助 k8s service 在路由控制上作到更细粒度,没必要只是 Round-Robin 策略。
问题二:Virtual service 必需要跟 Istio traffic management 的其余资源,好比 destination rule、gateway、service entries 捆绑使用吗?
回答:否。Virtual service 自身就能够产生做用。固然它也能够跟网关,或者跟 destination rule 一块儿构造更加灵活、丰富的路由规则。
问题三:路由规则(Routing rules)跟 Destination rule 是一样的东西吗?
回答:否。路由规则是逻辑上的概念,而 Destination rule 是 Istio 的一种资源。你能够将 Destination rule 看作 Routing rules 的子集。
问题四:Virtaul service 的 hosts 字段填写什么内容?
回答:hosts 字段值是客户端向服务发送请求时使用的地址。这个地址能够是 IP 地址、DNS 名称、也能够是 k8s service 名称(短名词地址或者完整地址,好比 web-svc.default.cluster.local),若是是短名称,要求能够隐式或者显式地解析为彻底限定域名(FQDN)。固然也可使用通配符(*)前缀,从而为全部匹配的服务建立一套路由规则。虚拟服务主机实际上不必定是 Istio 服务注册表的一部分,它们只是能够可寻址的虚拟目的地而已。这样,也就能够为网格内没有可路由条目的虚拟主机流量进行建模。
4 virtual service 样例
下面介绍一个 virtual service 独立做用的例子,本例须要的资源以下:
# 调用服务的客户端
jiuxi-busybox.yaml
# 两个 web 服务器: tomcat 和 httpd。模拟两个微服务,须要被 Istio 注入,注入后就变成服务网格中的服务
jiuxi-deployment.yaml
# 定义 3 个服务:httpd-svc 指向 httpd,tomcat-svc 指向 tomcat。web-svc 同时指向 httpd 和 tomcat
jiuxi-svc.yaml
# Istio virtual service:定义虚拟服务,该虚拟服务做用在 web-svc 服务上,并设置简单的路由规则(Routing rule,而非 Destination rule)
jiuxi-vs.yaml
下面一一介绍各个资源文件明细。
4.1 jiuxi-busybox.yaml
代码以下图所示:
4.2 jiuxi-deployment.yaml
代码以下截图所示:
4.3 jiuxi-svc.yaml
代码以下截图所示:
4.4 jiuxi-vs.yaml
代码以下截图所示:
5 Istio 注入
针对客户端和 deployment 执行手工注入:
istioctl kube-inject -f jiuxi-deploy.yaml jiuxi-busybox.yaml | kubectl apply -f -
istioctl kube-inject -f jiuxi-busybox.yaml | kubectl apply -f -
6 登陆客户端验证规则生效
登陆到 busybox,而后经过以下命令都可以看到规则生效:
wget -q -O - http://web-svc:8080 # web-svc 是 k8s service。字母 O,非数字 0
wget -q -O - http://IP:8080 # IP 是 web-svc 的 ClusterIP。
7 总结
自此九析带你轻松完爆了 Istio traffic management 的 virtaul service。