ServiceEntry与WorkloadEntry
ServiceEntry:
用于将未能自动添加至网格中的服务,以手形式使得内发 现机制能够访问或路由到这些服务。
网格外部的服务
运行于 Kubernetes 上,但却非为 Istio 网格管理的 名称空间中Pod 上,或者是 Kubernetes 集群外部的 VM 或裸服务上
在ServiceEntry 中,这类服务称为 MESH_EXTERNAL
位于 网格内部但自身并未注册Istio 注册表的服务,也能够手动添加至 Istio 的内部服务注册表中
运行于 Istio 网格内部,但未能自动注册到 Istio 注册表中
在ServiceEntry 中,这类服务称为 MESH_INTERNAL
WorkLoadEntry:用于抽象非kubernetes托管的工作负载。例如虚拟机实例和裸服务器等,从而将虚拟机加入到网格中
网格外部的服务:2个nginx服务
10.0.8.101:80 ,10.0.8.111:80
域名使用nginx.myland.com
ServiceEntry实例1:无ServiceEntry时网格内部访问外部服务:
网格内的POD:

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: aa
name: aa
spec:
replicas: 1
selector:
matchLabels:
app: aa
template:
metadata:
labels:
app: aa
spec:
containers:
- image: ikubernetes/demoapp:v1.0
name: aa
在pod内/etc/hosts中增加:
10.0.8.101 nginx.myland.com
10.0.8.111 nginx.myland.com

登录kiali查看:

可以看到,访问外部应用时直接交给了PassthroughCluster集群,没有为外部应用建立Listener
ServiceEntry实例2:有ServiceEntry时网格内部访问外部服务:
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
name: nginx-external
spec:
hosts:
- nginx.myland.com #虚拟域名
addresses:
- "2.2.2.2" #虚拟地址
ports:
- number: 8091
name: http
protocol: HTTP
location: MESH_EXTERNAL
resolution: STATIC
endpoints: #后端
- address: "10.0.8.101"
ports:
http: 8091
- address: "10.0.8.111"
ports:
http: 8091
注意:由于istio默认不捕获UDP流量,但是DNS解析是UDP协议,解决这个问题有2种方法:
1、通过域名访问需要在pod内/etc/hosts中新增解析记录(只要存在nginx.myland.com的解析记录即可,解析地址随便填,目的是使istio捕获http流量)
2、在istio configmap中新增一下配置,使istio捕获DNS流量
proxyMetadata:
# Enable basic DNS proxying
ISTIO_META_DNS_CAPTURE: "true"
# Enable automatic address allocation, optional
ISTIO_META_DNS_AUTO_ALLOCATE: "true""

可以通过域名或者虚拟地址访问:

kiali上查看:也只是有一个nginx-externel,看不到外部负载信息

可以通过创建hosts为nginx.myland.com的VirtualService和DestinationRule 来做更高级的流量管理
WorkloadEntry实例:
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
name: nginx-external
spec:
hosts:
- nginx.myland.com
ports:
- number: 8091
name: http
protocol: HTTP
location: MESH_EXTERNAL
resolution: STATIC
workloadSelector:
labels:
app: nginx
---
apiVersion: networking.istio.io/v1beta1
kind: WorkloadEntry
metadata:
name: workload-nginx2001
spec:
address: "10.0.8.101"
ports:
http: 8091
labels:
app: nginx
version: "v1.20"
instance-id: Nginx2001
---
apiVersion: networking.istio.io/v1beta1
kind: WorkloadEntry
metadata:
name: workload-nginx2002
spec:
address: "10.0.8.111"
ports:
http: 8091
labels:
app: nginx
version: "v1.20"
instance-id: Nginx2002
serviceentry定义服务,workloadentry定义端点

