mirror of https://github.com/istio/istio.io.git
181 lines
70 KiB
HTML
181 lines
70 KiB
HTML
<!doctype html><html lang=zh itemscope itemtype=https://schema.org/WebPage><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=theme-color content=#466BB0><meta name=title content=集群感知的服务路由><meta name=description content="利用 Istio 的水平分割 EDS 来创建多集群网格。"><meta name=keywords content=microservices,services,mesh,kubernetes,multicluster><meta property=og:title content=集群感知的服务路由><meta property=og:type content=website><meta property=og:description content="利用 Istio 的水平分割 EDS 来创建多集群网格。"><meta property=og:url content=/v1.1/zh/docs/examples/multicluster/split-horizon-eds/><meta property=og:image content=/v1.1/img/istio-whitelogo-bluebackground-framed.svg><meta property=og:image:alt content="Istio Logo"><meta property=og:image:width content=112><meta property=og:image:height content=150><meta property=og:site_name content=Istio><meta name=twitter:card content=summary><meta name=twitter:site content=@IstioMesh><title>Istioldie 1.1 / 集群感知的服务路由</title><script async src="https://www.googletagmanager.com/gtag/js?id=UA-98480406-2"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}
|
||
gtag('js',new Date());gtag('config','UA-98480406-2');</script><link rel=alternate type=application/rss+xml title="Istio Blog" href=/v1.1/feed.xml><link rel="shortcut icon" href=/v1.1/favicons/favicon.ico><link rel=apple-touch-icon href=/v1.1/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/v1.1/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/v1.1/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/v1.1/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/v1.1/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/v1.1/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/v1.1/favicons/android-96x96.png sizes=96xW96><link rel=icon type=image/png href=/v1.1/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/v1.1/favicons/android-192x192.png sizes=192x192><link rel=manifest href=/v1.1/manifest.json><meta name=apple-mobile-web-app-title content=Istio><meta name=application-name content=Istio><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Work+Sans:400|Chivo:400|Work+Sans:500,300,600,300italic,400italic,500italic,600italic|Chivo:500,300,600,300italic,400italic,500italic,600italic"><link rel=stylesheet href=/v1.1/css/all.css></head><body class="language-unknown archive-site"><script src=/v1.1/js/themes_init.min.js></script><script>const branchName="release-1.1";const docTitle="集群感知的服务路由";const iconFile="\/v1.1/img/icons.svg";const buttonCopy='复制到剪切板';const buttonPrint='打印';const buttonDownload='下载';</script><script src="https://www.google.com/cse/brand?form=search-form" defer></script><script src=/v1.1/js/all.min.js data-manual defer></script><header><nav><a id=brand href=/v1.1/zh/><span class=logo><svg viewBox="0 0 300 300"><circle cx="150" cy="150" r="146" stroke-width="2" /><path d="M65 240H225L125 270z"/><path d="M65 230l60-10V110z"/><path d="M135 220l90 10L135 30z"/></svg></span><span class=name>Istioldie 1.1</span></a><div id=hamburger><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#hamburger"/></svg></div><div id=header-links><span title="了解如何部署、使用和运维 Istio。">文档</span>
|
||
<a title="关于使用 Istio 的博客文章。" href=/v1.1/zh/blog/2019/root-transition/>博客</a>
|
||
<a title="一堆帮助您部署、配置和使用 Istio 的资源。" href=/v1.1/zh/help/>帮助</a>
|
||
<a title=关于Istio的说明。 href=/v1.1/zh/about/>关于</a><div class=menu><button id=gearDropdownButton class=menu-trigger title=选项和设置 aria-label="Options and Settings" aria-controls=gearDropdownContent><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#gear"/></svg></button><div id=gearDropdownContent class=menu-content aria-labelledby=gearDropdownButton role=menu><a tabindex=-1 role=menuitem lang=en id=switch-lang-en>English</a>
|
||
<a tabindex=-1 role=menuitem lang=zh id=switch-lang-zh class=active>中文</a><div role=separator></div><a tabindex=-1 role=menuitem class=active id=light-theme-item>亮主题</a>
|
||
<a tabindex=-1 role=menuitem id=dark-theme-item>暗主题</a><div role=separator></div><a tabindex=-1 role=menuitem id=syntax-coloring-item>代码高亮</a><div role=separator></div><h6>本站的其它版本</h6><a tabindex=-1 role=menuitem onclick="navigateToUrlOrRoot('https://istio.io/docs\/examples\/multicluster\/split-horizon-eds\/');return false;">当前版本</a>
|
||
<a tabindex=-1 role=menuitem onclick="navigateToUrlOrRoot('https://preliminary.istio.io/docs\/examples\/multicluster\/split-horizon-eds\/');return false;">下个版本</a>
|
||
<a tabindex=-1 role=menuitem href=https://archive.istio.io>旧版本</a></div></div><button id=search-show title=搜索istio.io aria-label=Search><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#magnifier"/></svg></button></div><form id=search-form name=cse role=search><input type=hidden name=cx value=013699703217164175118:iwwf17ikgf4>
|
||
<input type=hidden name=ie value=utf-8>
|
||
<input type=hidden name=hl value=en>
|
||
<input type=hidden id=search-page-url value=/v1.1/search.html>
|
||
<input id=search-textbox class=form-control name=q type=search aria-label=搜索istio.io>
|
||
<button id=search-close title="Cancel search" type=reset aria-label="Cancel search"><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#cancel-x"/></svg></button></form></nav></header><main class=primary><div id=sidebar-container class="sidebar-container sidebar-offcanvas"><nav id=sidebar aria-label="Section Navigation"><div class=directory><div class=card><button class="header dynamic" id=card28 title="一些概念,理解它们有助于您更好地了解 Istio 系统的不同部分及其使用的抽象。" aria-controls=card28-body><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#concepts"/></svg>概念</button><div class=body aria-labelledby=card28 role=region id=card28-body><ul role=tree aria-expanded=true class=leaf-section aria-labelledby=card28><li role=none><a role=treeitem title="介绍 Istio 及其要解决的问题、顶层架构和设计目标。" href=/v1.1/zh/docs/concepts/what-is-istio/>Istio 是什么?</a></li><li role=none><a role=treeitem title="介绍 Istio 中关于流量路由与控制的各项功能。" href=/v1.1/zh/docs/concepts/traffic-management/>流量管理</a></li><li role=none><a role=treeitem title="描述 Istio 的授权与鉴权功能。" href=/v1.1/zh/docs/concepts/security/>安全</a></li><li role=none><a role=treeitem title=描述策略实施和遥测机制。 href=/v1.1/zh/docs/concepts/policies-and-telemetry/>策略与遥测</a></li><li role=none><a role=treeitem title="介绍 Istio 组件的性能与可伸缩性。" href=/v1.1/zh/docs/concepts/performance-and-scalability/>性能与可伸缩性</a></li><li role=none><a role=treeitem title=描述如何配置服务网格以包含来自多个集群的服务。 href=/v1.1/zh/docs/concepts/multicluster-deployments/>多集群部署</a></li></ul></div></div><div class=card><button class="header dynamic" id=card41 title="在不同的环境下(例如 Kubernetes、Consul 等)如何部署和升级 Istio。" aria-controls=card41-body><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#setup"/></svg>安装</button><div class=body aria-labelledby=card41 role=region id=card41-body><ul role=tree aria-expanded=true aria-labelledby=card41><li role=treeitem aria-label=Kubernetes><button aria-hidden=true></button><a title="关于如何在 Kubernetes 集群中安装 Istio 控制平面和添加虚拟机到 mesh 中的说明。" href=/v1.1/zh/docs/setup/kubernetes/>Kubernetes</a><ul role=group aria-expanded=false><li role=none><a role=treeitem title="关于 Istio 发布包下载过程的说明。" href=/v1.1/zh/docs/setup/kubernetes/download/>下载 Istio 发布包</a></li><li role=treeitem aria-label=准备><button aria-hidden=true></button><a title="为 Istio 做准备。" href=/v1.1/zh/docs/setup/kubernetes/prepare/>准备</a><ul role=group aria-expanded=false><li role=treeitem aria-label=平台搭建><button aria-hidden=true></button><a title="在安装 Istio 前,如何准备各种 Kubernetes 平台。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/>平台搭建</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="为 Istio 设置阿里云 Kubernetes 集群的说明。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/alicloud/>阿里云</a></li><li role=none><a role=treeitem title="对 Azure 集群进行配置以便安装运行 Istio。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/azure/>Azure</a></li><li role=none><a role=treeitem title="使用桌面版 Docker 安装 Istio 的说明。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/docker/>桌面版 Docker</a></li><li role=none><a role=treeitem title="对 Google Kubernetes Engine(GKE)集群进行配置以便安装运行 Istio。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/gke/>Google Kubernetes Engine</a></li><li role=none><a role=treeitem title="为 IBM Cloud 集群设置 Istio 的说明。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/ibm/>IBM Cloud</a></li><li role=none><a role=treeitem title="对 Minikube 集群进行配置以便安装运行 Istio。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/minikube/>Minikube</a></li><li role=none><a role=treeitem title="对 OpenShift 集群进行配置以便安装运行 Istio。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/openshift/>OpenShift</a></li><li role=none><a role=treeitem title="为 Istio 对 OKE 集群环境进行配置。" href=/v1.1/zh/docs/setup/kubernetes/prepare/platform-setup/oci/>Oracle Cloud Infrastructure</a></li></ul></li></ul></li><li role=treeitem aria-label=安装方案><button aria-hidden=true></button><a title=选择最适合您需求和平台的方案。 href=/v1.1/zh/docs/setup/kubernetes/install/>安装方案</a><ul role=group aria-expanded=false><li role=none><a role=treeitem title="在 Kubernetes 集群中快速安装 Istio 服务网格的说明。" href=/v1.1/zh/docs/setup/kubernetes/install/kubernetes/>在 Kubernetes 中快速开始</a></li><li role=none><a role=treeitem title="使用内含的 Helm chart 安装 Istio。" href=/v1.1/zh/docs/setup/kubernetes/install/helm/>使用 Helm 进行安装</a></li><li role=treeitem aria-label=多集群安装><button aria-hidden=true></button><a title="配置跨越多个 Kubernetes 集群的 Istio 服务网格。" href=/v1.1/zh/docs/setup/kubernetes/install/multicluster/>多集群安装</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="使用 Istio Gateway 跨越多个 Kubernetes 集群安装 Istio 网格以访问远程 pod。" href=/v1.1/zh/docs/setup/kubernetes/install/multicluster/gateways/>Gateway 连接</a></li><li role=none><a role=treeitem title="通过直连远程 pods 实现多 Kubernetes 集群安装 Istio 网格。" href=/v1.1/zh/docs/setup/kubernetes/install/multicluster/vpn/>VPN 连接</a></li></ul></li><li role=treeitem aria-label=特定平台安装说明><button aria-hidden=true></button><a title="支持的 Kubernetes 平台的额外安装流程。" href=/v1.1/zh/docs/setup/kubernetes/install/platform/>特定平台安装说明</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="如何使用阿里云 Kubernetes 容器服务快速安装 Istio。" href=/v1.1/zh/docs/setup/kubernetes/install/platform/alicloud/>阿里云</a></li><li role=none><a role=treeitem title="在 Google Kubernetes Engine (GKE) 上快速搭建 Istio 服务。" href=/v1.1/zh/docs/setup/kubernetes/install/platform/gke/>Google Kubernetes Engine</a></li><li role=none><a role=treeitem title="如何使用 IBM 公有云或 IBM 私有云快速安装 Istio。" href=/v1.1/zh/docs/setup/kubernetes/install/platform/ibm/>IBM Cloud</a></li></ul></li></ul></li><li role=treeitem aria-label=升级><button aria-hidden=true></button><a title="升级 Istio 的相关信息。" href=/v1.1/zh/docs/setup/kubernetes/upgrade/>升级</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="在升级到 Istio 1.1 之前,运维人员必须了解的重要更改。" href=/v1.1/zh/docs/setup/kubernetes/upgrade/notice/>1.1 升级通知</a></li><li role=none><a role=treeitem title="演示如何独立升级 Istio 控制平面和数据平面。" href=/v1.1/zh/docs/setup/kubernetes/upgrade/steps/>升级步骤</a></li></ul></li><li role=treeitem aria-label=更多指南><button aria-hidden=true></button><a title=有关其他设置任务的更多信息。 href=/v1.1/zh/docs/setup/kubernetes/additional-setup/>更多指南</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Istio 内置的安装配置文件介绍。" href=/v1.1/zh/docs/setup/kubernetes/additional-setup/config-profiles/>安装配置</a></li><li role=none><a role=treeitem title="介绍两种将 Istio sidecar 注入应用 Pod 的方法:使用 Sidecar 注入 Webhook 自动完成,或使用 istioctl 客户端工具手工完成。" href=/v1.1/zh/docs/setup/kubernetes/additional-setup/sidecar-injection/>注入 Istio sidecar</a></li><li role=none><a role=treeitem title="这里讲述了 Istio 对 Kubernetes 中 Pod 和服务的要求。" href=/v1.1/zh/docs/setup/kubernetes/additional-setup/requirements/>Istio 对 Pod 和服务的要求</a></li><li role=none><a role=treeitem title="Istio CNI 插件的安装和使用 Istio,该插件让运维人员可以用较低的权限来完成网格服务的部署工作。" href=/v1.1/zh/docs/setup/kubernetes/additional-setup/cni/>Istio CNI 插件的安装和使用 Istio</a></li><li role=none><a role=treeitem title="部署在 Kubernetes 之中的 Istio 服务网格,将虚拟机和物理机集成进入到服务网格的方法。" href=/v1.1/zh/docs/setup/kubernetes/additional-setup/mesh-expansion/>网格扩展</a></li></ul></li></ul></li><li role=treeitem aria-label="Nomad & Consul"><button aria-hidden=true></button><a title="基于 Consul 和 Nomad 安装 Istio 控制平面。" href=/v1.1/zh/docs/setup/consul/>Nomad & Consul</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="通过 Docker Compose 快速安装 Istio service mesh。" href=/v1.1/zh/docs/setup/consul/quick-start/>通过 Docker 快速安装</a></li><li role=none><a role=treeitem title="基于 Consul 和 Nomad 安装 Istio 控制平面。" href=/v1.1/zh/docs/setup/consul/install/>安装</a></li></ul></li></ul></div></div><div class=card><button class="header dynamic" id=card49 title="如何用 Istio 系统实现特定目标的行为。" aria-controls=card49-body><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#tasks"/></svg>任务</button><div class=body aria-labelledby=card49 role=region id=card49-body><ul role=tree aria-expanded=true aria-labelledby=card49><li role=treeitem aria-label=流量管理><button aria-hidden=true></button><a title="演示 Istio 流量路由功能的任务。" href=/v1.1/zh/docs/tasks/traffic-management/>流量管理</a><ul role=group aria-expanded=false><li role=none><a role=treeitem title=此任务将说明如何将请求动态路由到多个版本的微服务。 href=/v1.1/zh/docs/tasks/traffic-management/request-routing/>配置请求路由</a></li><li role=none><a role=treeitem title=此任务说明如何注入延迟并测试应用程序的弹性。 href=/v1.1/zh/docs/tasks/traffic-management/fault-injection/>故障注入</a></li><li role=none><a role=treeitem title=向您展示如何将流量从旧版本迁移到新版本的服务。 href=/v1.1/zh/docs/tasks/traffic-management/traffic-shifting/>流量转移</a></li><li role=none><a role=treeitem title="展示如何将一个 TCP 服务的流量从老版本迁移到新版本。" href=/v1.1/zh/docs/tasks/traffic-management/tcp-traffic-shifting/>TCP 流量转移</a></li><li role=none><a role=treeitem title="本任务用于示范如何使用 Istio 在 Envoy 中设置请求超时。" href=/v1.1/zh/docs/tasks/traffic-management/request-timeouts/>设置请求超时</a></li><li role=none><a role=treeitem title="介绍在服务网格 Istio 中如何配置外部公开服务。" href=/v1.1/zh/docs/tasks/traffic-management/ingress/>控制 Ingress 流量</a></li><li role=treeitem aria-label="加密 Ingress Gateway"><button aria-hidden=true></button><a title="使用多种方法为 Gateway 控制器提供加密支持。" href=/v1.1/zh/docs/tasks/traffic-management/secure-ingress/>加密 Ingress Gateway</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="如何配置 Istio,借助 SDS(Secret 发现服务),使用 TLS 或双向 TLS 将服务开放到网格之外。" href=/v1.1/zh/docs/tasks/traffic-management/secure-ingress/sds/>使用 SDS 为 Gateway 提供 HTTPS 加密支持</a></li></ul></li><li role=none><a role=treeitem title="在 Istio 中配置从网格内访问外部服务的流量路由。" href=/v1.1/zh/docs/tasks/traffic-management/egress/>控制 Egress 流量</a></li><li role=none><a role=treeitem title=用连接、请求以及外部检测来进行熔断配置的过程。 href=/v1.1/zh/docs/tasks/traffic-management/circuit-breaking/>熔断</a></li><li role=none><a role=treeitem title="此任务演示了 Istio 的流量镜像功能。" href=/v1.1/zh/docs/tasks/traffic-management/mirroring/>镜像</a></li></ul></li><li role=treeitem aria-label=安全><button aria-hidden=true></button><a title=演示对服务网格进行安全加固的方法。 href=/v1.1/zh/docs/tasks/security/>安全</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="展示为 HTTP 服务设置基于角色的访问控制方法。" href=/v1.1/zh/docs/tasks/security/authz-http/>HTTP 服务的访问控制</a></li><li role=none><a role=treeitem title="整合 Vault CA 到 Istio 中为双向 TLS 提供 支持。" href=/v1.1/zh/docs/tasks/security/vault-ca/>Istio Vault CA 集成</a></li><li role=none><a role=treeitem title="有关如何在 Istio 中配置基于组的授权和配置列表类型声明的授权的教程。" href=/v1.1/zh/docs/tasks/security/rbac-groups/>基于组和列表类型声明的授权</a></li><li role=none><a role=treeitem title="介绍如何使用 Istio 认证策略设置双向 TLS 和基本的终端用户认证。" href=/v1.1/zh/docs/tasks/security/authn-policy/>基础认证策略</a></li><li role=none><a role=treeitem title="对 Istio 的自动双向 TLS 认证功能进行体验和测试。" href=/v1.1/zh/docs/tasks/security/mutual-tls/>深入了解双向 TLS</a></li><li role=none><a role=treeitem title=展示宽容模式的的鉴权过程。 href=/v1.1/zh/docs/tasks/security/authz-permissive/>鉴权过程中的宽容模式</a></li><li role=none><a role=treeitem title="展示如何为 TCP 服务设置基于角色的访问控制。" href=/v1.1/zh/docs/tasks/security/authz-tcp/>TCP 服务的访问控制</a></li><li role=none><a role=treeitem title=展示如何在服务网格中进行基于角色的访问控制。 href=/v1.1/zh/docs/tasks/security/role-based-access-control/>基于角色的访问控制</a></li><li role=none><a role=treeitem title="运维人员如何使用现有根证书配置 Citadel 进行证书以及密钥的签发。" href=/v1.1/zh/docs/tasks/security/plugin-ca-cert/>插入外部 CA 密钥和证书</a></li><li role=none><a role=treeitem title="如何在 Kubernetes 中启用 Citadel 的健康检查。" href=/v1.1/zh/docs/tasks/security/health-check/>Citadel 的健康检查</a></li><li role=none><a role=treeitem title="展示启用 SDS 来为 Istio 提供身份服务的过程。" href=/v1.1/zh/docs/tasks/security/auth-sds/>通过 SDS 提供身份服务</a></li><li role=none><a role=treeitem title="如何渐进式的为现有 Istio 服务添加双向 TLS 支持。" href=/v1.1/zh/docs/tasks/security/mtls-migration/>双向 TLS 的迁移</a></li><li role=none><a role=treeitem title="展示如何在 HTTPS 服务上启用双向 TLS。" href=/v1.1/zh/docs/tasks/security/https-overlay/>通过 HTTPS 进行双向 TLS</a></li></ul></li><li role=treeitem aria-label=策略><button aria-hidden=true></button><a title=演示策略实施功能。 href=/v1.1/zh/docs/tasks/policy-enforcement/>策略</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="本任务讲解如何启用 Istio 策略检查功能。" href=/v1.1/zh/docs/tasks/policy-enforcement/enabling-policy/>启用策略检查</a></li><li role=none><a role=treeitem title="这一任务展示了如何使用 Istio 动态的对服务通信进行速率限制。" href=/v1.1/zh/docs/tasks/policy-enforcement/rate-limiting/>启用速率限制</a></li><li role=none><a role=treeitem title="展示使用简单的 Denier 适配器或黑白名单对服务进行访问控制的方法。" href=/v1.1/zh/docs/tasks/policy-enforcement/denial-and-list/>Denier 适配器以及黑白名单</a></li><li role=none><a role=treeitem title="显示如何使用策略适配器修改请求 header 和路由。" href=/v1.1/zh/docs/tasks/policy-enforcement/control-headers/>控制 header 和路由</a></li></ul></li><li role=treeitem aria-label=遥测><button aria-hidden=true></button><a title=演示从服务网格收集遥测信息的方法。 href=/v1.1/zh/docs/tasks/telemetry/>遥测</a><ul role=group aria-expanded=false><li role=treeitem aria-label=指标度量><button aria-hidden=true></button><a title="演示 Istio 网格指标度量的配置、收集和处理。" href=/v1.1/zh/docs/tasks/telemetry/metrics/>指标度量</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="这一任务讲述如何配置 Istio,进行指标和日志的收集工作。" href=/v1.1/zh/docs/tasks/telemetry/metrics/collecting-metrics/>收集指标和日志</a></li><li role=none><a role=treeitem title="本任务展示了如何配置 Istio 进行 TCP 服务的指标收集。" href=/v1.1/zh/docs/tasks/telemetry/metrics/tcp-metrics/>获取 TCP 服务指标</a></li><li role=none><a role=treeitem title="此任务说明如何使用 Prometheus 查询 Istio 指标。" href=/v1.1/zh/docs/tasks/telemetry/metrics/querying-metrics/>查询 Prometheus 的指标</a></li><li role=none><a role=treeitem title="这个任务向您展示了如何设置和使用 Istio 仪表盘来监视网格流量。" href=/v1.1/zh/docs/tasks/telemetry/metrics/using-istio-dashboard/>使用 Grafana 可视化指标度量</a></li></ul></li><li role=treeitem aria-label=日志><button aria-hidden=true></button><a title="演示 Istio 网格日志的配置、收集和处理。" href=/v1.1/zh/docs/tasks/telemetry/logs/>日志</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="这一任务讲述如何配置 Istio,进行日志的收集工作。" href=/v1.1/zh/docs/tasks/telemetry/logs/collecting-logs/>收集日志</a></li><li role=none><a role=treeitem title="此任务向您展示如何配置 Envoy 代理将访问日志打印到其标准输出。" href=/v1.1/zh/docs/tasks/telemetry/logs/access-log/>获取 Envoy 访问日志</a></li><li role=none><a role=treeitem title="此任务说明如何配置 Istio 以将日志输出到 Fluentd 守护程序。" href=/v1.1/zh/docs/tasks/telemetry/logs/fluentd/>使用 Fluentd 记录日志</a></li></ul></li><li role=treeitem aria-label=分布式追踪><button aria-hidden=true></button><a title="该任务展示了如何为启用了 Istio 支持的应用进行追踪。" href=/v1.1/zh/docs/tasks/telemetry/distributed-tracing/>分布式追踪</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Istio 分布式追踪概述。" href=/v1.1/zh/docs/tasks/telemetry/distributed-tracing/overview/>概述</a></li><li role=none><a role=treeitem title="了解如何配置代理以向 Jaeger 发送追踪请求。" href=/v1.1/zh/docs/tasks/telemetry/distributed-tracing/jaeger/>Jaeger</a></li><li role=none><a role=treeitem title="了解如何配置代理以向 Zipkin 发送追踪请求。" href=/v1.1/zh/docs/tasks/telemetry/distributed-tracing/zipkin/>Zipkin</a></li><li role=none><a role=treeitem title="如何配置代理以发送请求至 LightStep [𝑥]PM." href=/v1.1/zh/docs/tasks/telemetry/distributed-tracing/lightstep/>使用 LightStep [𝑥]PM 进行分布式追踪</a></li></ul></li><li role=none><a role=treeitem title="本任务展示了在 Istio 网格中对服务进行可视化的过程。" href=/v1.1/zh/docs/tasks/telemetry/kiali/>网格可视化</a></li><li role=none><a role=treeitem title="本任务展示了为 Istio 遥测插件配置外部访问的过程。" href=/v1.1/zh/docs/tasks/telemetry/gateways/>遥测插件的远程访问</a></li></ul></li></ul></div></div><div class=card><button class="header dynamic" id=card84 title="这里包括多个可供 Istio 使用的可完整工作的示例,你可以用来亲自部署和体验这些示例。" aria-controls=card84-body><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#examples"/></svg>示例</button><div class="body default" aria-labelledby=card84 role=region id=card84-body><ul role=tree aria-expanded=true aria-labelledby=card84><li role=none><a role=treeitem title="部署一个用于演示多种 Istio 特性的应用,由四个单独的微服务构成。" href=/v1.1/zh/docs/examples/bookinfo/>Bookinfo 应用</a></li><li role=none><a role=treeitem title="如何在 Istio 服务网格中使用多种流量管理功能。" href=/v1.1/zh/docs/examples/intelligent-routing/>智能路由</a></li><li role=none><a role=treeitem title="演示如何使用 Istio Mixer 和 Istio sidecar 获取指标和日志,并在不同的服务间进行追踪。" href=/v1.1/zh/docs/examples/telemetry/>深入遥测</a></li><li role=none><a role=treeitem title="说明如何在谷歌云 Endpoints 服务中手动整合 Istio。" href=/v1.1/zh/docs/examples/endpoints/>在谷歌云 Endpoints 服务中安装 Istio</a></li><li role=none><a role=treeitem title="在单一服务网格中,如何使用 Istio 对 Kubernetes 集群以及虚拟机进行控制。" href=/v1.1/zh/docs/examples/integrating-vms/>虚拟机集成</a></li><li role=treeitem aria-label=边缘流量控制><button aria-hidden=true></button><a title="用于管理 Istio 服务网格的边缘流量(即 Ingress 和 Egress 流量)的各种高级示例。" href=/v1.1/zh/docs/examples/advanced-gateways/>边缘流量控制</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="介绍如何为入口网关配置 SNI 直通。" href=/v1.1/zh/docs/examples/advanced-gateways/ingress-sni-passthrough/>没有 TLS 的 Ingress gateway</a></li><li role=none><a role=treeitem title="描述如何通过专用网关服务将流量定向到外部服务来配置 Istio。" href=/v1.1/zh/docs/examples/advanced-gateways/egress-gateway/>配置 Egress gateway</a></li><li role=none><a role=treeitem title="描述了配置 Egress 网关来发起对外部服务进行 TLS 通信的过程。" href=/v1.1/zh/docs/examples/advanced-gateways/egress-gateway-tls-origination/>Egress 网关的 TLS 发起过程</a></li><li role=none><a role=treeitem title="此任务描述 Istio 如何配置出口流量的 TLS。" href=/v1.1/zh/docs/examples/advanced-gateways/egress-tls-origination/>出口流量的 TLS</a></li><li role=none><a role=treeitem title="介绍如何为公共域中的一组主机启用 Egress 流量,而不是单独配置每个主机。" href=/v1.1/zh/docs/examples/advanced-gateways/wildcard-egress-hosts/>使用通配符主机配置 Egress 流量</a></li><li role=none><a role=treeitem title="如何为 Egress TLS 流量配置 SNI 监控并应用策略。" href=/v1.1/zh/docs/examples/advanced-gateways/egress_sni_monitoring_and_policies/>Egress TLS 流量中的 SNI 监控及策略</a></li><li role=none><a role=treeitem title="描述如何配置 Istio 以允许应用程序使用外部 HTTPS 代理。" href=/v1.1/zh/docs/examples/advanced-gateways/http-proxy/>连接到外部 HTTPS 代理</a></li><li role=none><a role=treeitem title="展示使用 cert-Manager 为 Kubernetes Ingress 获取 Let's Encrypt TLS 证书的过程。" href=/v1.1/zh/docs/examples/advanced-gateways/ingress-certmgr/>使用 cert-manager 加密 Kubernetes Ingress</a></li></ul></li><li role=treeitem aria-label=单一三层网络的多集群网格><button class=show aria-hidden=true></button><a title="您可以尝试各种基于 VPN 的 Istio 多集群示例。" href=/v1.1/zh/docs/examples/multicluster/>单一三层网络的多集群网格</a><ul role=group aria-expanded=true class=leaf-section><li role=none><a role=treeitem title=在一个使用网关进行连接的多集群网格中配置远程服务。 href=/v1.1/zh/docs/examples/multicluster/gateways/>通过网关进行连接的多集群</a></li><li role=none><a role=treeitem title="基于 GKE 的 Istio 多集群安装。" href=/v1.1/zh/docs/examples/multicluster/gke/>Google Kubernetes Engine</a></li><li role=none><a role=treeitem title="多 IBM Cloud Private 集群安装 Istio 示例。" href=/v1.1/zh/docs/examples/multicluster/icp/>IBM Cloud Private</a></li><li role=none><a role=treeitem title="IBM Cloud Kubernetes Service 和 IBM Cloud Private 之间的多集群示例。" href=/v1.1/zh/docs/examples/multicluster/iks-icp/>IBM Cloud Kubernetes Service & IBM Cloud Private</a></li><li role=none><span role=treeitem class=current title="利用 Istio 的水平分割 EDS 来创建多集群网格。">集群感知的服务路由</span></li></ul></li></ul></div></div><div class=card><button class="header dynamic" id=card114 title="参考部分包含详细的权威参考资料,如命令行选项、配置选项和 API 调用参数。" aria-controls=card114-body><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#reference"/></svg>参考</button><div class=body aria-labelledby=card114 role=region id=card114-body><ul role=tree aria-expanded=true aria-labelledby=card114><li role=treeitem aria-label=配置><button aria-hidden=true></button><a title=关于配置选项的详细信息。 href=/v1.1/zh/docs/reference/config/>配置</a><ul role=group aria-expanded=false><li role=treeitem aria-label=流量管理><button aria-hidden=true></button><a title="描述如何配置 HTTP/TCP 路由功能。" href=/v1.1/zh/docs/reference/config/networking/>流量管理</a><ul role=group aria-expanded=false class=leaf-section></ul></li><li role=none><a role=treeitem title="描述了使用 Helm chart 安装 Istio 时可以使用的选项。" href=/v1.1/zh/docs/reference/config/installation-options/>安装选项</a></li><li role=none><a role=treeitem title="详细描述 release-1.0 和 release-1.1 之间 Helm chart 安装选项的差异。" href=/v1.1/zh/docs/reference/config/installation-options-changes/>安装选项的变更</a></li><li role=treeitem aria-label=授权><button aria-hidden=true></button><a title=关于如何配置Istio授权特性的描述。 href=/v1.1/zh/docs/reference/config/authorization/>授权</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title=描述所支持的约束和属性。 href=/v1.1/zh/docs/reference/config/authorization/constraints-and-properties/>约束和属性</a></li><li role=none><a role=treeitem title=配置基于角色的访问控制。 href=/v1.1/zh/docs/reference/config/authorization/istio.rbac.v1alpha1/>RBAC</a></li></ul></li><li role=treeitem aria-label=策略和遥测><button aria-hidden=true></button><a title="描述如何配置 Istio 的策略和遥测功能。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/>策略和遥测</a><ul role=group aria-expanded=false><li role=none><a role=treeitem title=介绍策略和控制中会用到的一些基础属性词汇。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/attribute-vocabulary/>属性词汇</a></li><li role=none><a role=treeitem title="Mixer 的配置表达式语言参考。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/expression-language/>表达式语言</a></li><li role=treeitem aria-label=适配器><button aria-hidden=true></button><a title="Mixer 适配器能够让 Istio 连接各种基础设施后端以完成类似指标和日志这样的功能。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/>适配器</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Apigee 的分布式策略检查以及分析适配器。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/apigee/>Apigee</a></li><li role=none><a role=treeitem title="适用于 circonus.com 的监控解决方案。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/circonus/>Circonus</a></li><li role=none><a role=treeitem title="CloudMonitor 适配器使 Istio 可以向 AliCloud CloudMonitor 提供指标。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/cloudmonitor/>CloudMonitor</a></li><li role=none><a role=treeitem title=始终返回按前提条件拒绝的适配器。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/denier/>Denier</a></li><li role=none><a role=treeitem title="用于将日志发送给 Fluentd 守护进程的适配器。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/fluentd/>Fluentd</a></li><li role=none><a role=treeitem title="将指标发送到 SignalFx 的适配器。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/signalfx/>SignalFx</a></li><li role=none><a role=treeitem title="从 Kubernetes 环境中获取集群信息。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/kubernetesenv/>Kubernetes Env</a></li><li role=none><a role=treeitem title=用于执行黑名单或白名单检测的适配器。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/list/>List</a></li><li role=none><a role=treeitem title=简单内存配额管理系统适配器。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/memquota/>Memory quota</a></li><li role=none><a role=treeitem title="基于 Redis 的配额管理系统。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/redisquota/>Redis Quota</a></li><li role=none><a role=treeitem title="用于向 Google Service Control 发送日志和指标的适配器。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/servicecontrol/>Service Control</a></li><li role=none><a role=treeitem title="该适配器用于向 statsd 后端发送指标数据。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/statsd/>statsd</a></li><li role=none><a role=treeitem title=该适配器可以在本地输出日志和指标。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/adapters/stdio/>Stdio</a></li></ul></li><li role=treeitem aria-label=模板><button aria-hidden=true></button><a title="Mixer 模板用于将数据发送到各个适配器。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/>模板</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="该模板用于表达一个 API Key。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/apikey/>API Key</a></li><li role=none><a role=treeitem title="Analytics 模板用于向 Apigee 发送运行时遥测数据。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/analytics/>Analytics</a></li><li role=none><a role=treeitem title=该模版用于访问控制查询。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/authorization/>Authorization</a></li><li role=none><a role=treeitem title=该模板不包含任何数据,用于测试。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/checknothing/>Check Nothing</a></li><li role=none><a role=treeitem title="用于生成 Kubernetes 的特定属性。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/kubernetes/>Kubernetes</a></li><li role=none><a role=treeitem title=该模板用于执行列表检查操作。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/listentry/>List Entry</a></li><li role=none><a role=treeitem title=该模板用于表达一条运行时日志项。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/logentry/>Log Entry</a></li><li role=none><a role=treeitem title=该模板用于表达一个运行时产生的监控指标数据。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/metric/>Metric</a></li><li role=none><a role=treeitem title=该模板用于表达占用配额的请求。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/quota/>Quota</a></li><li role=none><a role=treeitem title=该模板不包含数据,用于测试。 href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/reportnothing/>Report Nothing</a></li><li role=none><a role=treeitem title="用于 Google Service Control 适配器的模板。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/servicecontrolreport/>Service Control Report</a></li><li role=none><a role=treeitem title="该模板用于表达分布式追踪数据中的一个 Span。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/templates/tracespan/>Trace Span</a></li></ul></li><li role=none><a role=treeitem title="通过 Mixer 从 Istio 导出的默认监控指标。" href=/v1.1/zh/docs/reference/config/policy-and-telemetry/metrics/>默认监控指标</a></li></ul></li><li role=none><a role=treeitem title=流量路由配置。 href=/v1.1/zh/docs/reference/config/istio.networking.v1alpha3/>通信路由</a></li></ul></li><li role=treeitem aria-label=命令><button aria-hidden=true></button><a title="描述 Istio 命令和工具的用法及选项。" href=/v1.1/zh/docs/reference/commands/>命令</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Galley 为 Istio 提供配置管理服务。" href=/v1.1/zh/docs/reference/commands/galley/>galley</a></li><li role=none><a role=treeitem title="自动注入 Istio sidecar 的 Kubernetes webhook。" href=/v1.1/zh/docs/reference/commands/sidecar-injector/>sidecar-injector</a></li><li role=none><a role=treeitem title="Istio 控制界面。" href=/v1.1/zh/docs/reference/commands/istioctl/>istioctl</a></li><li role=none><a role=treeitem title="Istio 证书颁发(CA)。" href=/v1.1/zh/docs/reference/commands/istio_ca/>istio_ca</a></li><li role=none><a role=treeitem title="用于触发直接调用 Mixer API 的实用程序。" href=/v1.1/zh/docs/reference/commands/mixc/>mixc</a></li><li role=none><a role=treeitem title="Mixer 是 Istio 在后端基础设施之上的抽象。" href=/v1.1/zh/docs/reference/commands/mixs/>mixs</a></li><li role=none><a role=treeitem title="节点一级的 Istio 安全代理。" href=/v1.1/zh/docs/reference/commands/node_agent/>node_agent</a></li><li role=none><a role=treeitem title="Istio Pilot。" href=/v1.1/zh/docs/reference/commands/pilot-discovery/>pilot-discovery</a></li></ul></li></ul></div></div></div></nav></div><div class=article-container><button tabindex=-1 id=sidebar-toggler title=折叠导航栏><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#pull"/></svg></button><nav aria-label=Breadcrumb><ol><li><a href=/v1.1/zh/>Istio</a></li><li><a href=/v1.1/zh/docs/ title="了解如何部署、使用和运维 Istio。">文档</a></li><li><a href=/v1.1/zh/docs/examples/ title="这里包括多个可供 Istio 使用的可完整工作的示例,你可以用来亲自部署和体验这些示例。">示例</a></li><li><a href=/v1.1/zh/docs/examples/multicluster/ title="您可以尝试各种基于 VPN 的 Istio 多集群示例。">单一三层网络的多集群网格</a></li><li>集群感知的服务路由</li></ol></nav><article aria-labelledby=title><div class=title-area><div><h1 id=title>集群感知的服务路由</h1><p class=byline><span title="1169 字"><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#clock"/></svg><span> </span>阅读大约需要 6 分钟</span></p></div></div><nav class=toc-inlined aria-label="Table of Contents"><div><hr><ol><li role=none aria-label=开始之前><a href=#%e5%bc%80%e5%a7%8b%e4%b9%8b%e5%89%8d>开始之前</a><li role=none aria-label=多集群设置示例><a href=#%e5%a4%9a%e9%9b%86%e7%be%a4%e8%ae%be%e7%bd%ae%e7%a4%ba%e4%be%8b>多集群设置示例</a><ol><li role=none aria-label="配置 cluster1(主) 集群"><a href=#%e9%85%8d%e7%bd%ae-cluster1-%e4%b8%bb-%e9%9b%86%e7%be%a4>配置 <code>cluster1</code>(主) 集群</a><li role=none aria-label="配置 cluster2"><a href=#%e9%85%8d%e7%bd%ae-cluster2>配置 <code>cluster2</code></a><li role=none aria-label="开始监听 cluster2 集群"><a href=#%e5%bc%80%e5%a7%8b%e7%9b%91%e5%90%ac-cluster2-%e9%9b%86%e7%be%a4>开始监听 <code>cluster2</code> 集群</a></ol></li><li role=none aria-label="示例 service"><a href=#%e7%a4%ba%e4%be%8b-service>示例 service</a><ol><li role=none aria-label="在 cluster2 集群部署 helloworld v2"><a href=#%e5%9c%a8-cluster2-%e9%9b%86%e7%be%a4%e9%83%a8%e7%bd%b2-helloworld-v2>在 <code>cluster2</code> 集群部署 helloworld v2</a><li role=none aria-label="在 cluster1 中部署 helloworld v1"><a href=#%e5%9c%a8-cluster1-%e4%b8%ad%e9%83%a8%e7%bd%b2-helloworld-v1>在 <code>cluster1</code> 中部署 helloworld v1</a><li role=none aria-label="横向分割 EDS 实战"><a href=#%e6%a8%aa%e5%90%91%e5%88%86%e5%89%b2-eds-%e5%ae%9e%e6%88%98>横向分割 EDS 实战</a></ol></li><li role=none aria-label=清理><a href=#%e6%b8%85%e7%90%86>清理</a><li role=none aria-label=相关内容><a href=#see-also>相关内容</a></li></ol><hr></div></nav><p>这个示例展示了如何使用<a href=/v1.1/zh/docs/concepts/multicluster-deployments/#单一控制平面拓扑>单一控制平面拓扑</a>配置一个多集群网格,并使用 Istio 的<code>水平分割 EDS(Endpoints Discovery Service,端点发现服务)</code>特性(在 Istio 1.1 中引入),通过 ingress gateway 将服务请求路由到其他集群。水平分割 EDS 使 Istio 可以基于请求来源的位置,将其路由到不同的 endpoint。</p><p>按照此示例中的说明,您将设置一个两集群网格,如下图所示:</p><figure style=width:80%><div class=wrapper-with-intrinsic-ratio style=padding-bottom:59.05156410387077%><a data-skipendnotes=true href=/v1.1/docs/examples/multicluster/split-horizon-eds/diagram.svg title="单个 Istio 控制平面配置水平分割 EDS,跨越多个 Kubernetes 集群"><img class=element-to-stretch src=/v1.1/docs/examples/multicluster/split-horizon-eds/diagram.svg alt="单个 Istio 控制平面配置水平分割 EDS,跨越多个 Kubernetes 集群"></a></div><figcaption>单个 Istio 控制平面配置水平分割 EDS,跨越多个 Kubernetes 集群</figcaption></figure><p>原始集群 <code>cluster1</code> 将运行完整的 Istio 控制平面组件,而 <code>cluster2</code> 集群仅运行 Istio Citadel、Sidecar Injector 和 Ingress gateway。不需要 VPN 连接,不同集群中的工作负载之间也无需直接网络访问。</p><h2 id=开始之前>开始之前</h2><p>除了安装 Istio 的先决条件之外,此示例还需要以下条件:</p><ul><li><p>两个 Kubernetes 集群(称之为 <code>cluster1</code> 和 <code>cluster2</code>)。</p><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.1/img/icons.svg#callout-warning"/></svg></div><div class=content>为了运行此配置,要求必须可以从 <code>cluster1</code> 集群访问 <code>cluster2</code> 集群的 Kubernetes API server。</div></aside></div></li></ul><ul><li><p><code>kubectl</code> 能通过 <code>--context</code> 参数切换上下文,以支持对不同集群 <code>cluster1</code> 和 <code>cluster2</code> 的访问。
|
||
使用如下命令列出现存的上下文:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl config get-contexts
|
||
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
|
||
* cluster1 cluster1 user@foo.com default
|
||
cluster2 cluster2 user@foo.com default
|
||
</code></pre></li><li><p>使用配置的上下文名称导出以下环境变量:</p><pre><code class=language-bash data-expandlinks=true>$ export CTX_CLUSTER1=<KUBECONFIG_CONTEXT_NAME_FOR_CLUSTER_1>
|
||
$ export CTX_CLUSTER2=<KUBECONFIG_CONTEXT_NAME_FOR_CLUSTER_2>
|
||
</code></pre></li></ul><h2 id=多集群设置示例>多集群设置示例</h2><p>在此示例中,您将安装对控制平面和应用程序 pod 都启用了双向 TLS 的 Istio。为了共享根 CA,您将使用同一个来自 Istio 示例目录的证书,在 <code>cluster1</code> 和 <code>cluster2</code> 集群上创建一个相同的 <code>cacerts</code> secret。</p><p>下面的说明还设置了 <code>cluster2</code> 集群,包含一个无 selector 的 service 和具有 <code>cluster1</code> Istio 入口网关地址的 <code>istio-pilot.istio-system</code> 端点。这将用于通过入口网关安全地访问 <code>cluster1</code> pilot,而无需双向 TLS 终止。</p><h3 id=配置-cluster1-主-集群>配置 <code>cluster1</code>(主) 集群</h3><ol><li>使用 Helm 创建 Istio <code>cluster1</code> 的部署 YAML:</li></ol><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.1/img/icons.svg#callout-warning"/></svg></div><div class=content>如果不确定 <code>helm</code> 的依赖项是否为最新版本, 在运行下列命令前,请先根据 <a href=/v1.1/docs/setup/kubernetes/install/helm/#installation-steps>Helm 安装步骤</a> 更新依赖项.</div></aside></div><pre><code><pre><code class=language-bash data-expandlinks=true>$ helm template --name=istio --namespace=istio-system \
|
||
--set global.mtls.enabled=true \
|
||
--set security.selfSigned=false \
|
||
--set global.controlPlaneSecurityEnabled=true \
|
||
--set global.proxy.accessLogFile="/dev/stdout" \
|
||
--set global.meshExpansion.enabled=true \
|
||
--set 'global.meshNetworks.network2.endpoints[0].fromRegistry'=n2-k8s-config \
|
||
--set 'global.meshNetworks.network2.gateways[0].address'=0.0.0.0 \
|
||
--set 'global.meshNetworks.network2.gateways[0].port'=443 \
|
||
install/kubernetes/helm/istio > istio-auth.yaml
|
||
</code></pre><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.1/img/icons.svg#callout-warning"/></svg></div><div class=content>注意,网关地址设置为了 <code>0.0.0.0</code>.这个值将在下面章节中使用 <code>cluster2</code> 部署后的网关的真实 IP 值替换</div></aside></div></code></pre><ol><li>部署 Istio 到 <code>cluster1</code> 集群:</li></ol><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER1 ns istio-system
|
||
$ kubectl create --context=$CTX_CLUSTER1 secret generic cacerts -n istio-system --from-file=samples/certs/ca-cert.pem --from-file=samples/certs/ca-key.pem --from-file=samples/certs/root-cert.pem --from-file=samples/certs/cert-chain.pem
|
||
$ for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply --context=$CTX_CLUSTER1 -f $i; done
|
||
$ kubectl create --context=$CTX_CLUSTER1 -f istio-auth.yaml
|
||
</code></pre><pre><code>等待 `cluster1` Istio pods 准备完毕:
|
||
|
||
<pre><code class=language-bash data-expandlinks=true>$ kubectl get pods --context=$CTX_CLUSTER1 -n istio-system
|
||
NAME READY STATUS RESTARTS AGE
|
||
istio-citadel-9bbf9b4c8-nnmbt 1/1 Running 0 2m8s
|
||
istio-cleanup-secrets-1.1.0-x9crw 0/1 Completed 0 2m12s
|
||
istio-galley-868c5fff5d-9ph6l 1/1 Running 0 2m9s
|
||
istio-ingressgateway-6c756547b-dwc78 1/1 Running 0 2m8s
|
||
istio-pilot-54fcf8db8-sn9cn 2/2 Running 0 2m8s
|
||
istio-policy-5fcbd55d8b-xhbpz 2/2 Running 2 2m8s
|
||
istio-security-post-install-1.1.0-ww5zz 0/1 Completed 0 2m12s
|
||
istio-sidecar-injector-6dcc9d5c64-7hnnl 1/1 Running 0 2m8s
|
||
istio-telemetry-57875ffb6d-n2vmf 2/2 Running 3 2m8s
|
||
prometheus-66c9f5694-8pccr 1/1 Running 0 2m8s
|
||
</code></pre></code></pre><ol><li><p>在 <code>cluster2</code> 中创建访问服务的入口网关:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER1 -f - <<EOF
|
||
apiVersion: networking.istio.io/v1alpha3
|
||
kind: Gateway
|
||
metadata:
|
||
name: cluster-aware-gateway
|
||
namespace: istio-system
|
||
spec:
|
||
selector:
|
||
istio: ingressgateway
|
||
servers:
|
||
- port:
|
||
number: 443
|
||
name: tls
|
||
protocol: TLS
|
||
tls:
|
||
mode: AUTO_PASSTHROUGH
|
||
hosts:
|
||
- "*.local"
|
||
EOF
|
||
</code></pre><p>此 <code>Gateway</code> 配置 443 端口,以便将传入的流量传递到目标服务并指定 SNI 请求头,以用于本地顶级域名的 SNI 值 (i.e., the <a href=https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/>Kubernetes DNS domain</a>).双向 TLS 链接将会从源端一直到目标端的 sidercar。</p><p>由于两个集群使用都是相同都 Pilot,虽然是应用在 <code>cluster1</code>上,但是网关示例也会影响 <code>cluster2</code>。</p></li></ol><h3 id=配置-cluster2>配置 <code>cluster2</code></h3><ol><li><p>导出 <code>cluster1</code> 的网管地址:</p><pre><code class=language-bash data-expandlinks=true>$ export LOCAL_GW_ADDR=$(kubectl get --context=$CTX_CLUSTER1 svc --selector=app=istio-ingressgateway \
|
||
-n istio-system -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}') && echo ${LOCAL_GW_ADDR}
|
||
</code></pre><p>上述命令设置网关公共的 IP 地址并输出地址。</p><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.1/img/icons.svg#callout-warning"/></svg></div><div class=content>如果负载均衡的配置不包含 IP 地址,上述命令则会失败。DNS 名称支持的服务状态为 pending。</div></aside></div></li><li><p>使用 Helm 创建 Istio <code>cluster2</code> deployment YAML:</p><div><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.1/install/kubernetes/helm/istio/values-istio-remote.yaml>Zip</a><pre><code class=language-bash data-expandlinks=true>$ helm template --name istio-remote --namespace=istio-system \
|
||
--values @install/kubernetes/helm/istio/values-istio-remote.yaml@ \
|
||
--set global.mtls.enabled=true \
|
||
--set gateways.enabled=true \
|
||
--set security.selfSigned=false \
|
||
--set global.controlPlaneSecurityEnabled=true \
|
||
--set global.createRemoteSvcEndpoints=true \
|
||
--set global.remotePilotCreateSvcEndpoint=true \
|
||
--set global.remotePilotAddress=${LOCAL_GW_ADDR} \
|
||
--set global.remotePolicyAddress=${LOCAL_GW_ADDR} \
|
||
--set global.remoteTelemetryAddress=${LOCAL_GW_ADDR} \
|
||
--set gateways.istio-ingressgateway.env.ISTIO_META_NETWORK="network2" \
|
||
--set global.network="network2" \
|
||
install/kubernetes/helm/istio > istio-remote-auth.yaml
|
||
</code></pre></div></li><li><p>部署 Istio 到 <code>cluster2</code>:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER2 ns istio-system
|
||
$ kubectl create --context=$CTX_CLUSTER2 secret generic cacerts -n istio-system --from-file=samples/certs/ca-cert.pem --from-file=samples/certs/ca-key.pem --from-file=samples/certs/root-cert.pem --from-file=samples/certs/cert-chain.pem
|
||
$ kubectl create --context=$CTX_CLUSTER2 -f istio-remote-auth.yaml
|
||
</code></pre><p>等待 <code>cluster2</code> pod 的状态,特别是 <code>istio-ingressgateway</code> 的状态为已就绪:</p></li></ol><pre><code class=language-bash data-expandlinks=true>$ kubectl get pods --context=$CTX_CLUSTER2 -n istio-system -l istio!=ingressgateway
|
||
NAME READY STATUS RESTARTS AGE
|
||
istio-citadel-75c8fcbfcf-9njn6 1/1 Running 0 12s
|
||
istio-cleanup-secrets-1.1.0-vtp62 0/1 Completed 0 14s
|
||
istio-sidecar-injector-cdb5d4dd5-rhks9 1/1 Running 0 12s
|
||
</code></pre><pre><code><div>
|
||
<aside class="callout warning">
|
||
<div class=type>
|
||
<svg class="large-icon"><use xlink:href="/v1.1/img/icons.svg#callout-warning"/></svg>
|
||
</div>
|
||
<div class=content>需要在 <code>cluster1</code> 的控制平面中监听 <code>cluster2</code> 之后,<code>istio-ingressgateway</code> 的状态才会变成已就绪。你可以在下一章节中尝试配置。</div>
|
||
</aside>
|
||
</div>
|
||
|
||
</code></pre><ol><li><p>确定 <code>cluster2</code> 的入口 IP 和端口号</p><ol><li><p>设置 <code>kubectl</code> 当前的上下文为 <code>CTX_CLUSTER2</code></p><pre><code class=language-bash data-expandlinks=true>$ export ORIGINAL_CONTEXT=$(kubectl config current-context)
|
||
$ kubectl config use-context $CTX_CLUSTER2
|
||
</code></pre></li><li><p>根据<a href=/v1.1/docs/tasks/traffic-management/ingress/#determining-the-ingress-ip-and-ports>确定入口 IP 和端口</a>的命令,设置 <code>INGRESS_HOST</code> 和 <code>SECURE_INGRESS_PORT</code> 环境变量。</p></li><li><p>恢复 <code>kubectl</code> 之前的上下文:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl config use-context $ORIGINAL_CONTEXT
|
||
$ unset ORIGINAL_CONTEXT
|
||
</code></pre></li><li><p>输出 <code>INGRESS_HOST</code> 和 <code>SECURE_INGRESS_PORT</code> 的值:</p><pre><code class=language-bash data-expandlinks=true>$ echo The ingress gateway of cluster2: address=$INGRESS_HOST, port=$SECURE_INGRESS_PORT
|
||
</code></pre></li></ol></li><li><p>更新网格网络配置中的 gateway 地址。编辑 <code>istio</code> <code>ConfigMap</code>:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl edit cm -n istio-system --context=$CTX_CLUSTER1 istio
|
||
</code></pre><p>更新 <code>network2</code> 的网关地址和端口,并映射到 <code>cluster2</code> 入口地址和端口,分别保存并退出。</p><p>一旦保存,Pilot 将会自动读取更新后的网络配置。</p><ul><li><p>确定 <code>remote</code> 网关地址:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl get --context=$CTX_REMOTE svc --selector=app=istio-ingressgateway -n istio-system -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}"
|
||
169.61.102.93
|
||
</code></pre></li><li><p>编辑 istio configmap:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl edit cm -n istio-system --context=$CTX_LOCAL istio
|
||
</code></pre></li><li><p>将 <code>network2</code> 的 gateway address 从 <code>0.0.0.0</code> 修改为 <code>remote</code> gateway 地址,保存并退出。</p></li></ul><p>一旦保存,Pilot 将自动读取并更新网络配置。</p></li><li><p>准备环境变量以构建 service account <code>istio-multi</code> 的 <code>n2-k8s-config</code> 文件:</p><pre><code class=language-bash data-expandlinks=true>$ CLUSTER_NAME=$(kubectl --context=$CTX_CLUSTER2 config view --minify=true -o jsonpath='{.clusters[].name}')
|
||
$ SERVER=$(kubectl --context=$CTX_CLUSTER2 config view --minify=true -o jsonpath='{.clusters[].cluster.server}')
|
||
$ SECRET_NAME=$(kubectl --context=$CTX_CLUSTER2 get sa istio-multi -n istio-system -o jsonpath='{.secrets[].name}')
|
||
$ CA_DATA=$(kubectl get --context=$CTX_CLUSTER2 secret ${SECRET_NAME} -n istio-system -o jsonpath="{.data['ca\.crt']}")
|
||
$ TOKEN=$(kubectl get --context=$CTX_CLUSTER2 secret ${SECRET_NAME} -n istio-system -o jsonpath="{.data['token']}" | base64 --decode)
|
||
</code></pre><div><aside class="callout idea"><div class=type><svg class="large-icon"><use xlink:href="/v1.1/img/icons.svg#callout-idea"/></svg></div><div class=content>许多系统上使用 <code>openssl enc -d -base64 -A</code> 替代 <code>base64 --decode</code>。</div></aside></div></li><li><p>在工作目录创建 <code>n2-k8s-config</code> 文件:</p><pre><code class=language-bash data-expandlinks=true>$ cat <<EOF > n2-k8s-config
|
||
apiVersion: v1
|
||
kind: Config
|
||
clusters:
|
||
- cluster:
|
||
certificate-authority-data: ${CA_DATA}
|
||
server: ${SERVER}
|
||
name: ${CLUSTER_NAME}
|
||
contexts:
|
||
- context:
|
||
cluster: ${CLUSTER_NAME}
|
||
user: ${CLUSTER_NAME}
|
||
name: ${CLUSTER_NAME}
|
||
current-context: ${CLUSTER_NAME}
|
||
users:
|
||
- name: ${CLUSTER_NAME}
|
||
user:
|
||
token: ${TOKEN}
|
||
EOF
|
||
</code></pre></li></ol><h3 id=开始监听-cluster2-集群>开始监听 <code>cluster2</code> 集群</h3><ol><li><p>执行下列命令,添加并标记 <code>cluster2</code> Kubernetes 的 secret。执行这些命令之后,<code>cluster1</code> 的 Istio Pilot 将开始监听 <code>cluster2</code> 集群的服务和实例,就像在 <code>cluster1</code> 集群中一样。</p><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER1 secret generic n2-k8s-secret --from-file n2-k8s-config -n istio-system
|
||
$ kubectl label --context=$CTX_CLUSTER1 secret n2-k8s-secret istio/multiCluster=true -n istio-system
|
||
</code></pre></li><li><p>等待 <code>istio-ingressgateway</code>准备完成:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl get pods --context=$CTX_CLUSTER2 -n istio-system -l istio=ingressgateway
|
||
NAME READY STATUS RESTARTS AGE
|
||
istio-ingressgateway-5c667f4f84-bscff 1/1 Running 0 16m
|
||
</code></pre></li></ol><p>现在您已经设置了 <code>cluster1</code> 和 <code>cluster2</code> 集群,可以开始部署示例 service。</p><h2 id=示例-service>示例 service</h2><p>在这个实例中,您将了解到一个 service 的流量是如何在两个集群间分发的。
|
||
如上图所示,您将为 <code>helloworld</code> service 部署两个实例,一个在 <code>cluster1</code> 集群,另一个在 <code>cluster2</code> 集群。两个实例的区别在于其 <code>helloworld</code> 镜像的版本。</p><h3 id=在-cluster2-集群部署-helloworld-v2>在 <code>cluster2</code> 集群部署 helloworld v2</h3><ol><li><p>使用 sidecar 自动注入标签创建一个 <code>sample</code> namespace:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER2 ns sample
|
||
$ kubectl label --context=$CTX_CLUSTER2 namespace sample istio-injection=enabled
|
||
</code></pre></li><li><p>部署 <code>helloworld v2</code>:</p><div><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.1/samples/helloworld/helloworld.yaml>Zip</a><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.1/samples/helloworld/helloworld.yaml>Zip</a><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER2 -f @samples/helloworld/helloworld.yaml@ -l app=helloworld -n sample
|
||
$ kubectl create --context=$CTX_CLUSTER2 -f @samples/helloworld/helloworld.yaml@ -l version=v2 -n sample
|
||
</code></pre></div></li><li><p>确定 <code>helloworld v2</code> 在运行中:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl get po --context=$CTX_CLUSTER2 -n sample
|
||
NAME READY STATUS RESTARTS AGE
|
||
helloworld-v2-7dd57c44c4-f56gq 2/2 Running 0 35s
|
||
</code></pre></li></ol><h3 id=在-cluster1-中部署-helloworld-v1>在 <code>cluster1</code> 中部署 helloworld v1</h3><ol><li><p>使用 sidecar 自动注入标签创建一个 <code>sample</code> namespace:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER1 ns sample
|
||
$ kubectl label --context=$CTX_CLUSTER1 namespace sample istio-injection=enabled
|
||
</code></pre></li><li><p>部署 <code>helloworld v1</code>:</p><div><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.1/samples/helloworld/helloworld.yaml>Zip</a><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.1/samples/helloworld/helloworld.yaml>Zip</a><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER1 -f @samples/helloworld/helloworld.yaml@ -l app=helloworld -n sample
|
||
$ kubectl create --context=$CTX_CLUSTER1 -f @samples/helloworld/helloworld.yaml@ -l version=v1 -n sample
|
||
</code></pre></div></li><li><p>确定 <code>helloworld v1</code> 运行中:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl get po --context=$CTX_CLUSTER1 -n sample
|
||
NAME READY STATUS RESTARTS AGE
|
||
helloworld-v1-d4557d97b-pv2hr 2/2 Running 0 40s
|
||
</code></pre></li></ol><h3 id=横向分割-eds-实战>横向分割 EDS 实战</h3><p>我们将从另一个集群中 <code>sleep</code> 服务请求 <code>helloworld.sample</code> 服务。</p><ol><li><p>部署 <code>sleep</code> 服务:</p><div><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.1/samples/sleep/sleep.yaml>Zip</a><pre><code class=language-bash data-expandlinks=true>$ kubectl create --context=$CTX_CLUSTER1 -f @samples/sleep/sleep.yaml@ -n sample
|
||
</code></pre></div></li><li><p>等到 <code>sleep</code> 服务启动:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl get po --context=$CTX_CLUSTER1 -n sample -l app=sleep
|
||
sleep-754684654f-n6bzf 2/2 Running 0 5s
|
||
</code></pre></li><li><p>多次请求 <code>helloworld.sample</code> 服务:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl exec --context=$CTX_CLUSTER1 -it -n sample -c sleep $(kubectl get pod --context=$CTX_CLUSTER1 -n sample -l app=sleep -o jsonpath='{.items[0].metadata.name}') -- curl helloworld.sample:5000/hello
|
||
</code></pre></li></ol><p>如果设置正确,到 <code>helloworld.sample</code> 服务的流量将在 <code>cluster1</code> 和 <code>cluster2</code> 实例之间进行分发,导致响应 body 中 <code>v1</code> 或 <code>v2</code> 都可能出现。</p><pre><code class=language-sh data-expandlinks=true>Hello version: v2, instance: helloworld-v2-758dd55874-6x4t8
|
||
</code></pre><pre><code class=language-sh data-expandlinks=true>Hello version: v1, instance: helloworld-v1-86f77cd7bd-cpxhv
|
||
</code></pre><p>您可以通过打印 <code>sleep</code> pod 的 <code>istio-proxy</code> 容器日志来验证访问的 endpoint 的 IP 地址。</p><pre><code class=language-bash data-expandlinks=true>$ kubectl logs --context=$CTX_CLUSTER1 -n sample $(kubectl get pod --context=$CTX_CLUSTER1 -n sample -l app=sleep -o jsonpath='{.items[0].metadata.name}') istio-proxy
|
||
[2018-11-25T12:37:52.077Z] "GET /hello HTTP/1.1" 200 - 0 60 190 189 "-" "curl/7.60.0" "6e096efe-f550-4dfa-8c8c-ba164baf4679" "helloworld.sample:5000" "192.23.120.32:15443" outbound|5000||helloworld.sample.svc.cluster.local - 10.20.194.146:5000 10.10.0.89:59496 -
|
||
[2018-11-25T12:38:06.745Z] "GET /hello HTTP/1.1" 200 - 0 60 171 170 "-" "curl/7.60.0" "6f93c9cc-d32a-4878-b56a-086a740045d2" "helloworld.sample:5000" "10.10.0.90:5000" outbound|5000||helloworld.sample.svc.cluster.local - 10.20.194.146:5000 10.10.0.89:59646 -
|
||
</code></pre><p>v2 被调用时将记录 <code>cluster2</code> 网关 IP <code>192.23.120.32:15443</code>,v1 被调用时将记录 <code>cluster1</code> 实例 IP <code>10.10.0.90:5000</code>。</p><h2 id=清理>清理</h2><p>执行下列命令清理 demo 服务 <strong>and</strong> Istio 组件。</p><p>清理 <code>cluster2</code> 集群:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl delete --context=$CTX_CLUSTER2 -f istio-remote-auth.yaml
|
||
$ kubectl delete --context=$CTX_CLUSTER2 ns istio-system
|
||
$ kubectl delete --context=$CTX_CLUSTER2 ns sample
|
||
$ unset CTX_CLUSTER2 CLUSTER_NAME SERVER SECRET_NAME CA_DATA TOKEN INGRESS_HOST SECURE_INGRESS_PORT INGRESS_PORT
|
||
$ rm istio-remote-auth.yaml
|
||
</code></pre><p>清理 <code>cluster1</code> 集群:</p><pre><code class=language-bash data-expandlinks=true>$ kubectl delete --context=$CTX_CLUSTER1 -f istio-auth.yaml
|
||
$ kubectl delete --context=$CTX_CLUSTER1 ns istio-system
|
||
$ for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl delete --context=$CTX_CLUSTER1 -f $i; done
|
||
$ kubectl delete --context=$CTX_CLUSTER1 ns sample
|
||
$ unset CTX_CLUSTER1
|
||
$ rm istio-auth.yaml n2-k8s-config
|
||
</code></pre><nav id=see-also><h2>相关内容</h2><div class=see-also><div class=entry><p class=link><a data-skipendnotes=true href=/v1.1/zh/docs/setup/kubernetes/install/multicluster/gateways/>Gateway 连接</a></p><p class=desc>使用 Istio Gateway 跨越多个 Kubernetes 集群安装 Istio 网格以访问远程 pod。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.1/zh/docs/examples/multicluster/gke/>Google Kubernetes Engine</a></p><p class=desc>基于 GKE 的 Istio 多集群安装。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.1/zh/docs/examples/multicluster/iks-icp/>IBM Cloud Kubernetes Service & IBM Cloud Private</a></p><p class=desc>IBM Cloud Kubernetes Service 和 IBM Cloud Private 之间的多集群示例。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.1/zh/docs/examples/multicluster/icp/>IBM Cloud Private</a></p><p class=desc>多 IBM Cloud Private 集群安装 Istio 示例。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.1/zh/docs/setup/kubernetes/install/multicluster/vpn/>VPN 连接</a></p><p class=desc>通过直连远程 pods 实现多 Kubernetes 集群安装 Istio 网格。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.1/zh/docs/examples/multicluster/gateways/>通过网关进行连接的多集群</a></p><p class=desc>在一个使用网关进行连接的多集群网格中配置远程服务。</p></div></div></nav></article><nav class=pagenav><div class=left><a title="IBM Cloud Kubernetes Service 和 IBM Cloud Private 之间的多集群示例。" href=/v1.1/zh/docs/examples/multicluster/iks-icp/><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#left-arrow"/></svg>IBM Cloud Kubernetes Service & IBM Cloud Private</a></div><div class=right></div></nav><div id=endnotes-container aria-hidden=true><h2>链接</h2><ol id=endnotes></ol></div></div><div class=toc-container><nav class=toc aria-label="Table of Contents"><div id=toc><ol><li role=none aria-label=开始之前><a href=#%e5%bc%80%e5%a7%8b%e4%b9%8b%e5%89%8d>开始之前</a><li role=none aria-label=多集群设置示例><a href=#%e5%a4%9a%e9%9b%86%e7%be%a4%e8%ae%be%e7%bd%ae%e7%a4%ba%e4%be%8b>多集群设置示例</a><ol><li role=none aria-label="配置 cluster1(主) 集群"><a href=#%e9%85%8d%e7%bd%ae-cluster1-%e4%b8%bb-%e9%9b%86%e7%be%a4>配置 <code>cluster1</code>(主) 集群</a><li role=none aria-label="配置 cluster2"><a href=#%e9%85%8d%e7%bd%ae-cluster2>配置 <code>cluster2</code></a><li role=none aria-label="开始监听 cluster2 集群"><a href=#%e5%bc%80%e5%a7%8b%e7%9b%91%e5%90%ac-cluster2-%e9%9b%86%e7%be%a4>开始监听 <code>cluster2</code> 集群</a></ol></li><li role=none aria-label="示例 service"><a href=#%e7%a4%ba%e4%be%8b-service>示例 service</a><ol><li role=none aria-label="在 cluster2 集群部署 helloworld v2"><a href=#%e5%9c%a8-cluster2-%e9%9b%86%e7%be%a4%e9%83%a8%e7%bd%b2-helloworld-v2>在 <code>cluster2</code> 集群部署 helloworld v2</a><li role=none aria-label="在 cluster1 中部署 helloworld v1"><a href=#%e5%9c%a8-cluster1-%e4%b8%ad%e9%83%a8%e7%bd%b2-helloworld-v1>在 <code>cluster1</code> 中部署 helloworld v1</a><li role=none aria-label="横向分割 EDS 实战"><a href=#%e6%a8%aa%e5%90%91%e5%88%86%e5%89%b2-eds-%e5%ae%9e%e6%88%98>横向分割 EDS 实战</a></ol></li><li role=none aria-label=清理><a href=#%e6%b8%85%e7%90%86>清理</a><li role=none aria-label=相关内容><a href=#see-also>相关内容</a></li></ol></div></nav></div></main><footer><div class=user-links><a class=channel title="Go download Istio 1.1.9 now" href=https://github.com/istio/istio/releases/tag/1.1.9 aria-label="Download Istio"><span>download</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#download"/></svg>
|
||
</a><a class=channel title="加入 Istio discussion board 参与讨论获取帮助" href=https://discuss.istio.io aria-label="Istio discussion board"><span>discuss</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#discourse"/></svg></a>
|
||
<a class=channel title="Stack Overflow 中列举了针对实际问题以及部署、配置和使用 Istio 的各项回答" href=https://stackoverflow.com/questions/tagged/istio aria-label="Stack Overflow"><span>stack overflow</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#stackoverflow"/></svg></a>
|
||
<a class=channel title="关注我们的 Twitter 来获取最新信息" href=https://twitter.com/IstioMesh aria-label=Twitter><span>twitter</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#twitter"/></svg></a><div class=tag>对于用户</div></div><div class=info><p class=copyright>中文内容由 ServiceMesher 社区维护,部分文档可能稍微滞后于英文版本,同步工作持续进行中<br>Istio 归档
|
||
1.1.9<br>© 2019 Istio Authors, <a href=https://policies.google.com/privacy>隐私政策</a><br>归档于 2019年6月18日</p></div><div class=dev-links><a class=channel title="Istio 的代码在 GitHub 上开发" href=https://github.com/istio/community aria-label=GitHub><span>github</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#github"/></svg></a>
|
||
<a class=channel title="在 Slack 上与 Istio 社区交互讨论开发问题(仅限邀请)" href=https://istio.slack.com aria-label=slack><span>slack</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#slack"/></svg></a>
|
||
<a class=channel title="如果您想深入了解 Istio 的技术细节,请查看我们日益完善的设计文档" href=https://groups.google.com/forum/#!forum/istio-team-drive-access aria-label="team drive"><span>drive</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#drive"/></svg></a>
|
||
<a class=channel title="如果您想为 Istio 项目做出贡献,请考虑加入我们的工作组" href=https://github.com/istio/community/blob/master/WORKING-GROUPS.md aria-label="working groups"><span>working groups</span><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#working-groups"/></svg></a><div class=tag>对于开发者</div></div></footer><div id=scroll-to-top-container aria-hidden=true><button id=scroll-to-top title=回到顶部><svg class="icon"><use xlink:href="/v1.1/img/icons.svg#top"/></svg></button></div></body></html> |