0
点赞
收藏
分享

微信扫一扫

1、istio工作原理

yellowone 2023-06-11 阅读 42

istio 目录是 Istio 控制面(Control Plane)的安装目录,其中包含了 Istio 的所有核心组件及配置文件。 具体来说:

bin 包含 Istio 控制平面组件(例如 istioctl 工具)的可执行文件。目录中包含了一些 Istio 工具的二进制文件,例如 istioctl 和 pilot-agent。

manifests 目录中包含了 Istio 的 Kubernetes manifest 文件,这些文件定义了 Istio 控制面所需的各个 Kubernetes 资源对象,例如 Service、Deployment、ConfigMap 等等。这些文件可以用于在 Kubernetes 集群上部署 Istio 控制面。

samples 目录中包含了一些使用 Istio 实现常见应用程序模式的示例文件,例如 Bookinfo 应用程序示例。

tools 目录中包含了一些辅助 Istio 安装、配置和部署的脚本和工具。

LICENSE:Istio 软件的许可证。 manifest.yaml:Istio 所有 Kubernetes manifeset 的主文件。

README.md:提供 Istio 安装指南、版本说明、升级和其他重要信息

因此,可以认为 istio 目录是 Istio 控制面的数据目录,其中包含了 Istio 控制面所需的所有数据和文件。


这个命令是 Istioctl 中的一个子命令,用于列出可用的 Istio 配置文件(profile)。Istio 配置文件是预定义的一组配置,它们描述了在 Istio 网格中部署的应用程序的行为。选择正确的配置文件有助于快速、简便地启用各种 Istio 功能,如流量管理、安全性和观测等。通过运行 istioctl profile list 命令,您可以查看所有可用的 Istio 配置文件,并根据您的需求选择最适合的配置文件。

[root@k8s-master01 manifests]# istioctl profile list

Istio configuration profiles:

   ambient

   default

   demo

   empty

   external

   minimal

   openshift

   preview

   remote

这几个 Istio 的配置 profile 都是为了满足不同的使用场景而设计的,它们各有不同的配置选项和默认值。以下是每个配置 profile 的简要说明:

ambient:适用于轻量级应用程序,该配置文件启用了最小量的 Istio 功能,并将剩余的功能留给 Kubernetes 和 Envoy 自己来处理。

default:这是 Istio 的默认配置文件,它旨在提供一组通用的配置选项,以便在不需要进行大量自定义的情况下使用 Istio。

demo:适用于演示和快速测试,该配置文件启用了所有功能并设置了较强的安全性和可观察性。

empty:该配置文件仅启用 Istio 的基本功能,并禁用所有其他功能。

external:适用于在 Istio 网格之外运行的服务。该配置文件启用了仅与 Istio Service Mesh 集成必需的功能。

minimal:这是一个非常精简的配置文件,适用于只需要少量 Istio 功能的环境。

openshift:专门针对 OpenShift 平台进行了优化的配置文件,包括特定于平台的插件和适当的默认值。

preview:提供一组实验性质的功能,以便用户尝试新功能并提供反馈。

remote:适用于远程 Istio 控制平面的配置文件,用于在 Kubernetes 集群之间进行多集群部署。

总体而言,这些配置文件提供了一组选项,可以根据具体的应用程序要求进行自定义。可以根据自己的需求选择不同的配置 profile,或者创建自定义 profile 来满足特定的需要。

列出某一个配置档案的内容

istioctl profile dump default istioctl profile dump default > /root/default.yml

部署isito控制平台

istioctl apply --set profile=default -y # 等default可以不用写 或 istioctl apply -f default.yml -y

控制平台默认部署在istio-system,也是服务网络的根名称空间

查看pods

[root@k8s-master01 manifests]# kubectl get pods -n istio-system

NAME                                    READY   STATUS    RESTARTS   AGE

istio-ingressgateway-5555ccdc98-7dcnl   1/1     Running   0          8m46s

istiod-7fd9d6dd48-bfvtn                 1/1     Running   0          10m

[root@k8s-master01 manifests]# 

部署addons文件