可以看到外部更详细的信息,也可以做更高级的流量管理
ServiceEntry与WorkloadEntry的更多相关文章
- Istio ServiceEntry 引入外部服务
概念及示例 使用服务入口Service Entry来添加一个入口到 Istio 内部维护的服务注册中心.添加了服务入口后,Envoy 代理可以向服务发送流量,就好像它是网格内部的服务一样.配置服务入口 ...
- Istio 之ServiceEntry
使用服务条目资源(ServiceEntry)可以将条目添加到 Istio 内部维护的服务注册表中.添加服务条目后,Envoy 代理可以将流量发送到该服务,就好像该服务条目是网格中的服务一样.通过配置服 ...
- istio服务条目(ServiceEntry)介绍
使用服务条目资源(ServiceEntry)可以将条目添加到 Istio 内部维护的服务注册表中.添加服务条目后,Envoy 代理可以将流量发送到该服务,就好像该服务条目是网格中的服务一样.通过配置服 ...
- Istio实践(4)- 故障注入、熔断及ServiceEntry
前言:接上一篇istio多服务应用部署及调用,本文介绍通过流量管理(故障注入.请求超时等)以及ServiceEntry外部服务部署应用 1.设置服务延迟 修改springbootapp-vs-v1.y ...
- istio流量管理:非侵入式流量治理
在服务治理中,流量管理是一个广泛的话题,一般情况下,常用的包括: 动态修改服务访问的负载均衡策略,比如根据某个请求特征做会话保持: 同一个服务有多版本管理,将一部分流量切到某个版本上: 对服务进行保护 ...
- Istio(十一):向istio服务网格中引入虚拟机
目录 一.模块概览 二.系统环境 三.虚拟机负载 3.1 虚拟机负载 3.2 单网络架构 3.3 多网络架构 3.4 Istio 中如何表示虚拟机工作负载? 四.实战:向istio Mesh中引入虚拟 ...
- ASP.NET Core 源码阅读笔记(1) ---Microsoft.Extensions.DependencyInjection
这篇随笔主要记录一下ASP.NET Core团队实现默认的依赖注入容器的过程,我的理解可能并不是正确的. DependencyInjection这个项目不大,但却是整个ASP.NET Core的基础, ...
- ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【总体设计 】
本系列前面的文章我们主要以编程的角度对ASP.NET Core的依赖注入系统进行了详细的介绍,如果读者朋友们对这些内容具有深刻的理解,我相信你们已经可以正确是使用这些与依赖注入相关的API了.如果你还 ...
- ASP.NET Core中的依赖注入(5):ServicePrvider实现揭秘【补充漏掉的细节】
到目前为止,我们定义的ServiceProvider已经实现了基本的服务提供和回收功能,但是依然漏掉了一些必需的细节特性.这些特性包括如何针对IServiceProvider接口提供一个Service ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(5)(IEnumerable<>补充)
Asp.net 5的依赖注入注入系列可以参考链接: [Asp.net 5] DependencyInjection项目代码分析-目录 我们在之前讲微软的实现时,对于OpenIEnumerableSer ...
随机推荐
- ASP.NET Core - 依赖注入(一)
1. Ioc 与 DI Ioc 和DI 这两个词大家都应该比较熟悉,这两者已经在各种开发语言各种框架中普遍使用,成为框架中的一种基本设施了. Ioc 是控制反转, Inversion of Contr ...
- JZOJ 2020.07.30【NOIP提高组】模拟
总结 本场比赛很不负责对待 暴力都没怎么打 一个半小时后才开始打题 很悲剧的只有 \(23+11+36=70\) 分 \(T1\) 4300. 装饰大楼 题目 略 思路 很无聊的找规律题 考场弃疗 \ ...
- JZOJ 1090. 【SDOI2009】晨跑
题目 略,luogu上有 解析 一眼费用流 然而怎么建图? 首先我们要挖掘题中的限制条件和性质 一个点只能经过一次 能走的天数最长 满足第二条的条件下走过的路程最短 那么显然是最小费用最大流了 对于后 ...
- Centos7基础知识--------创建文件夹、彻底删除文件夹、文件命令
转载博客园: https://www.cnblogs.com/guns/p/13807285.html
- Canvas:绘制圆形
函数 arc(x, y, radius, startAngle, endAngle, counterclockwise) 参数名 描述 x.y 圆心坐标轴 radius 圆的半径 startAngle ...
- 把MyBatis当项目一样,讲透源码的技术书籍!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 为啥?因为这些年,就很少有人能自主意识到,如何提升编码质量! 但讲屁话没有用,想学好编程突破阶 ...
- [网鼎杯2020]you_raise_me_up
[网鼎杯2020]you_raise_me_up 目录 [网鼎杯2020]you_raise_me_up 题目 分析 解法一:sage discrete_log()使用示例 补充 解法二:python ...
- Java虚拟机中 -XX:+PrintFlagsFinal与XX:+PrintCommandLineFlags 中MaxHeapSize的值不同的原因
size_t CollectorPolicy::compute_heap_alignment() { // The card marking array and the offset arrays f ...
- springboot自带的MD5加密
//md5DigestAsHex返回的是string类型 DigestUtils.md5DigestAsHex(user.getPassword().getBytes(StandardCharsets ...
- VUE学习-元素过渡
单元素过渡 appear 初始渲染 通过 appear attribute 设置节点在初始渲染的过渡 appear + css <transition appear appear-class=& ...