备考ICA----Istio实验20---跨网络Primary-Remote主从架构部署

news2024/11/27 21:50:33

备考ICA----Istio实验20—跨网络Primary-Remote主从架构部署

按照本实验在 cluster1(主集群)上安装 Istio 控制平面,并将 cluster2(远程集群)配置为使用 cluster1 中的控制平面。群集 cluster1 在 network1 网络上,而 cluster2 在 network2 网络上。这意味着 Pod 之间没有跨越群集边界的直接连接。
在这里插入图片描述
在此配置中,cluster1 中的 Istiod 将监视两个集群中的 APIServer 的端点。通过这种方式,控制平面将能够为两个集群中的工作负载提供服务发现。跨集群边界的服务工作负载通过用于东西向流量的专用网关进行间接通信。每个群集中的网关必须可以从另一个群集中访问。
cluster2 中的服务将通过相同的 east-west gateway 到达集 cluster1 的控制平面。

1. 环境准备

确认2个集群存在
在这里插入图片描述
如果不存在,可以使用上个实验一样的命令进行创建

kind create cluster --name cluster1
kind create cluster --name cluster2

在这里插入图片描述

上下文,api,metallb和istioctl安装创建见上一个实验
具体见前一个实验的1-3节内容

2. 为集群创建Secret

在每个集群中,创建一个名为 cacerts Secret 包含所有输入文件 ca-cert.pem、ca-key.pem、root-cert.pem 和 cert-chain.pe

2.1 cluster1

切换上下文在cluster1中执行

cd certs/
kubectl --context $CTX_CLUSTER1 create namespace istio-system
kubectl --context $CTX_CLUSTER1 create secret generic cacerts -n istio-system \
  --from-file=cluster1/ca-cert.pem \
  --from-file=cluster1/ca-key.pem \
  --from-file=cluster1/root-cert.pem \
  --from-file=cluster1/cert-chain.pem

确认secrets被正确创建

kubectl --context $CTX_CLUSTER1 get secrets -n istio-system

2.2 cluster2

切换上下文在cluster2中执行

kubectl --context $CTX_CLUSTER2 create namespace istio-system
kubectl --context $CTX_CLUSTER2 create secret generic cacerts -n istio-system \
  --from-file=cluster2/ca-cert.pem \
  --from-file=cluster2/ca-key.pem \
  --from-file=cluster2/root-cert.pem \
  --from-file=cluster2/cert-chain.pem

确认secrets被正确创建

kubectl --context $CTX_CLUSTER2 get secrets -n istio-system

在这里插入图片描述

3. 为 cluster1配置primary控制平面

3.1 为cluster1设置默认网络

kubectl --context="${CTX_CLUSTER1}" \
  label namespace istio-system \
  topology.istio.io/network=network1

确认配置正确

kubectl --context $CTX_CLUSTER1 get ns istio-system --show-labels

在这里插入图片描述

3.2 istioctl安装文件

cluster1.yaml

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    global:
      meshID: mesh1
      multiCluster:
        clusterName: cluster1
      network: network1

3.3 安装istiod控制平面

cd
istioctl install --context $CTX_CLUSTER1 -f cluster1.yaml -y

在这里插入图片描述

3.4 cluster1上安装东西向网关

istio/samples/multicluster/gen-eastwest-gateway.sh --mesh mesh1 \
--cluster cluster1 --network network1 | \
istioctl --context="${CTX_CLUSTER1}" install -y -f -

确认服务正确创建

kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system

在这里插入图片描述

3.5 放开cluster1中的服务

kubectl --context="${CTX_CLUSTER1}" apply -n istio-system \
   -f istio/samples/multicluster/expose-services.yaml

4. cluster2配置控制平面集群

4.1 为cluster2的命名空间打标签

为 istio-system 命名空间添加注解来识别应管理 cluster2 的外部控制平面集群

kubectl --context="${CTX_CLUSTER2}" annotate namespace istio-system \
topology.istio.io/controlPlaneClusters=cluster1

4.2 为cluster1设置默认网络

kubectl --context="${CTX_CLUSTER2}" \
  label namespace istio-system \
  topology.istio.io/network=network2

