专栏首页云原生实验室Istio 中 VirtualService 的注意事项

Istio 中 VirtualService 的注意事项

Istio 要求集群中 VirtualService 定义的所有目标主机都是唯一的。当使用目标主机的短名称时(不包含 '.' 的目标主机,例如使用 reviews,而不是 reviews.default.svc.cluster.local),Istio 会将该短名称转换为 VirtualService 规则所在的命名空间的 FQDN,而不是转换为目标主机所在的命名空间的 FQDN。因此,当在不同的命名空间中定义 VirtualService 资源时允许目标主机的短名称重复。当你的目标主机包含 * 通配符前缀、IP 地址或 Web 地址时,VirtualService 不会将其视为短名称,也就不会尝试将其转换为 FQDN。反正无论如何,目标主机必须是唯一的。

1. 目标主机冲突示例

下面举几个目标主机冲突的例子,以帮助大家加深对这方面的理解。

示例 1

下面两个 VirtualService 的目标主机的 FQDN 分别是 reviews.foo.svc.cluster.localreviews.bar.svc.cluster.local,这是允许的。

示例 2

下面两个 VirtualService 的目标主机的 FQDN 都是 reviews.default.svc.cluster.local,这是不推荐的,会导致不确定的路由行为。

优化方案请参考下文。

示例 3

下面这种写法也是不推荐的,因为它在两个不同的 VirtualService 资源中定义了相同的 Web 地址,会导致路由冗余。

优化方案请参考下文。

2. 优化方案

这里给出两个优化准则,可以改进上文的不恰当写法。

使目标主机唯一

可以将冲突的 VirtualService 中定义的目标主机更改为唯一的。以下的 VirtualServices 具有唯一的目标主机 reviewsratings,可以用来优化上面示例 2 的写法。

合并冲突的 VirtualService

可以将冲突的 VirtualService 中定义的路由规则合并到同一个 VirtualService 中。下面的 VirtualService 可以解决示例 3 的问题,因为规则已合并,并且仅保留具有目标主机 google.com 的单个 VirtualService。

本文分享自微信公众号 - 云原生实验室(cloud_native_yang),作者:杨传胜

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kubernetes 设计与开发原则

    Kubernetes 正迅速成为在分布式系统中部署工作负载的事实标准。在这篇文章中,我将通过揭示其底层的设计原则,帮助您更深入地了解 Kubernetes。

    米开朗基杨
  • 优化生产环境中的 Kubernetes 资源分配

    我和 Kubernetes 的初次接触就涉及到将应用容器化并部署到生产环境集群中,当时我的工作重点是把 buffer 吞吐量最高(低风险)的某个端点从单个应用程...

    米开朗基杨
  • 教你如何优雅地魔改 Grafana 主题,太实用了!

    难道没有别的办法了?办法还是有的,只不过稍微有点繁琐,但不复杂。今天就来给大家分享一种不需要改源码的方法,老少皆宜,按照我的步骤来,最后一定能搞定。这里不得不提...

    米开朗基杨
  • jib打包docker镜像实战

    codecraft
  • Google Plus 文本提取与分析3

    斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Par...

    伏草惟存
  • 2015年度CCF-腾讯犀牛鸟基金项目申报指南

    2015 CCF-腾讯犀牛鸟基金项目申报指南 第一条 总则:在信息技术发展的重要演进阶段,CCF和腾讯将支持信息技术领域的青年学者开展具备行业创新、技术引领的科...

    腾讯高校合作
  • 今日头条三面面经

    4.       优先队列的底层数据结构?插入和删除一个节点的时间复杂度是多少? 

    牛客网
  • Python 技术篇-全局变量引用,local variable referenced before assignment.解决办法

    local variable 'a' referenced before assignment 就是说变量a在使用前没有被声明

    小蓝枣
  • 从零开始学C++之虚函数与多态(一):虚函数表指针、虚析构函数、object slicing与虚函数、C++对象模型图

    一、多态 多态性是面向对象程序设计的重要特征之一。 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。 多态的实现: 函数重载 运算符...

    s1mba
  • Linux安装软件包的三种方法,rpm包介绍,rpm工具用法,yum工具用法,yum搭建本地仓库

    rpm工具类似于Windows的exe文件,可以直接进行安装,而且安装路径和文件名一般都是固定好的。在CentOS和Red Hat下的安装包一般称为rpm包。y...

    端碗吹水

扫码关注云+社区

领取腾讯云代金券