五分钟k8s实战-Istio 网关

1170da168623d56dd7e83f8060603fcf.png

istio-03.png

在上一期 k8s-服务网格实战-配置 Mesh 中讲解了如何配置集群内的 Mesh 请求,Istio 同样也可以处理集群外部流量,也就是我们常见的网关。c35ddee186aaacb5b1414fb11ad8ddee.png

其实和之前讲到的k8s入门到实战-使用Ingress Ingress 作用类似,都是将内部服务暴露出去的方法。

只是使用 Istio-gateway 会更加灵活。1c82ec5abf92bf0de3862022ad8bfaec.png

这里有一张功能对比图,可以明显的看出 Istio-gateway 支持的功能会更多,如果是一个中大型企业并且已经用上 Istio 后还是更推荐是有 Istio-gateway,使用同一个控制面就可以管理内外网流量。

创建 Gateway

开始之前首先是创建一个 Istio-Gateway 的资源:

apiVersion: networking.istio.io/v1alpha3  
kind: Gateway  
metadata:  name: istio-ingress-gateway  namespace: default  
spec:  servers:  - port:  number: 80  name: http  protocol: HTTP  hosts:  - 'www.service1.io'  selector:  app: istio-ingressgateway #与现有的 gateway 关联  istio: ingressgateway

其中的 selector 选择器中匹配的 label 与我们安装 Istio 时候自带的 gateway 关联即可。

# 查看 gateway 的 label
k get pod -n istio-system
NAME                                    READY   STATUS
istio-ingressgateway-649f75b6b9-klljw   1/1     Runningk describe pod istio-ingressgateway-649f75b6b9-klljw -n istio-system |grep Labels
Labels:           app=istio-ingressgateway
6c422b254b6356af337d090d63a55155.png
image.png

这个 Gateway 在我们第一次安装 Istio 的时候就会安装这个组件。


这个配置的含义是网关会代理通过 www.service1.io 这个域名访问的所有请求。

之后需要使用刚才的 gateway 与我们的服务的 service 进行绑定,这时就需要使用到 VirtualService

apiVersion: networking.istio.io/v1alpha3  
kind: VirtualService  
metadata:  name: k8s-combat-istio-http-vs  
spec:  gateways:  - istio-ingress-gateway # 绑定刚才创建的 gateway 名称 hosts:  - www.service1.io
http:
- name: default  route:  - destination:  host: k8s-combat-service-istio-mesh  #service 名称port:  number: 8081  subset: v1

这个和我们之前讲到的 Mesh 内部流量时所使用到的 VirtualService 配置是一样的。

这里的含义也是通过 www.service1.io 以及 istio-ingress-gateway 网关的流量会进入这个虚拟服务,但所有的请求都会进入 subset: v1 这个分组。

这个的分组信息在上一节可以查询到:

apiVersion: networking.istio.io/v1alpha3  
kind: DestinationRule  
metadata:  name: k8s-combat-service-ds  
spec:  host: k8s-combat-service-istio-mesh  subsets:  - name: v1  labels:  app: k8s-combat-service-v1  - name: v2  labels:  app: k8s-combat-service-v2

之后我们访问这个域名即可拿到响应,同时我们打开 k8s-combat-service-istio-mesh service 的 Pod 查看日志,会发现所有的请求都进入了 v1, 如果不需要这个限制条件,将 subset: v1 删除即可。

curl  http://www.service1.io/ping

本地需要配置下 host: 127.0.0.1 www.service1.io

269df780b186c748816ec25859688b02.png
image.png

还有一点,我们需要拿到 gateway 的外部IP,才能将 IP 和刚才的域名www.service1.io 进行绑定(host,或者是域名管理台)。

如果使用的是 docker-desktop 自带的 kubernetes 集群时候直接使用 127.0.0.1 即可,默认就会绑定上。

