istio笔记03--快速上手多集群mesh

istio笔记03--快速上手多集群mesh

  • 介绍
  • 安装部署
    • 1. 部署集群
    • 2. 部署 metallb
    • 3. 安装istio
    • 4. 配置mesh
  • 验证
  • 注意事项
  • 说明

介绍

作为当前最流行的服务网格产品,istio已经在很多企业内部投入使用。在企业中为了提高服务的高可用、故障转移等能力,通常需要打通几个集群的mesh。
本文基于kind部署两个k8s集群,使用metallb实现入口LB,并且打通两个集群的mesh.

安装部署

1. 部署集群

1.1 安装集群

# kind create cluster -n k8s-130-a --image kindest/node:v1.30.0
# kind create cluster -n k8s-130-b --image kindest/node:v1.30.0

1.2 导出配置

# kind get kubeconfig --name=k8s-130-a > k8s-130-a.config
# kind get kubeconfig --name=k8s-130-b > k8s-130-b.config

上述安装会导致两个集群svc和pod子网相同,出现ip重复的情况,建议通过配置文件安装kind

# kind create cluster --config k8s-130-a.yaml
# kind create cluster --config k8s-130-b.yamlvim k8s-130-a.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: k8s-130-a
networking:podSubnet: "172.18.1.0/24"serviceSubnet: "172.18.11.0/24"
nodes:
- role: control-planeimage: kindest/node:v1.30.0
#- role: workervim k8s-130-b.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: k8s-130-b
networking:podSubnet: "172.18.2.0/24"serviceSubnet: "172.18.12.0/24"
nodes:
- role: control-planeimage: kindest/node:v1.30.0
#- role: worker

2. 部署 metallb

参考 metallb.io/installation
docker network inspect kind 发现默认网段为 172.18.0.0/16 , 此处设置LB IP网段在该范围之内即可
安装

1) 安装
# kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml
2)vim 130-a-lb-ip-pool.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: lb-ip-poolnamespace: metallb-system
spec:addresses:- 172.18.101.10-172.18.101.19
---
##配置L2Advertisement,用于地址宣告
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:name: 130-a-advnamespace: metallb-system
spec:ipAddressPools: - lb-ip-pool3)vim 130-b-lb-ip-pool.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: lb-ip-poolnamespace: metallb-system
spec:addresses:- 172.18.101.20-172.18.101.29
---
##配置L2Advertisement,用于地址宣告
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:name: 130-b-advnamespace: metallb-system
spec:ipAddressPools: - lb-ip-pool

安装成功后可以通过 kubectl -n metallb-system get IPAddressPool 看到集群a和集群b都正常获取到对应的ip-pool信息
在这里插入图片描述
测试:

1) 创建ng
# kubectl create deploy nginx --image=nginx:1.23
2)创建LB类型的SVC
apiVersion: v1
kind: Service
metadata:name: nginxannotations:metallb.io/loadBalancerIPs: 172.18.101.11
spec:ports:- port: 80targetPort: 80selector:app: nginxtype: LoadBalancer

如下图,svc按照预期获取到lb ip
在这里插入图片描述
在浏览器也能正常通过lb访问nginx实例
在这里插入图片描述

3. 安装istio

3.1. 生成 istio 集群 1.23 部署文件

istioctl manifest generate --set revision=1-23 -f istiod-1.23.yaml -f production/istiod-overlay.yaml -f production/kind-k8s-130-a/istiod-overlay.yaml > production/kind-k8s-130-a/install-1-23.yaml

3.2. 检查部署资源

cd production/kind-k8s-130-a
kubectl apply -f install-1-23.yaml --dry-run=client

3.3. 部署

kubectl create namespace istio-system
kubectl apply -f install-1-23.yaml

3.4. 设置 tag

打一个default的tag,如果要做到金丝雀发布,需要给最新的加上canary标签
istioctl tag set -r 1-23 canary --overwrite
istioctl tag set -r 1-23 default --overwrite