这两个 Pod 分别是 Istio 中的核心组件: istiod Pod:负责 Istio 的控制平面,包括服务发现、路由规则配置等。它还托管了 Istio 的 Web 控制台。 istio-ingressgateway Pod:Istio 入口网关,用于将外部流量引入到 Kubernetes 集群中,并为它们提供 Istio 服务网格中的功能,比如流量管理、安全、追踪和可观察性等。 数据平面会自动注入sider,会在对应命名空间的pod都会被自动注入sidcar,此为数据平面

kubectl label namespace default istio-injection=enabled
kubectl get namespace default --show-labels

验证部署有没有问题

istioctl verify-install -f /root/default.yml

部署istio集成的第三方组件

addons 目录是 Istio 服务网格的扩展组件目录,它包含了一些与 Istio 集成的第三方组件。其中:

extras: 包含额外的示例配置文件。 grafana.yaml: Istio 的监控组件 Grafana 的配置文件。 jaeger.yaml: 分布式跟踪系统 Jaeger 的配置文件。 kiali.yaml: Istio 的可观察性控制台 Kiali 的配置文件。 prometheus.yaml: Istio 的监控组件 Prometheus 的配置文件。 README.md: 对这个目录及其内容的简单描述文档。 这些组件可以帮助用户更好地管理和监控 Istio 中的服务,优化其性能并提高可靠性

cd /usr/local/istio/samples/addons
kubectl apply -f ./
kubectl get pods -n istio-system
kubectl get crds
kubectl api-resources --api-group=gateways.networking.istio.io

istioctl x uninstall --purge:卸载控制平面组件

    调整网格级别控制平面的配置:支持基于已经部署调整配置
        istioctl apply/install

    部署档案对应存在Kubernetes原生格式的资源配置:
        istioctl manifest generate --set profile=demo | kubectl apply -f -

Istio是一个开源的服务网格框架,它的主要功能是提供流量管理、安全策略和监控能力。而Pilot、Galley和Citadel则是Istio的三个组件,各自担任不同的角色:

Pilot负责服务发现、负载均衡、流量路由和故障恢复等功能,同时也是整个网格中数据平面上的代理。

Galley则是Istio配置系统的组件,它负责收集所有关于Istio实例和其它相关资源的配置信息,并对其进行验证和分发。

Citadel是Istio的身份认证和安全控制组件,它应用了MUTUAL TLS协议来保护服务之间的通信。 这三个组件共同构成了Istio的控制平面,负责管理整个服务网格的运行和安全。因此,它们与Istio密切相关,是Istio实现其核心功能的重要组成部分。

Galley是Istio的配置管理组件,它负责从Kubernetes API Server和其他来源收集Istio实例和其它相关资源的配置信息,并对这些信息进行验证和分发。具体来说,它的功能包括:

配置文件的合并:Galley可以将多个配置文件合并为单个配置文件,以便于Istio控制平面使用。 配置文件的验证:Galley会对配置文件进行验证,确保它们符合Istio规范和安全要求。 配置文件的分发:Galley会将经过验证的配置文件分发到Istio控制平面中的所有组件,以确保它们都使用相同的配置信息。 配置存储的备份和恢复:Galley还可以定期备份Istio配置信息,并在需要时恢复这些信息,以确保Istio控制平面的可靠性和稳定性。 总之,Galley是Istio的重要组成部分,它负责管理Istio的配置信息,并确保这些信息的合法性、一致性和可靠性。

Istio-proxy(也称为Envoy代理)是Istio服务网格中数据平面上的代理,用于处理所有进出服务网格的流量。它被设计成一个轻量、高性能的网络代理,具有以下重要功能:

流量管理:Istio-proxy可以拦截所有进出服务网格的流量,并将请求路由到相应的目标服务。同时,它支持灰度发布和流量分流等高级路由策略,以优化服务的性能和稳定性。 安全控制:Istio-proxy内置了诸多安全功能,包括HTTP/2和TLS支持,身份认证、访问控制和流量加密等。这些功能可以帮助保护服务之间的通信安全,防止恶意攻击和数据泄露等风险。 监测和追踪:Istio-proxy可以生成详细的访问日志和指标数据,以便进行性能优化和故障排查。同时,它还支持OpenTracing和Zipkin等跟踪工具,可以提供更细粒度的监测和追踪能力。 总之,Istio-proxy是Istio服务网格的核心组件之一,它负责处理所有进出服务网格的流量,并提供各种高级功能,如流量管理、安全控制和监测追踪等。它的出色性能和灵活性,可以帮助企业轻松构建可靠、安全、高效的服务网格架构。