如果使用的是 minikube 安装的,那需要使用 minikube tunnel 手动为 service 为LoadBalancer 类型的绑定一个本地 IP,具体可以参考文档:https://minikube.sigs.k8s.io/docs/tasks/loadbalancer

如果是生产环境使用,云服务厂商会自动绑定一个外网 IP。

原理

726fa434e89992d33754da491c8ff81f.png
image.png

这个的访问请求的流程和之前讲到的 kubernetes Ingress 流程是类似的,只是 gateway 是通过 VirtualService 来路由的 service,同时在这个 VirtualService 中可以自定义许多的路由规则。

总结

服务网格 Istio 基本上讲完了,后续还有关于 Telemetry 相关的 tracelogmetrics 会在运维章节更新,也会和 Istio 有所关联。感兴趣的朋友可以持续关注。

本文的所有源码在这里可以访问:https://github.com/crossoverJie/k8s-combat

PS:最近也在更新视频号,也会有一些技术干货,动动小手帮主播点播关注

4a8af9c30c716649c66b205e7a5d8087.jpeg

往期推荐

技术阅读周刊第第5️⃣期

k8s-服务网格实战-配置 Mesh(灰度发布)

k8s-服务网格实战-入门Istio

如何优雅重启 kubernetes 的 Pod

62da3ebbc18add28b7e4a6e41550baf6.gif

点分享

a7e8a35da89d77bb88bce38b415b869c.gif

点收藏

2528c391e90716089b250a80af4c364e.gif

点点赞

