首页 > 其他分享 >《istio-in-action系列》3. istio VirtualService 和 k8s Ingress

《istio-in-action系列》3. istio VirtualService 和 k8s Ingress

时间:2023-02-03 18:01:34浏览次数:60  
标签:Ingress prod VirtualService istio 域名 k8s

《istio-in-action系列》3. istio VirtualService 和 k8s Ingress

可以简单的认为 Ingress 是 k8s 中提出的流量入口转发的一个 标准定义规范(只是认为)。 怎么实现, 需要根据不同的 IngressController 的逻辑。

VirtualService 的部分功能就承担了 Ingress 的这一功能。

1. Ingress 与 VirtualService 的定义

k8s Ingress 配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  creationTimestamp: null
  name: simple
spec:
  rules:
  - host: foo.com  # 访问的域名
    http:
      paths:
      - backend:
          service:
            name: svc1  # 后端服务名称
            port:
              number: 80
        path: /bar  # 匹配的路由
        pathType: Exact  # 匹配模式

对应的 istio virtual service 配置如下

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vs-prods
  namespace: myistio
spec:
  hosts:
  - svc-prod    # 访问地址
  http:
  - route:
    - destination:
        host: svc-prod  # 后端服务名称

可以看到, VirtualService 的配置大致与 Ingress 相似。 这里 VS 中没有指定 path 规则, 将在以后路由转发中提到。

https://istio.io/latest/zh/docs/concepts/traffic-management/#the-hosts-field

虚拟服务主机名可以是 IP 地址、DNS 名称,或者依赖于平台的一个简称(例如 Kubernetes 服务的短名称), 隐式或显式地指向一个完全限定域名(FQDN) 。您也可以使用通配符(“*”)前缀,让您创建一组匹配所有服务的路由规则。虚拟服务的 hosts 字段实际上不必是 Istio 服务注册的一部分,它只是虚拟的目标地址。这让您可以为没有路由到网格内部的虚拟主机建模。

隐式或显式地指向一个完全限定域名(FQDN): 即, 客户端 需要能解析该域名。 因此在内网时通常需要使用 service name, k8s coredns 完成了域名解析。 在使用非集群地址时 (ex. 公网域名时) 可以通过 dns 解析, 也可以是修改 /etc/hosts 文件。

2. 测试 VirtualService

使用如如下命令, 创建 VirtualService

kubectl apply -f istio-samples/03/

部署完成后, 进入到 toolbox 请求 svc-prod

curl svc-prod/prod/list

{"data":{"Name":"istio in action","Price":300,"Reviews":null},"version":"v1.0.0"}

这个时候能请求, 但是结果看不出什么有什么特别s, 打开之前部署的 kiali

进入到 Graph -> namespace (myistio) -> traffic -> service grpha 就可以看到流量请求了

互相吹捧, 共同进步

欢迎和我一起学习进步, 如果有什么问题, 可以给我私信留言。 或者

  1. 加我好友 线下讨论。
  2. 关注我的 公众号 - Go与云原生 或者 B站账户 - 老麦胖熊猫 订阅最新文章和更多精彩内容

标签:Ingress,prod,VirtualService,istio,域名,k8s
From: https://blog.51cto.com/bashrc/6035977

相关文章

  • helm与ingress
    https://helm.sh/zh/docs/intro/install/https://kubernetes.github.io/ingress-nginx/deploy/......
  • Flomesh Ingress 使用实践(三)多租户 Ingress
    背景在当下的云计算时代,我们经常会听到“租户”、“多租户”。“租户”是多租户架构技术中的概念,这种技术是用来处理多个组织共用同一个系统或者组件时的数据隔离性。在Ku......
  • 《istio-in-action 系列》 1. 安装 docker-k3s-istio 开发环境
    《istio-in-action系列》1.安装docker-k3s-istio开发环境1.安装docker我这里使用的是​​ubuntu20.04LTS​​操作系统sudoaptupdatesudoaptinstalldocker.io......
  • k8s部署nginx-ingress
    Kubernetes暴露服务的有三种方式,分别为LoadBlancerService、NodePortService、Ingress。官网对Ingress的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是......
  • Istio 服务注册与发现
    基于Kubernetes迅速发展的Istio在服务注册与发现组件上支持最完善的自然也为Kubernetes,这依托于Kubernetes对Pod、Service等资源的监控,为服务之间的调用提供弹性、......
  • Istio可观测性(监控)
    传统监控系统监控系统通常由指标采集子系统和数据处理子系统组成。指标采集子系统主要负责信息采集、过滤、汇总和存储;数据处理子系统主要负责数据分析、展现、预警和告警等......
  • Istio 服务注册与发现
    基于Kubernetes迅速发展的Istio在服务注册与发现组件上支持最完善的自然也为Kubernetes,这依托于Kubernetes对Pod、Service等资源的监控,为服务之间的调用提供弹性......
  • Istio与SpringCloud对比
    Istio数据平面的高性能智能网络代理,它是基于Envoy改进的Istio-Proxy,控制和协调了被代理服务的所有网络通信,同时也负责收集和上报相关的监控数据。也就是说,代理服务跟外......
  • 使用Consul作为Istio的注册中心
    默认istio使用k8s作为注册中心,k8s的service、endpoint对应于服务、实例。针对一些还未接入到服务网格的SpringCloud服务,其使用的注册中心可能是consul,如何让服务网格上的......
  • Istio可观测性(监控)
    传统监控系统监控系统通常由指标采集子系统和数据处理子系统组成。指标采集子系统主要负责信息采集、过滤、汇总和存储;数据处理子系统主要负责数据分析、展现、预警和告警......