like me ilikeoj( 三 )


文章插图

Istio 使用Envoy Proxy作为 sidecar 容器内的网络代理,并配置 Pod 以通过 Envoy 代理(sidecar 容器)发送所有入站/出站流量 。
使用 Istio 时,服务之间的通信不是直接的 。尽管如此,通过 sidecar 容器(Envoy 代理),当服务 A 请求服务 B 时,请求会使用其 DNS 名称发送到服务 A 的代理容器 。然后服务 A 的代理容器将请求发送到服务 B 的代理容器,最终调用真正的服务 B 。按照反向路径进行响应 。

like me ilikeoj

文章插图

Envoy 代理 sidecar 容器实现了以下功能:
  • 跨服务的智能路由和负载平衡 。
  • 故障注入 。
  • 弹性:重试和断路器 。
  • 可观察性和遥测:指标和跟踪 。
  • 安全性:加密和授权 。
如下图所示,sidecar 容器实现的功能与五个微服务完美匹配:发现、弹性、身份验证、监控和跟踪 。
like me ilikeoj

文章插图

在容器中拥有微服务逻辑有几个优点:
  • 业务代码与微服务完全隔离 。
  • 所有服务都使用完全相同的实现,因为它们使用相同的容器 。
  • 它的代码是独立的 。服务可以用任何语言实现,但这些横切关注点始终相同 。
  • 所有服务的配置过程和参数都是相同的 。
但是 Istio 在内部是如何工作的,为什么我们需要 Istio 而不仅仅是 Envoy 代理?
实践案例Envoy 代理是一个轻量级的网络代理,可以单独使用,但是当部署数十个服务时,需要配置数十个 Envoy 代理 。事情可能会变得有点复杂和麻烦 。Istio 简化了这个过程 。
从架构上讲,Istio 服务网格由数据平面和控制平面组成 。
数据平面由部署为 sidecar 的 Envoy 代理组成 。该代理拦截服务之间的所有网络通信 。它还收集和报告所有网状流量的遥测数据 。
控制平面管理和配置 Envoy 代理 。
下图总结了这两个组件:
like me ilikeoj

文章插图

安装 Istio我们需要一个 Kubernetes 集群来安装 Istio 。对于本文,我们使用Minikube,但任何其他 Kubernetes 集群都可能有效 。
运行以下命令启动集群:
minikube start -p istio --kubernetes-version=\'v1.19.0\' --vm-driver=\'virtualbox\' --memory=4096[istio] minikube v1.17.1 on Darwin 11.3Kubernetes 1.20.2 is now available. If you would like to upgrade, specify: --kubernetes-version=v1.20.2minikube 1.19.0 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.19.0To disable this notice, run: \'minikube config set WantUpdateNotification false\'? 使用基于现有配置文件的 virtualbox 驱动程序
? 您无法更改现有 minikube 集群的内存大小 。请先删除集群 。
Starting control plane node istio in cluster istioRestarting existing virtualbox VM for "istio" ...Preparing Kubernetes v1.19.0 on Docker 19.03.12 ...Verifying Kubernetes components...Enabled addons: storage-provisioner, default-storageclassDone! kubectl is now configured to use "istio" cluster and "" namespace by default在 Kubernetes 集群启动并运行后,下载istioctl CLI 工具以在集群中安装 Istio 。在这种情况下,我们从发布页面下载 Istio 1.9.4。
安装该istioctl工具后,我们可以继续在集群中部署 Istio 。Istio 附带了不同的配置文件,但要开始使用 Istio,演示配置文件是完美的 。
istioctl install --set profile=demo -y
Detected that your cluster does not support third party JWT authentication. Falling back to less secure first party JWT. See https://istio.io/docs/ops/best-practices/security/#configure-third-party-service-account-tokens for details.


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。