Istio服务网格的三个核心组件——Pilot、Galley和Istio-proxy,各自承担着不同的任务,但它们之间也有一些重叠的功能。

首先,Pilot确实是一个流量管理组件,它负责控制服务之间的流量路由、负载均衡、故障恢复等操作。但是,Pilot的主要职责是在控制平面中(也就是Istio的服务器端)进行这些操作,而不是在数据平面中(也就是Istio-proxy所处的位置)进行。因此,在数据平面上,Istio-proxy仍然需要起到拦截所有进出网格的流量并按照Pilot定义的规则进行路由和负载均衡的作用。

其次,Galley确实是一个Istio的配置管理组件,它用于从集群中收集配置信息,并对这些信息进行验证和分发。其中,Galley能够支持安全相关的配置,例如证书、TLS选项和访问策略等,来保护服务之间的通信安全。但实际上,这些安全相关的配置都是由Envoy(即Istio-proxy)来应用和执行的。因此,可以说Galley更多地是为Istio-proxy提供了一些必要的配置信息,以便代理能够执行安全相关的任务。

最后,Istio-proxy作为数据平面上的代理,确实承担了流量管理、安全控制等诸多任务。它可以拦截所有进出服务网格的流量,并将请求路由到相应的目标服务,同时执行访问控制、身份认证和流量加密等安全功能。因此,可以说Istio-proxy是Istio服务网格中最关键的组件之一,在网格架构中起着至关重要的作用。

综上所述,虽然Pilot和Galley也具有一些与Istio-proxy重叠的功能,但它们更多地是在控制平面上进行操作,而Istio-proxy则是在数据平面上进行操作。三个组件协同工作,共同组成一个完整的服务网格环境,为服务间通信提供流量管理、安全控制和监测追踪等各种必要功能。

在Istio服务网格中,Pilot负责控制平面上的流量管理、路由和负载均衡等任务,而Istio-proxy则负责在数据平面上实现这些任务。

具体来说,在Istio服务网格中,请求首先会到达Istio-proxy,然后Istio-proxy会根据Pilot定义的规则对请求进行路由和负载均衡。例如,如果请求需要访问特定版本的服务,则Istio-proxy会将请求转发至符合要求的目标服务,同时采用指定的负载均衡算法,以确保请求能够被正确地处理。

需要注意的是,在Istio服务网格中,Istio-proxy并不是简单地将请求转发给目标服务,它还会对请求进行一些安全控制操作,例如身份认证、访问控制和流量加密。这些安全相关的操作都是由Istio-proxy自行处理的,而不需要Pilot进行干预。

因此,可以说Istio-proxy是Istio服务网格中最重要的组件之一,它在数据平面上为整个服务网格提供了高效、安全、可靠的流量管理功能。

在Istio服务网格中,Galley负责管理Istio的配置信息,其中包括安全相关的配置信息,如证书、TLS选项和访问策略等。

当Galley检测到有新的安全配置信息或更新时,它会将这些信息分发给整个Istio控制平面,并通知Istio-proxy来应用这些新的安全配置。具体来说,Galley会下发一些包含安全相关指令和配置信息的命令给Istio-proxy,以便代理能够执行相应的安全操作,例如身份认证、访问控制和流量加密等。

需要注意的是,Galley只负责收集和分发Istio的配置信息,而具体的安全操作都是由Istio-proxy在数据平面上执行的。因此,在实际运行中,Istio-proxy会根据Galley下发的命令,自主地进行身份认证、访问控制和流量加密等安全操作,以保护服务之间的通信安全。

