第二十章 九析带你轻松完爆 Istio - virtual service 简述

系列文章: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 前言

        若是你对博客有任何疑问,请告诉我。1.png


2 邀约

        你能够从 b 站搜索 “九析”,获取免费的、更生动的视频资料:clipboard2.png


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

        代码以下图所示:clipboard3.png

4.2 jiuxi-deployment.yaml

        代码以下截图所示:clipboard4.png

4.3 jiuxi-svc.yaml

        代码以下截图所示:clipboard5.png

4.4 jiuxi-vs.yaml

        代码以下截图所示:clipboard6.png


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。

相关文章
相关标签/搜索