添加tag后可以通过istioctl tag list查看当前istio的tag情况
在这里插入图片描述
可以通过 kubectl get po -n istio-system 查看istio是否基本就绪
在这里插入图片描述
通过 kubectl label namespace default istio-injection=enabled 给default命名空间开启sidecar注入,重启nginx pod后发现正常注入sidecar了。
在这里插入图片描述
注意:本次istio安装目录结构如下

~/software/istio/deploy$ tree
.
├── istiod-1.23.yaml
└── production├── istiod-overlay.yaml├── kind-k8s-130-a│   ├── install-1-23.yaml│   └── istiod-overlay.yaml└── kind-k8s-130-b├── install-1-23.yaml└── istiod-overlay.yaml其中istiod-1.23.yaml为当前版本基础配置,此处简单从istio-1.23.2/manifests/profiles/default.yaml 中拷贝即可,实际使用的时候需要根据企业特性设置各个组件和mesh的特有配置;
production/istiod-overlay.yaml 作为生产环境的基础配置;
production/kind-k8s-130-a/istiod-overlay.yaml 作为指定集群的特有配置;

此处通过production/istiod-overlay.yaml 简单定义了生产环境的meshID和 网络名称,实际中可以通过${env}//istiod-overlay.yaml 来定义各个环境的基础配置,例如组件的资源参数
在这里插入图片描述

此处简单定义了kind-k8s-130-a的集群名称,实际中可以通过env/{env}/env/{cluster-name}/istiod-overlay.yaml 来精细化配置各个集群的属性。
在这里插入图片描述

4. 配置mesh

4.1 生成ca证书

make -f tools/certs/Makefile.selfsigned.mk root-ca
make -f tools/certs/Makefile.selfsigned.mk kind-k8s-130-b-cacerts
make -f tools/certs/Makefile.selfsigned.mk kind-k8s-130-a-cacerts

4.2 创建ca证书

# kc kind-k8s-130-a
kubectl create secret generic cacerts -n istio-system \--from-file=kind-k8s-130-a/ca-cert.pem \--from-file=kind-k8s-130-a/ca-key.pem \--from-file=kind-k8s-130-a/root-cert.pem \--from-file=kind-k8s-130-a/cert-chain.pem# kc kind-k8s-130-b
kubectl create secret generic cacerts -n istio-system \--from-file=kind-k8s-130-b/ca-cert.pem \--from-file=kind-k8s-130-b/ca-key.pem \--from-file=kind-k8s-130-b/root-cert.pem \--from-file=kind-k8s-130-b/cert-chain.pem

4.3 生成remote-secret
此处130-a集群容器ip为172.18.0.4,130-b集群容器ip为172.18.0.2

kubectx kind-k8s-130-a
istioctl create-remote-secret --name=kind-k8s-132-a --server https://172.18.0.4:6443 >kind-k8s-130-a.yaml 
kubectx kind-k8s-130-b
istioctl create-remote-secret --name=kind-k8s-132-b --server https://172.18.0.2:6443 >kind-k8s-130-b.yamlkubectx kind-k8s-130-a
kubectl apply -f kind-k8s-130-b.yaml
kubectx kind-k8s-130-b
kubectl apply -f kind-k8s-130-a.yaml

创建完成后,可以通过来查看两个集群中的mesh,如下图集群a和集群b互相打通了mesh
在这里插入图片描述

验证

通过 istioctl remote-clusters 可以发现两个集群之间正常
在这里插入图片描述
如下图,在集群b的ubuntu pod中同时发现了集群a和集群b中的nginx实例,即2个集群的mesh正常打通
在这里插入图片描述

注意事项

  1. 默认使用kind创建两个集群pod子网划分是相同的,因此验证多集群mesh的时候最好指定为不同的子网。
  2. kind拉起的pod报错 failed complete: too many open files
    kind known-issues/#pod-errors-due-to-too-many-open-files
    解决方法: 进入容器内将如下两个参数保存到/etc/sysctl.conf即可
    # echo "fs.inotify.max_user_watches = 524288" >> /etc/sysctl.conf 
    # echo "fs.inotify.max_user_instances = 512" >> /etc/sysctl.conf
    # sysctl -p
    