Citadel是Istio服务网格中的一个安全组件,主要负责身份认证和授权等任务。在Istio服务网格中,Citadel确实会生成和管理服务之间通信的证书,并将这些证书下发给Istio-proxy来执行相应的安全操作。

具体来说,当服务向服务网格注册时,Citadel会为每个服务生成一个唯一的证书和私钥,并同时更新Istio中ServiceAccount与Kubernetes集群中ServiceAccount的关系。然后,Citadel会将这些证书和私钥分发给Istio控制平面和数据平面上的Istio-proxy,以便代理能够使用它们进行身份认证和流量加密等安全操作。

需要注意的是,虽然Citadel确实可以生成和管理证书和私钥等安全相关的信息,但它并不直接向Istio-proxy发送命令或指令。取而代之的是,Istio-proxy会从Istio控制平面中读取相应的安全配置信息,然后自主地执行安全相关的操作。因此,在实际运行中,安全相关的操作都是由Istio-proxy自主完成的,而不是由Citadel直接向代理发送命令。

Istio-proxy是一种Envoy-based的代理,它被部署在服务端口旁边作为sidecar代理,用于处理来自应用程序的流量,并实现强大的服务网格功能,例如流量控制、故障注入、安全性等。Istio-proxy还可以透明地为应用程序建立TLS连接,并对传入和传出的流量进行身份验证和授权。

因此,Galley和Istio-proxy在Istio Service Mesh中扮演着不同但相互依赖的角色,共同实现了Istio提供的丰富的服务网格功能。

在Istio Service Mesh中,业务容器旁边部署的sidecar代理通常就是istio-proxy。istio-proxy是一种Envoy-based的代理,用于处理来自应用程序的流量,并实现强大的服务网格功能,例如流量控制、故障注入、安全性等。

当您使用Istio将应用程序加入到Service Mesh中时,Istio会自动在每个Pod中部署一个Sidecar代理(即istio-proxy),同时将所有传入和传出的网络流量都通过这个代理进行处理。

因此,如果您看到一个业务容器旁边有一个Sidecar代理,那么这个代理很可能就是istio-proxy。

Istio系统组件:
    控制平面:
        istiod:
            pilot, galley, citedal

        部署方法:istioctl, istio operator, helm

    数据平面:
        Gateway:
            istio-ingressgateway
            istio-egressgateway
            istio-eastwestgateway
        Sidecar:
            istio-proxy:二次开发的envoy
            手工注入:istioctl kube-inject
            自动注入:在目标namespace上设定label
                istio-injection=enabled

        部署:随微服务部署启用Sidecar自动注入
		
部署方法:
    istioctl:手动
    istio operator:部署Operator
        IstioOperator CRD
    helm
        Charts

当您使用Istio来管理服务网格时,可以将整个网络架构分为数据面和控制面两部分。其中,数据面负责实际的流量转发和处理,而控制面则用于配置和管理整个网络。

在数据面中,Ingress Gateway是一个Kubernetes资源,它作为入口点将HTTP/HTTPS流量导入到集群中。它通常位于网络的边缘,在Ingress资源中定义的规则基础上路由传入的流量到后端服务。Ingress Gateway还可以执行基本的负载均衡和SSL终止等操作。

与此同时,Istio Proxy是一个专门用于实现服务间通信的代理组件。Istio Proxy以sidecar container的方式运行在应用程序容器旁边,拦截所有进出容器的流量,并负责实现Istio的服务网格功能,如流量管理、安全性保障和追踪。Istio Proxy通过与控制面组件(如Pilot、Mixer)通信获取配置更新并执行策略。

在实现数据面网络功能方面,Ingress Gateway和Istio Proxy都起着重要的作用。Ingress Gateway负责管理进入集群的外部流量,而Istio Proxy则负责管理集群内部的流量。这两个组件可以一起使用,提供端到端的流量管理能力,例如将从Ingress Gateway接收到的流量路由到集群中合适的服务,使用Istio Proxy的虚拟服务和目的地规则等流量管理功能。此外,Istio Proxy还可以处理断路器和自动重试以实现容错能力。

Istio主要包括三块功能:

