云服务器内容精选

  • 1.18版本特性 支持Istio 1.18.7版本 支持v1.25、v1.27 、v1.28、v1.29 、v1.30 CCE Turbo 集群版本 支持v1.25、v1.27、v1.28 、v1.29、v1.30 CCE集群版本 支持 Kubernetes Gateway API 详细内容请参阅:https://istio.io/latest/news/releases/1.18.x/ 父主题: 升级
  • 约束与限制 应用服务网格依赖集群CoreDNS的 域名 解析能力,请确保集群拥有足够资源,且CoreDNS插件运行正常。 集群启用Istio时,需要开通node节点(计算节点/工作节点)所在安全组的入方向7443端口规则,用于Sidecar自动注入回调。如果您使用CCE创建的默认安全组,此端口会自动开通。如果您自建安全组规则,请手动开通7443端口,以确保Istio自动注入功能正常。 1.13和1.15版本的istio组件不支持在CentOS和EulerOS2.5操作系统的节点上运行,在创建网格时,请不要指定这些类型的节点为mastre节点。 请根据下表ASM网格版本与集群版本适配规则匹配合适的网格版本和集群版本。 表1 ASM网格版本与集群版本适配规则 ASM网格版本 集群版本 1.3 v1.13、v1.15、v1.17、v1.19 1.6 v1.15、v1.17 1.8 v1.15、v1.17、v1.19、v1.21 1.13 v1.21、v1.23 1.15 v1.21、v1.23、v1.25、v1.27 1.18 v1.25、v1.27、v1.28、v1.29、v1.30
  • 配置sidecar资源限制 支持为sidecar(即istio-proxy容器)配置CPU和内存的资源上下限。同一个节点上部署的工作负载,对于未设置资源上下限的工作负载,如果其异常资源泄露会导致其他工作负载分配不到资源而异常。未设置资源上下限的工作负载,工作负载监控信息也会不准确。 默认的sidecar资源上下限为: CPU(Core):最小 0.1,最大 2 MEM(MiB):最小 128,最大 1024 如需更改,请参考以下操作: 单击工作负载操作列的“sidecar资源限制”,也可以勾选多个工作负载,在列表左上角单击“sidecar资源限制”进行批量配置。 图2 sidecar资源限制 CPU最小值:也称CPU请求,表示容器使用的最小CPU需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配CPU总量 ≥ 容器CPU请求数时,才允许将容器调度到该节点。 CPU最大值:也称CPU限制,表示容器能使用的CPU最大值。 MEM最小值:也称内存请求,表示容器使用的最小内存需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配内存总量 ≥ 容器内存请求数时,才允许将容器调度到该节点。 MEM最大值:也称内存限制,表示容器能使用的内存最大值。当内存使用率超出设置的内存限制值时,该实例可能会被重启进而影响工作负载的正常使用。
  • 金丝雀升级失败常见场景及解决方案 进行金丝雀升级时,升级失败的常见场景和解决方案: CRD检查失败。 解决办法:新版本Istio 将不支持部分CRD,包括:clusterrbacconfigs 、serviceroles 、servicerolebindings 、policies。若您在当前版本存在即将废弃的资源,则需要删除后再升级。 升级前检查网关配置信息时,Istio 网关标签错误。 解决办法:Istio 网关标签(matchLabels)必须为 {app: istio-ingressgateway, istio: ingressgateway}。 升级前插件检查失败。 解决办法:ASM从1.8版本开始不再支持如下插件(tracing,kiali,grafana,prometheus)部署,升级前需要将上述插件卸载。您可以自行安装开源版本插件,或者使用 APM 。 升级前集群状态检查任务失败。 解决办法:升级前会检查集群状态,若集群状态异常则无法进行网格升级。 升级前资源检查任务失败。 解决办法:金丝雀升级需要有充足资源。 升级前集群版本检查任务失败。 解决办法:网格支持的版本如下: 网格版本 支持的集群版本 1.3 1.13,1.15,1.17,1.19 1.6 1.15,1.17 1.8 1.15,1.17,1.19,1.21 1.13 1.21,1.23 1.15 1.21,1.23,1.25,1.27 1.18 1.25,1.27,1.28,1.29 升级前组件亲和性检查失败。 解决办法:若您从非金丝雀版本升级到金丝雀版本,需要满足打了istio:master labels的节点数量大于等于两倍的istiod实例数,并且所有可调度节点数大于等于ingressgateway/egressgateway 实例数量最大值的两倍,若不满足则需要将节点数量扩大到满足调度需求或者将istiod、ingressgateway、egressgateway pod反亲和性设置为尽量满足。 方法一:增加添加istio:master节点,可以从CCE console上进行操作。 方法二:修改pod反亲和策略,可在CCE界面修改yaml。 preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - istiod (如果是ingressgateway则为istio-egressgateway、istio-ingressgateway) namespaces: - istio-system topologyKey: kubernetes.io/hostname 或者在CCE界面升级设置工作负载反亲和性,改为尽量满足。 升级前命名空间自动注入检查失败。 解决办法:若您从专有网格迁移至基础网格,命名空间存在已经注入的pod,但是该命名空间未开启自动注入,则需要开启该命名空间自动注入。 父主题: 网格管理
  • 什么是Istio Istio是一个提供连接、保护、控制以及观测功能的开放平台,通过提供完整的非侵入式的微服务治理解决方案,能够很好的解决云原生服务的管理、网络连接以及安全管理等服务网络治理问题。 随着微服务的大量应用,其构成的分布式应用架构在运维、调试和安全管理等维度变得更加复杂,开发者需要面临更大的挑战,如:服务发现、负载均衡、故障恢复、指标收集和监控,以及金丝雀发布、蓝绿发布、限流、访问控制、端到端认证等。 在较高的层次上,Istio有助于降低这些部署的复杂性,并减轻开发团队的压力。它是一个完全开源的服务网格,可以透明地分层到现有的分布式应用程序上。它也是一个平台,包括允许集成到任何日志记录平台、遥测或策略系统的API。Istio的多样化功能使您能够成功高效地运行分布式微服务架构,并提供保护、连接和监控微服务的统一方法。 服务网格 服务网格(Service Mesh)通常用于描述构成应用程序的微服务网络以及应用之间的交互。它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如蓝绿发布、金丝雀发布、限流、访问控制和端到端认证等。
  • 产品功能 灰度发布 基于请求内容灰度规则:支持基于请求内容灰度规则,可以配置Header、Cookie等多种请求信息。 基于流量比例灰度规则:支持基于流量比例灰度规则,根据权重比例分配流量。 金丝雀灰度流程:提供向导方式引导用户完成金丝雀灰度流程,包括灰度版本上线、观察灰度版本运行、配置灰度规则、观测访问情况、切分流量等。 蓝绿灰度流程:提供向导方式引导用户完成蓝绿灰度流程,包括灰度版本上线、观察灰度版本运行、观测访问情况、版本切换等。 流量治理 七层连接池管理:支持配置HTTP最大请求数、最大重试次数、最大等待请求数、每连接最大请求数以及连接最大空闲时间。 四层连接池管理:支持配置TCP最大连接数、连接超时时间、最大无响应次数、最短空闲时间以及健康检查间隔。 熔断:支持配置服务熔断规则,包括实例被驱逐前的连续错误数、检查周期、基础隔离时间以及最大隔离实例比例。 重试:支持配置HTTP重试次数、重试超时时间以及重试条件。 超时:支持配置HTTP请求超时时间。 负载均衡:支持配置随机调度、轮询调度、最少连接和一致性哈希多种负载均衡算法。 HTTP头域:可以灵活添加、修改和删除指定HTTP头域,包括将HTTP请求转发到目标服务之前对Headers的操作,以及将HTTP响应回复给客户端前,对Headers的操作。 故障注入:支持配置延时故障和中断故障。 安全 对端认证:对端认证定义了流量如何通过隧道(或者不通过隧道)传输到当前服务的实例,当前支持配置默认模式(UNSET)、宽容模式(PERMISSIVE)和严格模式(STRICT)三种认证策略。 访问授权:访问授权用来实现对网格中服务的访问控制功能,即判断一个请求是否允许发送到当前的服务。 可观察性 应用访问拓扑:支持网格应用访问拓扑,体现服务间依赖。 服务运行监控:支持服务访问信息,包括服务和服务各个版本的QPS和延时等指标。 访问日志:支持收集和检索服务的访问日志。 调用链:支持非侵入调用链埋点,并可以通过检索调用链数据进行问题定界定位。 多集群服务治理 扁平网络:支持多集群扁平网络数据面场景治理。 非扁平网络:支持多集群非扁平网络数据面场景治理。 网格数据面服务框架 Spring Cloud:支持Spring Cloud SDK开发的服务在网格上统一管理。 Dubbo:支持Dubbo SDK开发的服务在网格上统一管理。 兼容性和扩展 社区版本兼容:API完全兼容Istio。 社区插件支持:支持Tracing、Prometheus、Kiali、Grafana。
  • 为什么要使用Istio Istio提供了一个完整的解决方案,通过为整个服务网格提供行为洞察和操作控制来满足微服务应用程序的多样化需求。 Kubernetes提供了部署、升级和有限的运行流量管理能力,但并不具备熔断、限流、调用链追踪等能力。Istio是基于Kubernetes构建的开放平台,它很好的补齐了Kubernetes在微服务治理上的诸多能力。 图1 Istio和Kubernetes的关系 想要让服务支持Istio,只需要在您的环境中部署一个特殊的Sidecar代理,使用Istio控制平面功能配置和管理代理,拦截微服务之间的所有网络通信: 实现HTTP、gRPC、WebSocket和TCP流量的自动负载均衡。 通过丰富的路由规则、重试和故障注入,可以对流量行为进行细粒度控制。 通过可插入的策略层和配置API,支持访问控制、速率限制和配额。 对出入集群入口和出口中所有流量自动度量指标、日志记录和追踪。 通过强大的基于身份的验证和授权,在集群中实现安全的服务间通信。 Istio旨在实现可扩展性,满足各种部署需求。
  • 策略化的智能路由与弹性流量管理 支持对服务配置负载均衡、服务路由、故障注入、熔断等治理规则,并结合一站式治理系统,提供实时的、可视化的微服务流量管理;无侵入智能流量治理,应用无需任何改造,即可进行动态的智能路由和弹性流量管理。 权重、内容等路由规则,实现应用灵活灰度发布。 负载均衡,满足业务处理高可用性诉求。 熔断,实现服务间链路稳定、可靠。 网络长连接管理降低资源损耗,提升网络吞吐量。 服务安全认证、鉴权、审计等,提供服务安全保障基石。
  • 旧版ASM与新版ASM区别 对于同一个网格,建议不要在旧版ASM页面和新版ASM页面交替使用,因为会有一些数据兼容性问题。 旧版ASM与新版ASM的区别如下: Sidecar注入方式不同。旧版ASM创建的网格没有开启Sidecar的命名空间注入,新版ASM创建的网格开启了Sidecar的命名空间注入,命名空间注入详见:https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/。 Istio资源格式不同。旧版ASM创建的网格和新版ASM创建的网格管理的Istio资源(VirtualService和DestinationRule)格式不同。 灰度发布功能不兼容。例如:在新版ASM加入网格的服务不支持在旧版ASM进行灰度发布;在新版ASM创建的灰度发布任务无法在旧版ASM显示。 流量治理功能不兼容。例如:新版ASM配置的流量治理无法在旧版ASM页面显示或配置。
  • 应用服务网格与其他服务的关系 表1 应用服务网格与其他服务的关系 服务名称 应用服务网格与其他服务的关系 主要交互功能 云容器引擎 CCE 云容器引擎(Cloud Container Engine,CCE)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。 您可以为CCE集群启用服务网格功能,对集群中的服务进行治理。 购买CCE集群 弹性负载均衡 ELB 弹性负载均衡(Elastic Load Balance,ELB)将访问流量自动分发到多台云服务器,扩展应用系统对外的服务能力,实现更高水平的应用容错。 您可以通过弹性负载均衡从外部访问应用服务网格。 创建共享型负载均衡器 应用性能管理 APM 应用性能管理 (Application Performance Management,APM)实时监控并管理云应用性能和故障的云服务,提供专业的分布式应用性能分析能力,可以帮助运维人员快速解决应用在分布式架构下的问题定位和性能瓶颈等难题,为用户体验保驾护航。 您可以使用应用性能管理,对应用服务网格中运行的服务进行全链路拓扑管理和分布式调用链追踪,方便您快速进行故障定位和根因分析。 全链路拓扑 调用链
  • 扁平网络 扁平网络指的是两个或多个Kubernetes集群的Pod之间能够直接访问,而无需通过其他组件转发,能够提供更高的通信效率。 图1 扁平网络 使用扁平网络对Kubernetes集群的网络模型、网络连通性、规划网段有一定的约束: 所有集群必须使用容器对接ENI的网络模型,通过VPC的路由实现Pod之间跨集群通信。支持CCE集群和CCE Turbo集群。如果使用CCE集群,在创建时,网络模型需要选择“VPC网络”;如果使用CCE Turbo集群,在创建时,网络模型需要选择“云原生网络2.0”。 集群的网络类型可参考:集群网络构成。 所有集群VPC之间需要互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。如果集群处于不同VPC内,要注意VPC的网段之间不要冲突。 对等连接可参考:创建同一账户下的对等连接。 云连接可参考:同区域同账号VPC互通。 所有集群要有统一的网络规划,所有集群的容器网段、服务网段之间不能冲突。如果多个集群处于不同VPC,那么所有集群的VPC网段也不能冲突。同时,以上网段不能和网格控制面网段冲突。
  • 扁平网络和非扁平网络集群混合场景 图3 扁平网络和非扁平网络混合部署 为了减少运维负担,不建议扁平网络和非扁平网络的集群混合加入ASM网格中,如果必须混合部署,有以下使用约束: 所有扁平网络的集群必须使用容器对接ENI的网络模型,对非扁平网络的集群没有特殊要求。 所有集群VPC之间的网络需要互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。如果集群处于不同VPC内,要注意VPC的网段之间不要冲突。 对等连接可参考:创建同一账户下的对等连接。 云连接可参考:同区域同账号VPC互通。 所有集群(包括非扁平网络)的容器网段、服务网段之间不能冲突。例如:混合网络拓扑场景下,CCE集群Cluster1为扁平网络拓扑,CCE集群Cluster2为非扁平网络拓扑,那么Cluster1的容器网段、服务网段不能和Cluster2的容器网段、服务网段冲突,即使Cluster2集群为非扁平网络拓扑。 如果多个集群处于不同VPC,那么所有集群的VPC网段也不能冲突。同时,以上网段不能和网格控制面网段冲突。
  • 非扁平网络 非扁平网络指的是两个或多个Kubernetes集群的Pod之间因为网络模型不支持、容器网段冲突等原因无法直接通信,而是通过一个东西向流量的转发网关,实现非扁平网络集群间的通信。 图2 非扁平网络 相比于扁平网络,非扁平网络的使用约束少: 所有集群VPC之间的网络需要互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。 对等连接可参考:创建同一账户下的对等连接。 云连接可参考:同区域同账号VPC互通。 非扁平网络对用户集群的网络模型没有特别的要求,用户集群只需要将Gateway地址暴露出来,供其他集群访问即可。但是因为使用集中的流量入口,性能瓶颈主要集中在网关上,而且多一次的转发,会对通信时延产生一定的影响。 在ASM控制台为网格添加集群时,需要为集群配置一个东西向流量的私网ELB,作为其他集群的访问入口。
  • 数据面升级说明 单击“升级”会将所有服务实例对接到新版本控制面,您可以通过修改命令空间的标签(去除istio-injection:enabled ,加上istio.io/rev: {revision} ,其中{revision} 为版本号,如1-13-9-r5),并重启部分pod进行测试,若无问题,则可以全部切换。 1.3和1.6版本升级到1.8版本,因为证书切换,sidecar需要同时全部重启。 父主题: 金丝雀升级
  • 约束与限制 目前支持v1.15、v1.17、v1.19和v1.21版本的集群加入企业版网格。 不支持安全容器类型的CCE Turbo集群添加至网格。 同一网格最多只能添加五个集群。 同一虚拟私有云的集群只能加入同一个网格。 为了满足高可用的要求,集群需要至少包含两个可用节点,每个节点至少保证有2U4G的可用资源。 集群的服务网段、容器网段不能和网格内已有集群的服务网段、容器网段冲突。如果集群和网格内的已有集群处于不同的VPC,集群的子网网段也不能冲突。 如果实例(Pod)需要跨集群通信,集群需要使用ENI网络模型,且集群之间网络互通,可以处于同一VPC内,也可以将多个集群的VPC通过其他方式(对等连接、云连接等)连通。网络连通请参见如何通过对等连接打通两个集群的VPC网络,实现实例跨集群通信?。 CCE集群和CCE Turbo集群混合多集群场景,CCE集群服务访问Turbo集群服务时,需要为Turbo集群的ENI安全组入方向放通CCE集群的容器网段,否则会访问不通。具体操作请参见CCE集群服务访问CCE Turbo集群服务时,如何配置安全组规则?。