说明

系统软件:
ubuntu 24.04.Desktop
kind v0.29.0
docker 28.3.3
istio 1.23.2
K8s v1.30.0
metallb v0.15.2

参考文档:
kind docs/user/quick-start/
基于istio实现多集群流量治理
istio Install Multi-Primary
metallb.io

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

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

相关文章

【华为仓颉编程语言】运行第一个仓颉程序

欢迎来到仓颉编程语言的第一个实战课程。 上节课我们成功安装了仓颉工具链,今天让我们一起编写并运行第一个仓颉程序。相信很多同学都还记得学习第一门编程语言时写的"Hello World"程序,那种看到程序成功运行的激动心情。今天,我们…

移动互联网与社交红利下的中国营销技术市场变革:定制开发开源AI智能名片S2B2C商城小程序的战略价值与实践路径

摘要在移动互联网渗透率突破90%、社交媒体用户规模达12亿的背景下,中国营销技术市场正经历结构性变革。私域流量运营、SCRM系统部署、KOC生态构建等新兴模式与大数据、AI技术的深度融合,催生出"定制开发开源AI智能名片S2B2C商城小程序"这一创新…

【LLM】大模型投机采样(Speculative Sampling)推理加速

note 投机采样是一种可以从根本上解码计算访存比的方法,保证和使用原始模型的采样分布完全相同。它使用两个模型:一个是原始目标模型,另一个是比原始模型小得多的近似模型。近似模型用于进行自回归串行采样,而大型模型则用于评估…

【Spring Boot 快速入门】八、登录认证(二)统一拦截

