大家好,又见面了,我是你们的朋友全栈君。
服务网格(Service Mesh)这个术语通常用于描述构成这些应用程序的微服务网络以及应用之间的交互。随着规模和复杂性的增长,服务网格越来越难以理解和管理。它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如 A/B 测试、金丝雀发布、限流、访问控制和端到端认证等。
1.out-of-band telemetry propogation:带外遥测繁殖
2.Control flow during request processing:请求处理期间的控制流程
3.Application traffic:前景流量
Sidecar:代理负责证书生命周期的管理,包括证书的生成、分发、刷新和注销。在Pod内部sidecar会与应用容器之间建立本地TCP连接,其中使用mTLS(双向传输层加密)。
因为一个节点上甚至一个Pod内都不一定运行一个容器,容器可能会被暴露到外部访问,保证传输层的双向加密,可以保证流量传输的安全。
用于连接、保护、控制和观测服务 Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。想要让服务支持 Istio,只需要在您的环境中部署一个特殊的 sidecar 代理,使用 Istio 控制平面功能配置和管理代理,拦截微服务之间的所有网络通信:
Istio 旨在实现可扩展性,满足各种部署需求。 Istio 简化了断路器、超时和重试等服务级别属性的配置,并且可以轻松设置 A/B测试、金丝雀部署和基于百分比的流量分割的分阶段部署等重要任务。
Istio 是独立于平台的,旨在运行在各种环境中,包括跨云、内部部署、Kubernetes、Mesos 等。您可以在 Kubernetes 上部署 Istio 或具有 Consul 的 Nomad 上部署。Istio 目前支持:
Istio 服务网格逻辑上分为数据平面和控制平面。
架构
实现服务连接架构
Mixer 是一个独立于平台的组件,负责在服务网格上执行访问控制和使用策略,并从 Envoy 代理和其他服务收集遥测数据。代理提取请求级属性,发送到 Mixer 进行评估。有关属性提取和策略评估的更多信息,请参见 Mixer 配置。 Mixer 中包括一个灵活的插件模型,使其能够接入到各种主机环境和基础设施后端,从这些细节中抽象出 Envoy 代理和 Istio 管理的服务。
Pilot 为 Envoy sidecar 提供服务发现功能,为智能路由(例如 A/B 测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能。它将控制流量行为的高级路由规则转换为特定于 Envoy 的配置,并在运行时将它们传播到 sidecar。
Pilot 将平台特定的服务发现机制抽象化并将其合成为符合 Envoy 数据平面 API 的任何 sidecar 都可以使用的标准格式。这种松散耦合使得 Istio 能够在多种环境下运行(例如,Kubernetes、Consul、Nomad),同时保持用于流量管理的相同操作界面。
Citadel 通过内置身份和凭证管理可以提供强大的服务间和最终用户身份验证。可用于升级服务网格中未加密的流量,并为运维人员提供基于服务标识而不是网络控制的强制执行策略的能力。从 0.5 版本开始,Istio 支持基于角色的访问控制,以控制谁可以访问您的服务。
[root@k8-master-1 istio-1.0.0]# kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
grafana ClusterIP 10.111.208.248 <none> 3000/TCP
istio-citadel ClusterIP 10.100.90.87 <none> 8060/TCP,9093/TCP
istio-egressgateway ClusterIP 10.104.226.35 <none> 80/TCP,443/TCP
istio-galley ClusterIP 10.111.83.5 <none> 443/TCP,9093/TCP
istio-ingressgateway NodePort 10.104.131.107 <none> 80:31380/TCP,443:31390/TCP,31400:31400/T
istio-pilot ClusterIP 10.107.79.16 <none> 15010/TCP,15011/TCP,8080/TCP,9093/TCP
istio-policy ClusterIP 10.107.216.191 <none> 9091/TCP,15004/TCP,9093/TCP
istio-sidecar-injector ClusterIP 10.105.23.193 <none> 443/TCP
istio-statsd-prom-bridge ClusterIP 10.107.140.36 <none> 9102/TCP,9125/UDP
istio-telemetry ClusterIP 10.107.51.138 <none> 9091/TCP,15004/TCP,9093/TCP,42422/TCP
jaeger-agent ClusterIP None <none> 5775/UDP,6831/UDP,6832/UDP
jaeger-collector ClusterIP 10.98.131.177 <none> 14267/TCP,14268/TCP
jaeger-query ClusterIP 10.101.114.183 <none> 16686/TCP
prometheus ClusterIP 10.111.99.143 <none> 9090/TCP
servicegraph NodePort 10.102.175.94 <none> 8088:30009/TCP
tracing ClusterIP 10.100.254.132 <none> 80/TCP
zipkin ClusterIP 10.100.208.206 <none> 9411/TCP
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127869.html原文链接:https://javaforall.cn