确认label正确

kubectl get ns istio-system --show-labels --context ${CTX_CLUSTER2}

在这里插入图片描述

4.3 将cluster2设为从集群

确认cluster1的istio-eastwestgateway的external-ip

kubectl get svc -n istio-system --context ${CTX_CLUSTER1} istio-eastwestgateway 

在这里插入图片描述
配置cluster2安装文件
cluster2.yaml

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: remote
  values:
    istiodRemote:
      injectionPath: /inject/cluster/cluster2/net/network2
    global:
      remotePilotAddress: '172.18.0.221'

安装生效

istioctl install --context="${CTX_CLUSTER2}" -f cluster2.yaml -y

在这里插入图片描述
为了提供对 cluster2 的 API 服务器访问,我们生成一个远程机密并将其应用于 cluster1

istioctl create-remote-secret --context="${CTX_CLUSTER2}" --name=cluster2 | \
  kubectl apply -f - --context="${CTX_CLUSTER1}"

验证是否生成完成

kubectl get secrets --context ${CTX_CLUSTER1} -n istio-system

在这里插入图片描述

5. 配置cluster2网关

5.1 在cluster2上安装东西网关

cd istio
samples/multicluster/gen-eastwest-gateway.sh --mesh mesh1 \
--cluster cluster2 --network network2 | \
istioctl --context="${CTX_CLUSTER2}" install -y -f -

在这里插入图片描述

5.2 开放 cluster2 中的服务

kubectl --context="${CTX_CLUSTER1}" apply -n istio-system \
-f samples/multicluster/expose-services.yaml

6. 部署测试环境

环境部署脚本
test.sh

#!/bin/bash
VERSION=$(ls ~ | grep istio)
export CTX_CLUSTER1=kind-cluster1
export CTX_CLUSTER2=kind-cluster2
############ Create ns sample in cluster1 cluster2 ############
kubectl create --context="${CTX_CLUSTER1}" namespace sample
kubectl create --context="${CTX_CLUSTER2}" namespace sample

############ Label ns sample istio-injection=enabled ############
kubectl label --context="${CTX_CLUSTER1}" namespace sample istio-injection=enabled
kubectl label --context="${CTX_CLUSTER2}" namespace sample istio-injection=enabled

############ deploy helloword in cluster1 cluster2 ############
cd ~/istio
kubectl apply --context="${CTX_CLUSTER1}" -f samples/helloworld/helloworld.yaml -l service=helloworld -n sample
kubectl apply --context="${CTX_CLUSTER2}" -f samples/helloworld/helloworld.yaml -l service=helloworld -n sample

############ deploy helloword V1 in cluster1 ############
kubectl apply --context="${CTX_CLUSTER1}" -f samples/helloworld/helloworld.yaml -l version=v1 -n sample
kubectl get pod --context="${CTX_CLUSTER1}" -n sample -l app=helloworld

############ deploy helloword V2 in cluster2 ############
kubectl apply --context="${CTX_CLUSTER2}" -f samples/helloworld/helloworld.yaml -l version=v2 -n sample
kubectl get pod --context="${CTX_CLUSTER2}" -n sample -l app=helloworld

############ deploy sleep in cluster1 cluster2 ############
kubectl apply --context="${CTX_CLUSTER1}" -f samples/sleep/sleep.yaml -n sample
kubectl apply --context="${CTX_CLUSTER2}" -f samples/sleep/sleep.yaml -n sample
kubectl get pod --context="${CTX_CLUSTER1}" -n sample -l app=sleep
kubectl get pod --context="${CTX_CLUSTER2}" -n sample -l app=sleep

部署

chmod +x test.sh 
./test.sh 

在这里插入图片描述

7. 测试

和上个实验一样
通过cluster1的sleep访问sample名称空间中的helloworld,理论上只应该返回v1的版本,但由于打通了cluster2,所以有一部分流量被分发到了cluster2上,由v2进行响应

for x in {1..10};do kubectl exec --context="${CTX_CLUSTER1}" \
-n sample deploy/sleep -- curl -s helloworld.sample:5000/hello;done