119c175dd3995186bdd30eeef485d7ac.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不删除D盘的情况下扩容c盘(扩容成功

思路:在d盘新建分区新建f盘,把d盘的东西移到f盘里,在原有d盘建立未分配区,把f盘改名为d盘,C盘扩容,可以直接扩,详细教学转知乎:C盘扩容(Win11版) (qq.com) 问…

网络安全准入技术之MAC VLAN

网络准入控制作为主要保障企业网络基础设施的安全的措施,特别是对于中大型企业来说,终端类型多样数量激增、终端管理任务重难度大、成本高。 在这样的一个大背景下,拥有更灵活的动态识别、认证、访问控制等成为了企业网络安全的最核心诉求之…

shell之service命令

service命令 service命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、查看状态(status)等。这个命令主要在基于Systemd的Linux发行版中使用&a…

UE4动作游戏实例RPG Action解析一:角色移动,旋转,动画创建,创建武器,及武器配置

文末有git地址 一、角色移动,摄像机旋转 1.1、官方RPGAction Demo下载地址: ​ 1.2、在场景中创建一个空的角色 创建一个Character蓝图和一个PlayerController蓝图,添加弹簧臂组件和摄像机,并为网格体添加上一个骨骼网格体 ​ 1.3、如何让这个角色出现在场景中, 创建一…

【giszz笔记】产品设计标准流程【6】

目录 六、组织评审 1.评审的类型 2.评审的人员——谁参加评审 3.评审的核心——怎么提问 & 答案谁说了算 4.评审的流程——前中后三部曲 5.评审的标的——漂亮的靶子 6.避免被“烤”问的一些技巧 7.搞几次评审比较好 这个产品设计系列,陆陆续续写了6篇了…

网络安全之了解安全托管服务(MSS)

数字化已深入千行百业。数字化将给各行各业带来巨大的变化,现实世界和虚拟世界也将联系得更加紧密。随着云计算、大数据等新技术结合企业级业务的落地,数字时代的安全面临着前所未有的新挑战。近年来,网络安全问题日益严重,在企业…

Linux入门(三)

Linux grep 命令 1: 作用 ​ grep是一种文本搜索工具,它能使用特定的搜索模式,包括[正则表达式]搜索文本,并默认输出匹配行。 ​ windows类似的命令是findstr. 2:语法 grep -options(参数)…

第十六篇-Awesome ChatGPT Prompts-备份

Awesome ChatGPT Prompts——一个致力于提供挖掘ChatGPT能力的Prompt收集网站 https://prompts.chat/ 2023-11-16内容如下 ✂️Act as a Linux Terminal Contributed by: f Reference: https://www.engraved.blog/building-a-virtual-machine-inside/ I want you to act as a…

python的文件目录操作 1

我们在实际开发中,经常需要对文件进行读取、遍历、修改等操作,通过 python 的标准内置os模块,能够以简洁高效的方式完成这些操作。常见的操作整理如下: 文件夹操作:包括文件夹的创建、修改(改名/移动&…

WPF创建自定义控件编译通过但是找不到资源

报错: 原因: 路径写错了: 不是这样: Source"pack://application:,,,/Controls/Styles/xTabControl.xaml" 而是这样: Source"pack://application:,,,/项目名;component/Controls/Styles/xTabControl.xaml …

【设计原则篇】聊聊接口隔离原则

是什么 客户端不应该强迫依赖它不需要的接口,客户端可以理解为接口的调用者或者使用者。接口其实就是一种规范,比如手机都是同样的接口,那么充电器就可以使用。 接口从细的层面来说的话,其实分三种,一组API接口集合、单…

idea一键打包docker镜像并推送远程harbor仓库的方法(包含spotify和fabric8两种方法)--全网唯一正确,秒杀99%水文

我看了很多关于idea一键打包docker镜像并推送harbor仓库的文章,不论国内国外的,基本上99%都是瞎写的, 这些人不清楚打包插件原理,然后就是复制粘贴一大篇,写了一堆垃圾,然后别人拿来也不能用。 然后这篇文…

pm2使用

常用命令 pm2 delete/stop/restart/start/list/info/monit/log

土地利用强度(LUI)综合指数

土地利用强度的概念可以解释为某一时间特定区域内人类活动对土地利用强度的干扰程度[1],其不仅反映不同土地利用类型本身的自然属性,也体现了人类利用土地的深度和广度,进而揭示在人类社会系统干扰下土地资源自然综合体自然平衡的保持状态[2]…

QGIS003:【05高级数字化工具栏】-要素移动、修改、合并操作

摘要:QGIS地图导航工具栏包括激活高级数字化工具、移动要素、旋转要素、缩放要素、简化要素、添加环、添加部件、填充环、删除环、删除部件、重塑要素、偏移曲线、反转线、裁剪/扩展要素、分割要素、分割部件、合并所选要素、合并所选要素的属性、旋转点符号等选项&…

人工智能发展前景

随着人工智能的快速发展,这个行业对人才的需求也在不断增长。越来越多的有志之士开始关注人工智能,希望通过自学获得相关技能,进而在人工智能领域找到心仪的职业。本文将探讨人工智能职业发展的前景,并为大家提供自学人工智能的途…

9步打造个人ip

什么是个人IP? 就是一个人创造出来的属于自己的有个性有价值的,能让他人记住你,信任你,认可你的东西。 如何强化个人IP呢? 需要一些必要的条件如专业性、耐心、勤奋等等要知道,打造IP是一个见效慢的过程&am…

2311rust,到50版本更新

1.46.0稳定版 改进const fn 现在,可在const fn中使用几个核心语言功能: 1,if,iflet和match 2,while,whilelet和loop 3,&&和||符号 4,还可转换为切片: const fn foo() {let x [1, 2, 3, 4, 5];//转换数组为切片let y: &[_] &x; }虽然这些功能并不新鲜,但可…

NSSCTF第12页(3)

[NSSCTF 2nd]php签到 首先,代码定义了一个名为 waf 的函数,用于执行一个简单的文件扩展名检查来防止上传恶意文件。 $black_list 是一个存储不允许的文件扩展名的数组,如 “ph”、“htaccess” 和 “ini”。 pathinfo($filename, PATHINF…

启动docker服务

systemctl start docker sh /data/soft/restart.sh 访问gogs 192.168.101.65:10880