• 关于Istio v1.0,你需要知道的事儿
    关于Istio v1.0,你需要知道的事儿         千呼万唤,根据社区最新的计划, Istio 1.0版本将于7月20日发布。本次1.0版本紧随6月1号的第一个LTS的0.8版本后,不到两个月的时间,并未做大的特性开发,主要还是集中在:提供了稳定新的流量管理模型;改进了调试功能;增强了性能和扩展性等。 对于Istio v1.0是否能用于生产环境以及需要考虑哪些问题,社区将会发布SRE指南来回答,敬请期待!主要功能         Istio的feature主要分布在流量管理、可视化、安全和核心等几个领域,每个特性都需要通过自身的生命周期进行交付(dev/alpha/beta/stable)。一般生产可以使用beta和stable阶段的组件,而测试使用alpha阶段的组件。目前这些领域的大部分关键功能进入 了beta 或者stable的阶段。下表列出了这些特性(详细参照Istio.io 官方网站):DomainFeaturePhaseTraffic managementProtocols: HTTP 1.1BetaMemquota   Implementation and IntegrationStableObservabilityPrometheus   IntegrationBetaLocal Logging   (STDIO)StableStatsd IntegrationStableService Dashboard   in GrafanaBetaIstio Component   Dashboard in GrafanaBetaSecurityDeny CheckerStableList CheckerStableKubernetes: Service   Credential DistributionStablePluggable Key/Cert   Support for Istio CAStableService-to-service   mutual TLSStableVM: Service   Credential DistributionBetaCoreKubernetes: Envoy   Installation and Traffic InterceptionBetaKubernetes: Istio   Control Plane InstallationBetaKubernetes: Istio   Control Plane UpgradeBetaPilot Integration   into Kubernetes Service DiscoveryStableAttribute   Expression LanguageStableMixer Adapter   Authoring ModelStableHelmBeta1.0 版本内容接下来让我们看看Istio 1.0版本有哪些方便的改进:稳定新的流量管理模型        Istio v0.8引入了新的配置资源来控制进入网格、网格内部和离开网格的流量路由。包括:Gateway、VirtualService、DestinationRule和ServiceEntry。其中,VirtualService、DestinationRule和ServiceEntry分别替换了原API中的RouteRule、DestinationPolicy和EgressRule;Gateway用于对流入专用中间设备的流量进行建模。       但v0.8在新的流量模型上还有一些不足,某些功能需要补齐,例如v0.8不能支持networking/v1alpa3的TCP/TLS的路由;两个版本存在时设置v1版本权重为0、v2版本为100策略不生效等。这些问题都将在v1.0发布时解决。调试功能的改进        目前调试中如果需要查看sidecar的实时配置,需要进入相应的容器内调用envoy admin API去获取这些信息。v1.0用户可以直接使用istioctl进行调试。例如istioctl proxy-status可以查看envoy和Pilot的配置差异(将支持clusters,listeners,routes和endpoints): istioctl proxy-config可以得到envoy的clusters/listeners/routes的总览和dump信息:性能和可扩展性的增强         针对v0.8的性能问题,社区做了一些改进,进一步识别并较少开销。         插件中集成了可观测性分析服务Kiali,丰富和提高对服务的可视化和监控能力, 利用Kiali可以看到service mesh的拓扑(包括熔断和请求速率),调用链等信息(详情参考https://github.com/kiali/kiali)。  资源的校验       之前的 Istio 版本中,只能通过 istioctl 验证 Istio 相关 CRD 的有效性,Galley为Istio提供了配置管理服务,提供在k8s服务端验证Istio的CRD 资源的合法性的方法,校验目标包含 Pilot(例如 destinationpolicies 和 routerules) 和 Mixer(例如 memquotas 和 prometheuses)两类 CRD。 v1.0开放的Galley接口:galley probe、galley server、galley validator和version等。文档和示例的改进       文档方面包括Istio官网的对中文的支持,Istio首页和各章节的排版改进,扩展troubleshooting 指南等。 Samples增加了websockets app、health check等样例,改进上手体验。其它方面•             1.0要求使用Kubernetes1.9 或更高版本•             使能Pilot decomposition的API•             各种bug的修复生产案例使用Istio的生产案例主要有Weather Company和American Airline。其中,Weather Company是一个销售和传播天气数据的平台,有40个后端服务,每秒可处理400K请求。Weather Company使用Istio已有8个月,目前支持Istio v0.8.0.关于Weather Company使用Istio的详情可以参考视频https://www.youtube.com/watch?v=0fKi3NeCsSE          目前基于release-1.0分支的每日构建版本可以在http://bit.do/istio10-latest-daily获取。我们期待Istio v1.0在本月的发布,届时将会带来一个更稳定,更易用的Istio来管理和监控我们的服务。 
  • Istio最佳实践:在Kubernetes上通过Istio服务网格进行灰度发布
    Istio是什么?Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司。它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管理、网络连接以及安全管理等关键能力,无需修改任何代码就能够实现微服务的负载均衡,服务与服务之间的认证授权以及监控。从整个基础设施角度上看,可以将它理解为PaaS平台上的一个面向微服务管理平台的补充。                                                               Istio架构示意图Istio与KubernetesKubernetes提供了部署、升级和有限的运行流量管理能力;利用service的机制来做服务注册和发现,转发,通过kubeproxy有一定的转发和负载均衡能力。但并不具备上层如熔断、限流降级、调用链治理等能力. Istio则很好的补齐了k8s在微服务治理上的这部分能力,同时是基于k8s构建的,但不是像SpringCloud Netflix等完全重新做一套。Istio是谷歌微服务治理上的非常关键的一环。  自建与公有云上使用Istio的对比目前业界大部分云平台上所提供的Istio能力均需要自己负载Istio包的下载、配置、安装等,还是比较费劲的。不过华为云CCE服务这里深度集成了Istio服务网格,个人感觉使用上还是方便很多的,简单对比了下:自建华为云CCEIstio包管理用户自行下载和管理用户不感知运行配置用户自行配置运行环境和依赖用户不感知Istio安装用户自行探索和安装用户不需要关注具体细节,创建集群时按需启用。Sidecar注入用户自行探索和开发、配置用户不感知Istio升级用户自行探索、开发不影响业务的升级方案提供完整解决方案,按需进行控制面和数据面的升级操作应用调用链用户自行探索、开发和安装、配置对接华为云APM/AOM服务,提供请求调用链跟踪查看能力应用拓扑用户自行探索、开发和安装、配置对接华为云APM/AOM服务,提供查看应用拓扑能力性能监控用户自行探索、开发和安装、配置对接华为云APM/AOM服务,提供请求响应时延的实时性能状态监控流量治理需要自行编写配置文件提供界面进行流量和发布的管理 云原生应用的部署、管理实践云原生应用、云平台与微服务架构云原生应用,是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的,只要云平台支持这个传统应用所运行的计算机架构和操作系统。只不过这种运行模式,仅仅是把虚拟机当物理机一样使用,不能够真正利用起来云平台的能力。云计算平台的核心能力就是提供按需分配资源和弹性计算的能力,而云原生应用的设计理念就是让部署到云平台的应用能够利用云平台的能力实现按需使用计算资源和弹性伸缩。微服务架构是实现企业分布式系统的一种架构模式,即将一个复杂的单体应用按照业务的限定上下文,分解成多个独立部署的组件。这些独立部署的组件,就称为微服务。而在谈论云原生应用与微服务架构关系的时候,根据上下文不同可以从两个角度去看。1) 宏观的云原生应用,即将整个分布式系统看作一个应用,这个角度下,微服务架构是实现云原生应用的一种架构模式;2) 微观的云原生应用,即每个微服务是一个应用,这种语境下,每个微服务要按照云原生应用的设计理念去设计(如我们所熟知的云原生12要素),才能真正实现微服务架构所要达到的目的,即让分布式系统具备按需使用计算资源和弹性伸缩的能力。在华为云CCE中,将宏观的云原生应用,称之为“应用”,而将微观层面的云原生应用,称之为“组件“,用这两个概念来对分布式应用进行管理:                                          图:应用、组件与工作负载的关系云原生应用管理的实践创建Kubernetes集群       在创建应用前,需要准备好一个Kubernetes集群(1.9及以上版本),并启用Istio服务网格治理。登录CCE控制台,在左侧导航栏中单击“资源管理 > 虚拟机集群”,在“虚拟机集群”界面,单击“创建Kubernetes集群”,按照向导式逐步配置: 图1:创建Kubernetes集群 图2:使能服务网格,一键式安装Istio并自动使能应用sidecar注入:其他集群创建步骤、配置不变.创建云原生应用这里我们以Istio开源社区的bookinfo样例应用为例,其包含ProductPage、Reviews、Details、Ratings这4个微服务,拓扑结构以及网络访问信息如下: 在左侧导航栏中选择“应用管理”,单击“创建应用”->“向导式创建”:1、 首先定义应用的基本信息:名称、选择所在集群和namespace,并按照上方的应用拓扑和网络设计添加组件 A、添加ratings微服务组件机器监听端口,容器内监听端口为9080,开放至service mesh内部访问端口也配置为9080:1)配置组件基本信息:2)选择负载镜像和版本后点击“添加”,可以看到我们为bookinfo添加了一个微服务组件进网格:B、     参考上述步骤,添加reviews、details和productpage微服务组件2、    配置应用对外开放的访问路由:A、点击“添加应用访问方式“B、选择开放至外部访问的组件,并配置开放端口:最后点击右下角“创建”,启动应用,应用及其微服务组件如下所示: 通过应用开放的入口访问productpage:使用Istio两步实现灰度发布在集群上启用Istio服务网格集群下应用如果需要做微服务治理,只需要在创建集群时点击启用服务网格即可,不需要自行进行Istio镜像下载、yaml配置、安装、升级等与应用业务无关的复杂基础设施构建工作。开发打包新版本下方我们以开发了一个新版本reviews微服务为例(初始容器镜像版本号为1.5.0),新版本镜像版本号为1.5.0-v2,并且已上传至华为云容器镜像服务(SWR),新版本在现在版本基础上增加对ratings微服务的调用,支持评分星星级别展示. 发布灰度版本并配置灰度策略在应用列表页面,展开bookinfo下的组件信息,选择reviews微服务组件的“添加灰度版本”: 启动灰度版本:配置灰度版本号v2,系统已自动选择最新镜像版本,点击“启动负载”即可启动灰度版本:观察灰度版本运行状态并配置灰度策略:按照20%比例分配灰度版本流量可以看到,review微服务已处于灰度发布状态: 对review服务进行灰度发布前后的流量对比:初始版本:reviews服务未调用ratings来获取星级评价能力灰度状态:review v2版本调用ratings服务获取星级评价,并将20%流量分流至本版本上访问productpage,可以看到部分请求可以显示星级评价,部分请求仍然是老版本的显示效果,部分访问结果为带有星级评价特性的页面: 持续观测灰度版本运转状态,并进行流量切换持续观测灰度版本的运行状态,在确认业务处理、性能满足要求后,我们可以选择逐步调大灰度版本的流量比例,而后进一步将流量全部导流至灰度版本上: Ø  观察健康与性能状态:点击左侧导航栏“运维中心”进入AOM服务,选择“指标”->“应用”菜单,持续观察review-v2的健康与性能状态:  下一步我们将逐步扩大流量比,最后将流量全部导至灰度版本,点击“接管所有流量”:现在所有访问reviews的流量都导向v2版本,访问productpage,所有的请求都会呈现星级评价特性: Istioctl命令行工具       Istio服务网格还提供了命令行工具,满足更多的流量规则配置诉求,如限流、熔断、连接池管理、会话保持等。进入”资源管理“->“虚拟机集群“,选择对应集群,可以看到Istio命令行的下载和使用指导:总结总的来说,华为云CCE + Istio + AOM/APM服务在组件部署、灰度版本管理、流量策略配置以及灰度过程中的监控还是能够满足基本诉求,操作上也比较简单,通过简单的两三步配置即可实现新版本的发布和流量切换,期待华为云CCE Istio服务网格这里能够有更多能力开放出来。
总条数:77 到第
上滑加载中