微服务网格(二):Istio基础

640?wx_fmt=jpeg

在Kubernetes中创建基本的微服务看似简单。在我们的 上一篇文章中,我们展示了使用容器部署是多么容易。我们构建了一个简单的Docker镜像,使用Kubernetes部署它,并查询我们的应用程序。当然,那是相对无痛的!但在现实世界中,云架构通常比这更复杂,涉及数十或数百种服务,包括数据库,身份验证和其他现实问题。

管理所有这些服务是一个真正的麻烦。在本文中,我们将介绍Istio,它是提高和管理大规模云部署的下一代利器。早些时候,我们讨论了微服务的网状结构,这是Istio所支持的。

微服务网格能使你获得微服务架构的可扩展性优势,同时还支持基于集中的优势,例如日志记录和版本控制。有关网格的更多信息,请参阅我们之前的 讨论,概述网格的基础知识及其提供的优势。

在这篇文章中,我们将了解Istio在实现云网格架构模式时所提供的能力。我们将安装控制平面,然后查看Istio有什么优势。最后,我们将采用上次定义的Kubernetes服务并添加一个sidecar代理,并将其链接到上面的控制面板。
深入:数据平面和边车(sidecar)

640?wx_fmt=png

Istio定义了两个关键的架构术语,数据平面和控制平面。数据平面是指通过应用程序流动的数据,传递给不同的服务实例并由服务本身处理。数据平面主要通过边车代理(sidecar-proxy)实现。控制层确定如何实例化服务以及保持服务的遥测和信息的位置。控制平面的关键元素是Pilot和Mixer。让我们按顺序看看它们。

sidecar代理与Pod一起运行,定义了你在Kubernetes的服务。顾名思义,它与主要服务组件一起添加,并且它针对该服务的流量进行操作。此设计允许你在Pod中为现有服务定义添加sidecar代理:只需将定义sidecar的行添加到服务中即可开始工作。

640?wx_fmt=png

你获得的回报是Istio云网产品的核心优点。sidecar代理拦截进入服务的流量,并允许你以智能方式路由它。这可能意味着像负载均衡和处理TLS终止这样简单的事情,这是一种加快速度的简单方法,或者更复杂的事情,例如处理新版本服务的版本控制和分阶段部署以及收集使用指标。sidecar允许你将这些功能添加到现有的微服务架构中,而无需重新设计整个系统。

在掌握了sidecar的最初目标之后,Istio和云网的大部分功能都成为焦点。由于它们充当服务舱之间的单一、统一的桥梁,因此sidecar会共同遇到并查看流经你的应用程序的所有流量。这意味着如果你想加强安全性,sidecar可以提供一个位置,你可以在其中添加服务之间的身份验证和https,记录事件以检查异常情况,以及添加流量控制和守门(gatekeeping)以进行身份验证。

最重要的是,由于sidecar充当服务之间的中央通信端点,因此它们允许你在应用程序中构建弹性并添加额外级别的可伸缩性。微服务的一个常见问题是服务器Pod都是隔离的,如果微服务出现问题,请求可能会被缓慢处理或丢弃。使用sidecar,你可以在一个地方添加超时,更智能的负载均衡和额外的监控。

集中:控制平面

640?wx_fmt=png

在此设施的另一端是控制平面。控制平面充当应用程序中运行的sidecar的控制器,以及网格中的服务可视为单一事实来源的所有信息(如日志记录和版本更新)的中央存储库。

640?wx_fmt=png

使用Istio时,与控制平面交互的主要方式是通过Kubernetes。安装Istio包和定义后,可以通过操纵系统状态的kubectl命令访问控制平面。例如,使用kubectl将Pod升级到新版本时,版本更新将通过更新本地控制平面变量开始。

最简单的方法是使用kubectl中的get-svc命令列出与给定库相关的服务。要检查正在运行的内容,你可以运行:

kubectl get svc -n istio-system

并查看在后台运行的Istio核心控制平面功能列表。你可能会认识到其中的一些,例如Citadel,即管理服务之间流量安全性的服务。

安装Istio

640?wx_fmt=png

首先,让我们来看看Istio提供的开箱即用产品。我们将安装Istio控制平面来管理我们在 上一篇文章中定义的基本HTTP API。该API服务是在Kubernetes上定义的,并且作为单个Kubernetes Pod实现,其中运行了API。

要安装Istio,请按照Istio官方快速入门指南[1]中的步骤操作。首先,从Istio版本页面[2]下载最新版本。Istio仍处于非常活跃的开发阶段,最新版本始终是最佳起点。要做到这一点,你只需下拉文件并确保它在你的路径中可用。