同理cluster2上的sleep也一样

for x in {1..10};do kubectl exec --context="${CTX_CLUSTER2}" \
-n sample deploy/sleep -- curl -s helloworld.sample:5000/hello;done

在这里插入图片描述
上一个实验是在2个集群上都安装了istiod,而本实验只在cluster1上搭建了istiod通过打通东西向gateway实现集群的互通
至此备考ICA----Istio实验20—跨网络Primary-Remote主从架构部署完成

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

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

相关文章

[Kubernetes[K8S]集群:master主节点初始化]:通过Calico和Coredns网络插件方式安装

文章目录 操作流程:前置:Docker和K8S安装版本匹配查看0.1:安装指定docker版本 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一:主节点操作 查看主机域名->编辑域名->域名配置二:安装自动填充,虚拟…

贪心算法|763.划分字母区间

力扣题目链接 class Solution { public:vector<int> partitionLabels(string S) {int hash[27] {0}; // i为字符&#xff0c;hash[i]为字符出现的最后位置for (int i 0; i < S.size(); i) { // 统计每一个字符最后出现的位置hash[S[i] - a] i;}vector<int> …

ASUS华硕ROG幻16Air笔记本电脑GU605M原装出厂Win11系统工厂包下载,带有ASUSRecovery一键重置还原

适用型号&#xff1a;GU605MI、GU605MY、GU605MZ、GU605MV、GU605MU 链接&#xff1a;https://pan.baidu.com/s/1YBmZZbTKpIu883jYCS9KfA?pwd9jd4 提取码&#xff1a;9jd4 华硕原厂Windows11系统带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性联机支持…

VUE typescript 调用stompjs[Rabbit MQ]

npm拉下来最新的2.3.9版本&#xff0c;发现一些原来Js代码已经不能用了。顺便解读了下最新定义的内容 // <reference types"node" />export const VERSIONS: {V1_0: string;V1_1: string;V1_2: string;supportedVersions: () > string[]; };export class C…

风储微网虚拟惯性控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 风储微网虚拟惯性控制系统simulink建模与仿真。风储微网虚拟惯性控制系统是一种模仿传统同步发电机惯性特性的控制策略&#xff0c;它通过集成风力发电系统、储能系统和其他分…

微信小程序自定义关闭按钮在弹窗下面的效果

效果图: 我之前用vant 的popup的弹窗写&#xff0c;会出现close图标移动到弹窗内容外部不可见。 自定义代码&#xff1a; popup.JS/*** 生命周期函数--监听页面初次渲染完成*/onReady() {//自定义弹窗 动态获取屏幕高度var that this;wx.getSystemInfo({success: (result) &…

嵌入式操作教程_数字信号处理_音频编解码:3-6 AAC音频解码实验

一、实验目的 了解AAC音频格式&#xff0c;掌握AAC音频解码的原理&#xff0c;并实现将AAC格式的音频解码为PCM 二、实验原理 音频编解码的主要对象是音乐和语音&#xff0c;音频的编解码格式可分为无压缩的格式、无损压缩格式、有损音乐压缩格式、有损语音压缩格式和合成算…

NotePad++ 快速生成SQL IN (‘’,‘’)

sql In(‘’&#xff0c;‘’)这种形式 第一步&#xff1a;AltC 鼠标放在第一行最左边 第二步 CtrlH $代表行末 第三步 去掉每行换行符 换行可能是"\n" 或者"\r"或者"\r\n" 结果&#xff1a;

TG-12F使用SDK对接阿里生活物联网平台

文章目录 前言一、注意二、准备1. 安装Ubuntu&#xff08;版本20.04 X64&#xff09;程序运行时库。按顺序逐条执行命令&#xff1a;2. 安装Ubuntu&#xff08;版本20.04 X64&#xff09;依赖软件包。按照顺序逐条执行命令&#xff1a;3. 安装Python依赖包。按照顺序逐条执行命…

电子元器件商城开发用什么技术框架?

随着信息技术的飞速发展&#xff0c;电子元器件商城已成为电子工程师和采购人员获取元器件的重要渠道。电子元器件商城的开发涉及众多技术和开发语言的选择&#xff0c;本文将详细分析电子元器件商城开发中常用的技术和开发语言&#xff0c;以及它们各自的优势。 一、电子元器…

数据结构--双向链表

1.双向链表的结构设计 typedef struct DNode { int data; struct DNode* next;//后继指针 struct DNode* prio;//前驱指针 }DNode ,*DList; 2.双向链表的结构示意图: 3.双向链表的实现 //初始化p->prio->next p->next;if (p->next ! NULL)//判断很重要{p->n…

银行渠道整合平台应用架构

渠道整合平台将 功能微服务化&#xff0c;将服务流程标准化。微服务 化的功能能够进行各种组合使用。而标准化的流程可同时作用于所有渠道&#xff0c;保证体验一致。未来在进行流程变更的时候可有效避免各渠道的重复开发。 • 渠道整合平台避免了各个渠道对于同一个业务的差异…

【论文速读】| CHEMFUZZ: 大语言模型辅助模糊测试用于量子化学软件缺陷检测

本次分享论文为&#xff1a;CHEMFUZZ: Large Language Models-assisted Fuzzing for Quantum Chemistry Software Bug Detection 基本信息 原文作者&#xff1a;Feng Qiu, Pu Ji, Baojian Hua, Yang Wang 作者单位&#xff1a;中国科学技术大学软件工程学院&#xff0c;美国约…

软考数据库---1.事务管理

目录 1.1 事物的基本概念1.2 数据库的并发控制1.2.1 事务调度概念1.2.2 并发操作带来的问题1.2.3 并发控制技术1.2.4 隔离级别&#xff1a; 1.3 数据库的备份和恢复1.3.1 故障种类1.3.2 备份方法1.3.3 日志文件1.3.4 恢复 1.1 事物的基本概念 ●概念&#xff1a;一个操作序列&…

自然语言处理、大语言模型相关名词整理

自然语言处理相关名词整理 零样本学习&#xff08;zero-shot learning&#xff09;词嵌入&#xff08;Embedding&#xff09;为什么 Embedding 搜索比基于词频搜索效果好&#xff1f; Word2VecTransformer检索增强生成&#xff08;RAG&#xff09;幻觉采样温度Top-kTop-p奖励模…

云计算:Linux 部署 OVS 集群(服务端)实现VXLAN

目录 一、实验 1.环境 2.Linux 部署 OVS 集群&#xff08;服务端&#xff09; 3.Linux 部署VXLAN 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件IP备注ovs_controller控制端192.168.204.63 1个NAT网卡 &#xff08;204网段&#xff09; ovs_server01服务端 Openv…

睿尔曼超轻量仿人机械臂之双臂复合机器人手眼标定软件在Arm架构系统上的使用实操

双臂复合升降机器人的手眼标定是属于眼在手外的标定模式&#xff0c;相机在机器人的头部&#xff0c;标定前应固定相机的位置&#xff0c;再打开我们的标定软件程序如下&#xff0c;给足文件权限后&#xff0c;打开主程序&#xff0c;运行后会出现如下界面。 首次连接&#xff…

深入浅出 -- 系统架构之日均亿级吞吐量的网关架构(DNS轮询解析)

在前篇关于《Nginx》的文章中曾经提到&#xff1a;单节点的Nginx在经过调优后&#xff0c;可承载5W左右的并发量&#xff0c;同时为确保Nginx的高可用&#xff0c;在文中也结合了Keepalived对其实现了程序宕机重启、主机下线从机顶替等功能。 但就算实现了高可用的Nginx依旧存在…

解决宝塔的FTP无法使用被动模式

问题&#xff1a;宝塔安装完ftp管理软件之后&#xff0c;无法使用被动模式连接 解决&#xff1a; 提示&#xff1a; 如果还是不行&#xff0c;那么要看看防火墙和安全组有没有放行被动模式的端口&#xff0c;宝塔安装的pure-ftpd软件的被动模式端口默认是39000至400…

MySQL-----索引

一 概述 索引(index)是帮助MysQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c; 这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c;这样就可以在这些数据结构上实现高级查找算法&…