使用 Istio 进行多集群部署管理及单控制平面Gateway连接拓扑的示例分析


本篇文章给大家分享的是有关使用 Istio 进行多集群部署管理及单控制平面Gateway连接拓扑的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。单控制平面拓扑下,多个Kubernetes集群共同使用在其中一个集群上运行的单个Istio控制平面。控制平面的Pilot管理本地和远程集群上的服务,并为所有集群配置Envoy Sidecar代理。Istio 1.1中引入了集群感知的服务路由能力,在单一控制平面拓扑配置下,使用Istio的Split-horizon EDS(水平分割端点发现服务)功能可以通过其入口网关将服务请求路由到其他集群。基于请求源的位置,Istio能够将请求路由到不同的端点。在该配置中,从一个集群中的Sidecar代理到同一集群中的服务的请求仍然被转发到本地服务IP。如果目标工作负载在其他集群中运行,则使用远程集群的网关IP来连接到该服务。 (集群感知的服务路由)如图所示,主集群cluster1运行全套的Istio控制平面组件,同时集群cluster2仅运行Istio Citadel、Sidecar Injector和Ingress网关。不需要VPN连接,不同集群中的工作负载之间也不需要直接网络访问。从共享的根CA为每个集群的Citadel生成中间CA证书,共享的根CA启用跨不同集群的双向TLS通信。为了便于说明,我们将samples/certs目录下Is开发云主机域名tio安装中提供的示例根CA证书用于两个集群。在实际部署中,你可能会为每个集群使用不同的CA证书,所有CA证书都由公共根CA签名。在每个Kubernetes集群中(包括示例中的集群cluster1与cluster2)使用以下命令为生成的CA证书创建Kubernetes密钥:在部署全套Istio控制平面组件的集群cluster1中,按照以下步骤执行:1.安装Istio的CRD并等待几秒钟,以便将它们提交给Kubernetes API服务器,如下所示:2.然后开始在集群cluster1中部署Istio控制平面。如果helm依赖项缺失或者不是最新的,可以通过helm dep update来更新这些依赖项。需要注意的是,因为没有使用istio-cni,可以暂时将其从依赖项requirements.yaml中去掉再执行更新操作。具体命令如下所示:请注意,网关地址设置为0.0.0.0。这是一个临时占位符值,在集群cluster2部署之后将更新为其网关的公共IP值。将Istio部署到cluster1,如下所示:确保上述步骤在Kubernetes集群中执行成功。3. 创建网关以访问远程服务,如下所示:上述网关配置了一个专用端口15443用来将传入流量传递到请求的SNI标头中指定的目标服务,从源服务到目标服务一直使用双向TLS连接。请注意虽然该网关定义应用于集群cluster1,但因为两个集群都与同一个Pilot进行通信,此网关实例同样也适用于集群cluster2。在另一集群cluster2中部署istio-remote组件,按照以下步骤执行:1.首先获取集群cluster1的入口网关地址,如下所示:通过执行以下命令,使用Helm创建Istio remote部署YAML文件:2. 将Istio remote组件部署到cluster2,如下所示:确保上述步骤在Kubernetes集群中执行成功。3.更新集群cluster1的配置项istio,获取集群cluster2的入口网关地址,如下所示:在集群cluster1中编辑命名空间istio-system下的配置项istio,替换network2的网关地址,从0.0.0.0变成集群cluster2的入口网关地址${REMOTE_GW_ADDR}。保存后,Pilot将自动读取更新的网络配置。4.创建集群cluster2的Kubeconfig。通过以下命令,在集群cluster2上创建服务账号istio-multi的Kubeconfig,并保存为文件n2-k8s-config:5.将集群cluster2加入到Istio控制平面。在集群clusterl执行以下命令,将上述生成的集群cluster2的kubeconfig添加到集群cluster1的secret中,执行这些命令后,集群cluster1中的Istio Pilot将开始监听集群cluster2的服务和实例,就像监听集群cluster1中的服务与实例一样:为了演示跨集群访问,在第一个Kubernetes集群cluster1中部署sleep应用服务和版本v1的helloworld服务,在第二个集群cluster2中部署版本v2的helloworld服务,然后验证sleep应用是否可以调用本地或者远程集群的helloworld服务。1.部署sleep和版本v1的helloworld服务到第一个集群cluster1中,执行如下命令:2.部署版本v2的helloworld服务到第二个集群cluster2中,执行如下命令:3.登录到命名空间istio-system下的istio-pilot容器中,运行curl localhost:8080/v1/registration | grep helloworld -A 11 -B 2命令,如果得到如下类似的结果就说明版本v1与v2的helloworld服务都已经注册到Istio控制平面中了:4.验证在集群cluster1中的sleep服务是否可以正常调用本地或者远程集群的helloworld服务,在集群cluster1下执行如下命令:登录到容器中,运行curl helloworld.app1:5000/hello。如果设置正确,则在返回的调用结果中可以看到两个版本的helloworld服务,同时可以通过查看sleep容器组中的istio-proxy容器日志来验证访问的端点IP地址,返回结果如下所示:以上就是使用 Istio 进行多集群部署管理及单控制平面Gateway连接拓扑的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注开发云行业资讯频道。

相关推荐: cgroup怎么使用

本篇内容主要讲解“cgroup怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“cgroup怎么使用”吧!runC项目中,与cgroups相关的代码,都在目录 runc/libcontainer/cgroups…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/01 12:05
下一篇 06/01 12:05

相关推荐