然后,将Istio定义添加到你的Kubernetes中,以便它们可以与kubectl命令行工具一起使用。只需使用kubectl apply将你在上面下拉的.yaml文件添加到安装目录中:

kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml

然后,你需要通过选择身份验证方法来激活Istio安装。对于本演示,我将使用默认的相互HTTPS身份验证,这对于演示项目和开始新工作非常有用。要将网格添加到现有项目,你需要更多地查看选项。现在,你可以运行以下命令:

kubectl apply -f install/kubernetes/istio-demo-auth.yaml

有了这个,你就可以继续往前了。你需要将Istio设施添加到你创建的现有Pod中,对于新Pod,你需要添加Istio作为依赖项。

部署helloworld App

640?wx_fmt=png

我们使用helloworld示例应用程序,该应用程序已在我们的上一篇博客中讲过。这将创建一个部署,一个服务,一个网关和一个VirtualService。更新配置文件以匹配以下内容:

helloworld.yaml

apiVersion: v1	
kind: Service	
metadata:	
   name: helloworld	
spec:	
   type: ClusterIP	
   ports:	
      - port: 80	
      targetPort: 8080	
   selector:	
       app: helloworld	
---	
apiVersion: apps/v1	
kind: Deployment	
metadata:	
   name: helloworld-v1	
spec:	
   replicas: 1	
   selector:	
      matchLabels:	
         app: helloworld	
   template:	
      metadata:	
      labels:	
         app: helloworld	
         version: v1	
      spec:	
         containers:	
          - name: helloworld-kubernetes	
            image: haseebm/helloworld-kubernetes	
            ports:	
             - containerPort: 8080	
---	
apiVersion: networking.istio.io/v1alpha3	
kind: Gateway	
metadata:	
   name: helloworld-gateway	
spec:	
   selector:	
      istio: ingressgateway # use istio default controller	
   servers:	
    - port:	
         number: 80	
         name: http	
         protocol: HTTP	
   hosts:	
    - "*"	
---	
apiVersion: networking.istio.io/v1alpha3	
kind: VirtualService	
metadata:	
   name: helloworld	
spec:	
   hosts:	
    - "*"	
   gateways:	
    - helloworld-gateway	
   http:	
      route:	
       - destination:	
           host: helloworld	
           port:	
              number: 80

手动注入Istio Sidecar

640?wx_fmt=png

Istio使用sidecar模式将istio sidecar容器与helloworld app容器放在同一个Pod中。

$ kubectl apply -f <(istioctl kube-inject -f helloworld.yaml)	
service/helloworld created	
deployment.extensions/helloworld-v1 created	
gateway.networking.istio.io/helloworld-gateway created	
virtualservice.networking.istio.io/helloworld created
确认Pod和服务正在运行:

$ kubectl get pod,svc | grep helloworld	
pod/helloworld-v1-1cbca3f8d5-achr2  2/2        Running	
service/helloworld           ClusterIP       10.160.58.61

现在,查看helloworld的流量:

$ curl a2******.ap-southeast-1.elb.amazonaws.com/api/hello

Hello world v1

下一步

640?wx_fmt=png

Istio是开展云网格技术和智能微服务管理的一个很好的方式。正如我们在过去的几篇文章中看到的那样,正确管理的微服务在技术优势和可扩展性方面有很多优势,但充分利用可用技术对于获得这些优势至关重要。

在接下来的几篇文章中,我们将介绍一些Istio和云网格的应用程序,以增强我们的示例体系结构的安全性和可管理性。在下一篇文章中,我们将讨论如何在Istio中管理部署和版本更新,以无缝地推送代码更新,而不会出现部署中断。

相关链接:

  1. https://istio.io/docs/setup/kubernetes/install/kubernetes/

  2. https://istio.io/docs/setup/kubernetes/


原文链接:https://medium.com/faun/microservices-mesh-part-ii-istio-basics-b9c343594a05

基于Kubernetes的DevOps实战培训

640?wx_fmt=png

基于Kubernetes的DevOps战培训将于2019年9月27日在上海开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:容器特性、镜像、网络;Kubernetes架构、核心组件、基本功能;Kubernetes设计理念、架构设计、基本功能、常用对象、设计原则;Kubernetes的数据库、运行时、网络、插件已经落地经验;微服务架构、组件、监控方案等,点击下方图片或者阅读原文链接查看详情。

640?wx_fmt=jpeg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值