流量管理:这一部分包括流量路由、负载均衡、故障注入、流量转移和流量控制等组件,

如下所示:

Pilot:用于流量管理和服务发现,负责管理Istio服务网格中所有智能代理的配置信息。 Mixer:支持策略执行、遥测数据收集、日志记录和访问控制等功能,与智能代理通信并提供了一种扩展框架。

Citadel:提供基于身份验证和授权的服务间和端点之间的安全性。 Ingress Gateway:作为入口点将HTTP/HTTPS流量导入到集群中,并提供一些基础的流量管理功能,如路由、负载均衡等。 Istio Proxy:在服务之间传递请求和响应时的代理组件,负责实现服务之间的流量管理、追踪、故障恢复等功能。 安全:这一部分包括身份认证和授权、传输层安全(TLS)、准入控制、安全审计等组件,

如下所示:

Citadel:提供基于身份验证和授权的服务间和端点之间的安全性。 Authentication Policy:定义要求对网格内某些或所有请求进行身份验证的规则。 Authorization Policy:定义哪些用户或服务可以访问哪些资源。 可观测化:这一部分包括流量追踪、指标收集和日志记录等组件,如下所示: Jaeger:用于进行分布式跟踪并提供有关请求的可视化数据。 Prometheus:用于在Istio中进行度量标准收集和报告。 Grafana:使用Prometheus和Jaeger的数据来创建动态仪表板以可视化网络性能和调试问题。 Mixer:支持遥测数据收集、日志记录和访问控制等功能。它可以将遥测数据发送到多个后端存储系统(如Prometheus)中,以便进行更深入的分析和处理。 当然,Istio还有其他一些辅助功能,如Kiali,它提供了一个Web界面,帮助管理员更好地理解和管理其服务网格。

Istio的控制面不是通过一个UI实现的,而是由多个组件组成的。这些组件负责管理服务网格中的各种功能,如流量路由、策略执行、遥测数据收集等。

在Istio中,控制面主要由以下四个组件组成:

Pilot:用于流量管理和服务发现,负责管理Istio服务网格中所有智能代理的配置信息。

Mixer:支持策略执行、遥测数据收集、日志记录和访问控制等功能,与智能代理通信并提供了一种扩展框架。

Citadel:提供基于身份验证和授权的服务间和端点之间的安全性。

Galley:用于处理Istio配置文件,并将它们转换为规范化的内部表示形式。

其中,Pilot和Mixer是控制面的核心组件,它们负责管理整个服务网格的流量和策略,以确保服务之间的通信可靠且安全。

至于Kiali,它是一个额外的工具,可以帮助管理员更好地理解和管理其服务网格。Kiali提供了一个图形界面,用于可视化服务之间的依赖关系、流量流向、服务拓扑结构等,并提供一些监控、告警和故障诊断功能。虽然Kiali不是Istio控制面的一部分,但它可以与Istio集成,并提供有用的洞察力和工具来帮助管理员更好地管理其服务网格。

Istio的组件和服务都是通过YAML文件来进行定义和管理的。这些文件包含了Istio的配置信息和规则,如路由规则、策略规则、流量转移规则等。

在使用Istio时,您需要编写这些YAML文件来定义要实现的功能。例如,在定义流量路由规则时,您可以创建一个VirtualService对象,并在其中指定要路由的目标服务和路径匹配模式等信息。

为了更好地管理这些YAML文件,Istio提供了一些命令行工具和API,以便管理员可以轻松地部署和管理其服务网格。例如,您可以使用istioctl命令行工具来安装Istio,创建和修改配置文件,以及监控服务性能等。

此外,Istio还支持将其与Kubernetes等容器平台集成,使得管理员可以使用Kubernetes原生的API和资源对象对其进行管理。当然,Istio也可以独立于Kubernetes运行,但Kubernetes集成可以带来更好的可扩展性和管理性。

要将Ingress Gateway配置为Istio的一部分,您需要定义一个或多个VirtualService资源来指定路由规则。此外,您还需要定义DestinationRule来指定流量应该转发到哪些服务。