目录统一拦截Filter 过滤器快速入门详解Filter 进行登录校验Interceptor 拦截器快速入门详解Interceptor 进行登录校验全局异常处理统一拦截 Filter 过滤器 快速入门 Filter 是 Java Web 三大组件之一,另外两个是 Servlet 和 Listener(监听器&#xf…

自动化测试篇--BUG篇

目录 一.软件测试的生命周期 二.bug是什么? 三.如何描述一个bug? 四.bug的级别 五.bug的生命周期 六.测试与开发产生争执怎么办?(重要!!!) 一.软件测试的生命周期 软件测试人员…

Irix HDR Pro:专业级 HDR 图像处理软件

Irix HDR Pro 是一款功能强大的高动态范围(HDR)图像处理软件,专为摄影师和图像处理爱好者设计。它能够将多张曝光不同的照片合成为一幅高质量的 HDR 图像,展现更广泛的亮度范围和色彩细节。以下是 Irix HDR Pro 的详细介绍&#x…

4G/5G无线电单元系统

4G/5G无线电单元系统 ADI公司的核心技术和领域专业知识帮助客户在全球范围内规划、设计、打造更出色的高性能通信系统。 我们的无线电单元(RU)设计平台利用新一代技术来提供高性能解决方案,帮助客户消除设计障碍、缩短产品开发周期,加快产品上市时间。 价…

文件服务磁盘空间不足基于minio扩容和归档企业实战

文章目录一、业务背景二、基于minio的扩容扩容方案一:对等扩容/横向扩容(已验证通过)适用场景方案简述扩容方案二:增加单个minio节点的磁盘(已验证通过)适用场景方案简述三、minio数据归档归档方案一&#…

任务发布悬赏查询管理地推抖音快手微信任务赚佣金网站源码功能详解二开

功能详细说明 (一)登录与注册 1.登录:打开系统用户端,输入已注册的手机号,若为首次登录或忘记密码,可通过 “找回密码” 功能,按提示验证身份后重置密码登录。 2.注册:点击 “注册”…

DCDC与MCU芯片在硬件DPI系统中的协同优化与效能提升

摘要深度包检测(DPI)技术在现代通信网络中起着至关重要的作用,尤其在电信运营商的网络流量监控、计费和安全防护等方面。随着网络流量的爆炸式增长,硬件DPI系统逐渐成为提升网络管理效率的关键。本文综述了DCDC电源芯片和MCU在硬件…

《Day3-PyTorch 自动微分入门:从计算图到梯度下降的实践指南》

八、自动微分自动微分模块torch.autograd负责自动计算张量操作的梯度,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,可以实现网络权重参数的更新,使得反向传播算法的实现变得简单而高效。1. 基础概念张量Torch中一切皆为张量…

三生原理可能如何解释黎曼ζ函数零点对齐?

AI辅助创作:三生原理通过素数分类的几何对称性与生成规则的动态约束,解释黎曼ζ函数零点在临界线(Re(s)1/2)上的对齐机制,其核心逻辑如下:一、生成元基底构建相位对称性‌阴/阳元的初始对称性‌阴元&#x…

TSMaster-C小程序使用

打开同星的TSMaster,推荐用32版本的,比64更稳定。同星的TSMaster的C小程序支持用户嵌入代码来控制CAN报文的收发逻辑。便于开发。点击设计里面的C小程序。 比如我现在想用小程序来实现继电器0先开后关开1s关1s,然后继电器1开1s关1s…如此往复…

前端懒加载技术全面解析

懒加载(Lazy Loading)是一种优化前端性能的重要技术,核心思想是延迟加载非关键资源,只在需要时加载它们。 一、懒加载的基本原理 懒加载的核心思想是通过以下方式优化性能: 减少初始加载实践: 只加载首屏所需资源 节省带宽和内存: 避免加载用户可能不会查看的内容 提高…

疯狂星期四文案网第34天运营日记

网站运营第34天,点击观站: 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 今日访问量 今日搜索引擎收录情况 必应收录249 百度收录6 谷歌收录正常 网站优化点 新增十几篇文案 思考新文案类型,感觉星期四太单一…

VisionPro常用标定方式

VisionPro常用标定方式 标定类型对比与原理标定类型最少点数数学原理适用场景特点六点标定3点(推荐6点)仿射变换(线性)低畸变镜头,XY平移旋转场景冗余点提升精度九点标定3点(推荐9点)仿射变换&a…

通用AGI到来,记忆仍需要一点旧颜色

那天清晨,我像往常一样被手机的闹铃叫醒。可屏幕上的文字不再是冰冷的数字,而是一句温柔的问句:“要不要多睡七分钟?我替你调整了地铁班次,还顺手把早餐店的面包留了一个。”我愣了足足十秒,才想起昨晚新闻…

智能升级新纪元:基于Deepoc具身模型外拓开发板的除草机器人认知进化

在智能家居与智慧农业蓬勃发展的今天,传统除草机器人正面临一场前所未有的技术革新。本文介绍一种创新的外拓开发板解决方案,通过语音识别、大模型意图分析、视觉场景感知与自主决策能力的融合,无需破坏原有机器基础即可实现除草机器人的智能…

[激光原理与应用-202]:光学器件 - 增益晶体 - Nd:YVO₄增益晶体的制造过程与使用过程

一、Nd:YVO₄增益晶体生长流程图及关键步骤说明流程图┌───────────────┐ ┌───────────────┐ ┌───────────────┐│ 原料准备与混合 │ → │ 高温固相反应 │ → │ 多晶料块制备 │└───────────────┘ └─…

UniApp Vue3 TypeScript项目中使用xgplayer播放m3u8视频的显示问题

问题背景 在UniApp Vue3 TypeScript项目中使用xgplayer播放m3u8视频时&#xff0c;遇到了一个棘手的问题&#xff1a;视频画面下移&#xff0c;只能听到声音&#xff0c;全屏后才能正常显示。经过排查&#xff0c;发现是<video>元素在DOM渲染时被异常定位&#xff0c;导…