在Istio中,Ingress Gateway是一个Kubernetes资源,它作为入口点将HTTP/HTTPS流量导入到集群中。但是,Ingress Gateway仅负责将流量路由到内部服务,并不知道如何将请求路由到正确的服务版本或实例。因此,您需要使用VirtualService资源来定义路由规则和流量控制策略,以确保请求被正确路由到合适的服务实例。

VirtualService资源的主要作用是允许您定义流量路由规则和流量控制策略。例如,您可以使用VirtualService来定义不同的路径匹配模式和目标服务,使得请求能够被路由到正确的服务实例。此外,VirtualService还支持其他一些功能,如流量分割、流量重试和故障注入等。

DestinationRule资源则用于指定流量应该转发到哪些服务版本或实例。例如,如果您有多个版本的服务正在运行,则可以使用DestinationRule来指定哪个版本应该接收来自VirtualService的流量。

综上所述,要将Ingress Gateway配置为Istio的一部分,您需要定义三种资源:Ingress Gateway、VirtualService和DestinationRule。其中,VirtualService资源是用于定义流量路由规则和流量控制策略的关键组件。

Ingress Gateway、VirtualService和DestinationRule这三种资源都是属于Istio中的Pilot组件的管理范畴。

Pilot是Istio服务网格的核心组件之一,负责流量管理和服务发现。它通过与智能代理通信来实现这些功能,并根据使用者定义的规则将流量路由到不同的服务实例。同时,Pilot还提供了一些高级功能,如A/B测试、流量分割和故障注入等。

在Pilot的管理下,VirtualService和DestinationRule被用于定义流量路由规则和流量控制策略,而Ingress Gateway则作为一个入口点来将外部流量导入到服务网格中。这样一来,Pilot就能根据这些规则将流量路由到不同的服务实例中,以实现更好的流量管理和负载均衡效果。

总体而言,Pilot是Istio中非常重要的组件之一,他通过管理这三个关键资源来实现了Istio服务网格的核心功能之一:流量管理。

Ingress Gateway是Istio服务网格中的数据面组件之一,负责将流量从外部网络引入到服务网格中,并与Pilot等控制平面组件交互以进行流量管理和路由。而Pilot则是Istio服务网格中的控制平面组件之一,负责流量管理、策略执行和服务发现等任务。

在Istio中,Ingress Gateway和Pilot是两个不同的组件,在Istio的体系结构中属于不同的层次。Ingress Gateway位于服务网格的边缘,通过将外部流量导入到服务网格中来实现服务暴露和访问控制。而Pilot则位于服务网格的核心,管理所有智能代理的配置信息,并负责流量路由、故障恢复和服务发现等任务。

因此,Ingress Gateway和Pilot都是Istio服务网格中非常重要的组件,但它们的作用和职责不同。Ingress Gateway属于数据平面组件,而Pilot则是控制平面组件。

要将Ingress Gateway配置为Istio服务网格的一部分,您需要在Kubernetes中定义一个或多个Ingress Gateway对象,并在其中指定如何将外部流量路由到内部服务。同时,您还需要使用VirtualService和DestinationRule等Istio对象来定义服务之间的流量路由规则和负载均衡策略。

具体而言,您可以通过定义一个Ingress Gateway对象来实现HTTP/HTTPS流量的入口。这个Ingress Gateway对象就像一个Kubernetes Service一样,它有自己的IP地址和端口,可以从Internet中接收请求并将其转发到集群中的服务。

但是与普通的Kubernetes Ingress不同,Istio要求您还需要定义VirtualService和DestinationRule等Istio对象来管理服务之间的流量路由和负载均衡策略。VirtualService对象用于定义服务之间的路由规则,例如,您可以使用它来指定将特定的URL路径路由到哪个服务。而DestinationRule对象则用于指定服务的版本、负载均衡策略和其他相关信息。

因此,使用Istio时,您需要同时定义Ingress Gateway、VirtualService和DestinationRule等对象,以便将外部流量引导到正确的服务中,并实现更好的流量管理和负载均衡效果。

是的,VirtualService对象主要用于定义服务之间的路由规则和流量控制策略。通过VirtualService对象,您可以指定如何将请求路由到不同的服务实例或版本,并执行一些高级功能,例如流量分割、故障注入等。

一旦您定义了VirtualService对象,Istio sidecar代理(即istio-proxy)就会收到更新,并使用该配置来对流量进行路由和负载均衡。在处理请求时,istio-proxy会根据VirtualService对象中指定的规则进行流量转发,并根据所选策略进行流量控制和管理。

另外,值得注意的是,VirtualService定义的路由规则实际上是基于HTTP/HTTPS协议的。如果您需要处理其他协议的流量,例如TCP或gRPC,您可能需要使用其他类型的Istio对象,例如Gateway和ServiceEntry。

综上所述,VirtualService对象确实可以帮助您实现路由规则和流量控制策略,而istio-proxy则是将这些规则应用于实际的流量转发和负载均衡过程中的关键组件。

以下是Pilot、Citadel和Galley这三个Istio组件各自包含的资源对象:

Pilot:Pilot是Istio服务网格中的控制平面组件之一,负责流量管理、策略执行和服务发现等任务。Pilot主要包含以下资源对象: VirtualService:用于定义路由规则和流量控制策略。 DestinationRule:用于指定流量应该转发到哪些服务版本或实例。 Gateway:用于定义入口流量的配置信息。 EnvoyFilter:用于在Istio代理中应用自定义的请求过滤器。 Citadel:Citadel是Istio服务网格中的安全控制组件,负责管理和颁发服务之间的TLS证书。Citadel主要包含以下资源对象: CertificateAuthority:用于定义Istio CA(Certificate Authority)的配置信息。 ServiceAccount:用于定义Kubernetes服务账户的配置信息。 IstioMutualTLSConfig:用于定义使用相互TLS认证的Istio代理的配置信息。 Galley:Galley是Istio服务网格中的配置验证和分发组件,负责将管理员定义的配置信息传递给其他Istio组件。Galley主要包含以下资源对象: IstioConfigStore:用于存储Istio组件的配置信息。 IstioValidationContext:用于定义Istio的验证上下文配置信息。 ServiceRole:用于定义服务角色的配置信息。 ServiceRoleBinding:用于定义服务角色绑定的配置信息。 总体而言,Pilot、Citadel和Galley这三个Istio组件都包含了多种资源对象,每种资源对象都用于不同的用途。通过这些资源对象的定义,管理员可以实现对服务网格中流量管理、安全控制和配置验证分发等重要功能的灵活掌控。

Istio中的Ingress Gateway实际上是数据面(Data Plane)组件之一,负责将流量从外部网络引入到服务网格中,并与Pilot等控制平面(Control Plane)组件交互以进行流量管理和路由。

与之相对应的是,Gateway对象是Istio中的控制平面资源对象之一,它用于定义服务网格的入口流量配置信息。具体而言,Gateway对象允许管理员定义入口流量的监听端口、协议类型和使用的TLS证书等属性。并且,Gateway对象还可以通过Selector标签来选择要将其应用到哪些Istio代理上。

虽然Ingress Gateway和Gateway对象都与服务网格中的入口流量有关,但它们所关注的层次不同。Ingress Gateway是Istio服务网格的数据面组件,直接影响着流量的传输和路由。而Gateway对象则是Istio服务网格的控制平面组件,主要用于管理和配置入口流量的相关信息,并为其提供流量转发和负载均衡的功能。

因此,在Istio中,Ingress Gateway和Gateway对象虽然都与服务网格中的入口流量有关,但它们所处的层次和作用范围是不同的。Ingress Gateway属于数据平面组件,而Gateway对象则属于控制平面资源对象之一,用于定义服务网格的入口流量配置信息。

Istio-IngressGateway: 暴露网格内部服务到网格外部的关键入口 自身同样以Pod形式运行,因而其突破Kubernetes边界的方法依然要遵循 Kubernetes 的逻辑

最为常见的方法:就是使用LoadBalancer类型的Service

        这就要求低层支持LBaaS

    实验环境中的解决办法:
        手工配置外部的高可用lb
        要么在节点上使用externalIP

举报

相关推荐

0 条评论