当前位置: 首页 > news >正文

广州化妆品网站建设公司门户网站开发专业

广州化妆品网站建设公司,门户网站开发专业,意派h5制作平台官网,客户管理软件公司目录 1 Istio监控功能1.1 prometheus和grafana1.2 访问prometheus1.3 访问grafana 2 项目案例#xff1a;bookinfo2.1 理解什么是bookinfo2.2 sidecar自动注入到微服务2.3 启动bookinfo2.4 通过ingress方式访问2.5 通过istio的ingressgateway访问2.5.1 确定 Ingress 的 IP 和端… 目录 1 Istio监控功能1.1 prometheus和grafana1.2 访问prometheus1.3 访问grafana 2 项目案例bookinfo2.1 理解什么是bookinfo2.2 sidecar自动注入到微服务2.3 启动bookinfo2.4 通过ingress方式访问2.5 通过istio的ingressgateway访问2.5.1 确定 Ingress 的 IP 和端口 2.6 流量管理2.6.1 放开bookinfo自定义路由权限2.6.2 基于版本方式控制2.6.3 基于权重的流量版本控制2.6.4 基于用户来控制流量版本 2.7 故障注入2.8 流量的迁移2.9 体验Istio的Observe(观察) 1 Istio监控功能 1.1 prometheus和grafana Prometheus存储服务的监控数据数据来自于istio组件mixer上报Grafana开源数据可视化工具展示Prometheus收集到的监控数据 istio已经默认帮我们把grafana和prometheus已经默认部署好了 1执行命令查看istio自带的组件 kubectl get pods -n istio-ns我们打开istio-demo.yaml文件找到找到prometheus和grafana 其实istio已经默认帮我们安装好了grafana和prometheus,只是对应的Service类型是clusterIP类型,表示集群内部可以访问如果我们需要能够通过浏览器访问我们只需要ingress访问规则即可ingress之前已经介绍过了这边就不在重复了 配置prometheus-ingress.yaml和grafana-ingress.yaml配置文件 prometheus-ingress.yaml #ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: prometheus-ingress namespace: istio-system spec: rules: - host: prometheus.istio.qy.com http: paths:- path: /backend:serviceName: prometheusservicePort: 9090 执行命令 kubectl apply -f prometheus-ingress.yaml和grafana-ingress.yamlgrafana-ingress.yaml #ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: grafana-ingress namespace: istio-system spec: rules: - host: grafana.istio.qy.com http: paths:- path: /backend:serviceName: grafanaservicePort: 3000 ~ 执行命令 kubectl get ingress -n istio-system配置prometheus访问域名 在hosts文件里面增加ip域名的映射关系 192.168.187.137 prometheus.istio.qy.com配置grafana访问域名 在hosts文件里面增加ip域名的映射关系 192.168.187.137 grafana.istio.qy.com1.2 访问prometheus 浏览器输入地址prometheus.istio.qy.com 1.3 访问grafana 设置prometheus地址 找到prometheus在k8s里面服务地址 命令 kubectl get svc -o wide -n istio-system选择DataSources 选择settings 把url改成prometheus即可 2 项目案例bookinfo 2.1 理解什么是bookinfo 这是istio官方给我们提供的案例Bookinfo 应用中的几个微服务是由不同的语言编写的。 这些服务对 Istio 并无依赖但是构成了一个有代表性的服务网格的例子它由多个服务、多个语言构成并且 reviews 服务具有多个版本。下图展示了这个应用的端到端架构。 这个案例部署了一个用于演示Istio 特性的应用该应用由四个单独的微服务构成。 这个应用模仿在线书店的一个分类显示一本书的信息。 页面上会显示一本书的描述书籍的细节ISBN、页数等以及关于这本书的一些评论。 Bookinfo 应用分为四个单独的微服务 productpage. 这个微服务会调用 details 和 reviews 两个微服务用来生成页面。details. 这个微服务中包含了书籍的信息。reviews. 这个微服务中包含了书籍相关的评论。它还会调用 ratings 微服务。ratings. 这个微服务中包含了由书籍评价组成的评级信息。 reviews 微服务有 3 个版本 v1 版本不会调用 ratings 服务。v2 版本会调用 ratings 服务并使用 1 到 4个黑色星形图标来显示评分信息。v3 版本会调用 ratings 服务并使用 1 到 4个红色星形图标来显示评分信息。 大家一定要从spring cloud思维模式里面跳出来站着服务网格的立场上思考问题我们是不需要了解服务的业务代码是什么样的业务的服务只需要交给istio管理即可 所以大家一定要有一颗拥抱变化的心 2.2 sidecar自动注入到微服务 所以第一步我们需要给每一个服务配置一个Sidecar,但是配置sidecar我们前面也说过可以有两种方式实现一种是手动注入一种是自动注入如果自动注入需要与命名空间相关需要准备一个命名空间 查看命名空间 kubectl get ns这个时候我们需要创建一个命名空间需要打上一个lable表示只要是在这个lable的命名空间里面的都自动注入 创建命名空间命令 kubectl create namespace bookinfo-ns给命名空间加上label命令 kubectl label namespace bookinfo-ns istio-injectionenabled查看命名空间下有哪些label命 kubectl get ns bookinfo-ns --show-labels2.3 启动bookinfo 进入istio安装目录/home/tools/istio-1.0.6/samples/bookinfo/platform/kube 找到bookinfo.yaml文件 查看需要的image个数 cat bookinfo.yaml | grep image里面就是bookinfo案例所需要依赖的镜像地址 执行命令 kubectl apply -f bookinfo.yaml -n bookinfo-ns查看pod情况 kubectl get pods -n bookinfo-ns # 会发现有两个container,有两个container的原因是因为我们有自动注入这边有六个服务其实只要四个服务有一个服务有三个版本仅此而已查看pod明细 kubectl describe pods pod名字 -n bookinfo-ns # 例如kubectl describe pods reviews-v1-fd6c96c74-cmqcx -n bookinfo-ns会发现有两个container,一个是我们自己的container,另外一个是自动注入的代理container 检查一下service kubectl get svc -n bookinfo-ns可以看到service的类似clusterip类型 验证Bookinfo 应用是否正在运行 请在某个 Pod 中用 curl 命令对应用发送请求例如 ratings 执行命令 kubectl exec -it $(kubectl get pod -l appratings -n bookinfo-ns -o jsonpath{.items[0].metadata.name}) -c ratings -n bookinfo-ns -- curl productpage:9080/productpage | grep -o title.*/title看到如图所示表示bookinfo启动成功 命令分析一下 kubectl get pod -l appratings -n bookinfo-ns -o jsonpath{.items[0].metadata.name};表示的是输出ratings 这个运行时pod的名字kubectl exec -it $(kubectl get pod -l appratings -n bookinfo-ns -o jsonpath{.items[0].metadata.name}) -c ratings -n bookinfo-ns -- curl productpage:9080/productpage | grep -o title.*/title进入到ratings内部然后发送一个http测试根据响应结果找到title标签思考能否通过页面的方法访问bookinfo项目呢 所以下面我们用ingress方式访问bookinfo 2.4 通过ingress方式访问 找到productpage-service服务的端口打开bookInfo.yaml文件 需要给productpage暴露的9080端口进行ingress域名绑定 新建productpageIngress.yaml #ingress apiVersion: extensions/v1beta1 kind: Ingress metadata:name: productpage-ingress spec:rules:- host: productpage.istio.qy.comhttp:paths:- path: /backend:serviceName: productpageservicePort: 9080查询productpage这个pod分布在那台服务上执行命令 kubectl get pods -o wide -n bookinfo-ns服务发现在w1机器上 配置hosts文件 192.168.187.137 productpage.istio.qy.com执行命令 kubectl apply -f productpageIngress.yaml -n bookinfo-ns访问地址productpage.istio.qy.com 点击Normal user,查看书籍相关的评论 不停的刷新会有三个Reviews版本一个是不带星的一个是带黑色星的一个是带红星的跟架构图一样的 2.5 通过istio的ingressgateway访问 2.5.1 确定 Ingress 的 IP 和端口 现在 Bookinfo 服务启动并运行中需要使应用程序可以从外部访问 Kubernetes 集群例如使用浏览器。可以用Istio Gateway来实现这个目标。 为应用程序定义 Ingress 网关 地址/home/tools/istio-1.0.6/samples/bookinfo/networking有一个bookinfo-gateway.yaml kubectl apply -f bookinfo-gateway.yaml -n bookinfo-ns查看gateway kubectl get gateway -n bookinfo-ns有了gateway之后我们需要配置一些环境变量 配置gateway ip环境 export INGRESS_HOST$(kubectl get po -l istioingressgateway -n istio-system -o jsonpath{.items[0].status.hostIP}) # 把ingressgateway的ip设置成环境变量分析命令意思 kubectl get po -l istioingressgateway -n istio-system -o jsonpath{.items[0].status.hostIP} # 表示获取istio组件ingressgateway组件的ip也就是说192.168.187.137就是ingressgateway组件的ip 配置gateway端口 export INGRESS_PORT$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath{.spec.ports[?(.namehttp2)].nodePort})把ingressgateway的端口设置成环境变量 分析命令意思 kubectl -n istio-system get service istio-ingressgateway -o jsonpath{.spec.ports[?(.namehttp2)].nodePort} # 表示获取istio组件ingressgateway组件的端口设置gateway地址 把前面的host跟端口组成gateway地址 export GATEWAY_URL$INGRESS_HOST:$INGRESS_PORT查看INGRESS_PORT环境端口 env | grep INGRESS_PORT测试 http://192.168.187.137:31380/productpage不停的刷新会有三个Reviews版本一个是不带星的一个是带黑色星的一个是带红星的跟架构图一样的 2.6 流量管理 2.6.1 放开bookinfo自定义路由权限 这个文件也是起到了一个路由的功能必须先执行这个文件之后gateway路由规则才可以自定义执行destination-rule-all.yaml kubectl apply -f destination-rule-all.yaml -n bookinfo-ns查看 kubectl get DestinationRule -n bookinfo-ns打开destination-rule-all.yaml 分析一下 里面定义了各个微服务的路由资源 apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule # 声明了一个资源这个资源也是需要依赖于crd metadata:name: productpage spec:host: productpagesubsets:- name: v1labels:version: v1 # 版本 --- apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule # 声明了一个资源这个资源也是需要依赖于crd metadata:name: reviews spec:host: reviewssubsets:- name: v1labels:version: v1 # 版本- name: v2labels:version: v2 # 版本- name: v3labels:version: v3 # 版本 --- apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata:name: ratings spec:host: ratingssubsets:- name: v1labels:version: v1- name: v2labels:version: v2- name: v2-mysqllabels:version: v2-mysql- name: v2-mysql-vmlabels:version: v2-mysql-vm --- apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata:name: details spec:host: detailssubsets:- name: v1labels:version: v1- name: v2labels:version: v2 2.6.2 基于版本方式控制 只需要在/home/tools/istio-1.0.6/samples/bookinfo/networking下执行virtual-service-reviews-v3.yaml即可 打开virtual-service-reviews-v3.yaml文件 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: reviews spec:hosts:- reviewshttp:- route:- destination:host: reviewssubset: v3此时会把所有的路由的流量全部都切换到v3版本也就是全部都是红星的版本 执行命令 kubectl apply -f virtual-service-reviews-v3.yaml -n bookinfo-ns再次刷新页面 http://192.168.187.137:31380/productpage删除版本控制命令 kubectl delete -f virtual-service-reviews-v3.yaml -n bookinfo-ns再次刷新页面有其它版本了这是基于版本的方式来控制流量 2.6.3 基于权重的流量版本控制 只需要在/home/tools/istio-1.0.6/samples/bookinfo/networking下执行virtual-service-reviews-50-v3.yaml即可 打开virtual-service-reviews-50-v3.yaml文件 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: reviews spec:hosts:- reviewshttp:- route:- destination:host: reviewssubset: v1weight: 50 # 50%的流量到v1- destination:host: reviewssubset: v3weight: 50 # 50%的流量到v3 此时会把所有的路由的流量会在v1和v3之间进行切换也就是无星和红星页面 执行命令 kubectl apply -f virtual-service-reviews-50-v3.yaml -n bookinfo-ns再次刷新页面 http://192.168.187.137:31380/productpage无星页面和红星页面之间切换 删除命令 kubectl delete -f virtual-service-reviews-50-v3.yaml -n bookinfo-ns2.6.4 基于用户来控制流量版本 只需要在/home/tools/istio-1.0.6/samples/bookinfo/networking下执行virtual-service-reviews-jason-v2-v3.yaml即可 打开virtual-service-reviews-jason-v2-v3.yaml文件 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: reviews spec:hosts:- reviewshttp:- match:- headers:end-user:exact: jasonroute:- destination:host: reviewssubset: v2- route:- destination:host: reviewssubset: v3 在登录的时候会在header头部增加一个jason如果是jason登录那么会访问v2版本其它的人访问的是v3 执行命令 kubectl apply -f virtual-service-reviews-jason-v2-v3.yaml -n bookinfo-ns再次刷新页面 http://192.168.187.137:31380/productpage全是红星页面,因为我不是jason用户所以流量全都在v3版本 删除命令 kubectl delete -f virtual-service-reviews-jason-v2-v3.yaml -n bookinfo-ns2.7 故障注入 为了测试微服务应用程序 Bookinfo 的弹性在访问的的时候会在header头部增加一个jason如果是jason访问那么会访问v2版本其它的人访问的是v3。 访问v3版本的人会注入一个50%几率的延迟2S请求访问。 故障注入可以故意引发Bookinfo 应用程序中的 bug。尽管引入了 2 秒的延迟我们仍然期望端到端的流程是没有任何错误的。 创建故障注入规则-执行:test.yaml apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: reviews spec:hosts:- reviewshttp:- match:- headers:end-user:exact: jasonroute:- destination:host: reviewssubset: v2- fault:delay:percent: 50fixedDelay: 2sroute:- destination:host: reviewssubset: v3 执行:test.yaml kubectl apply -f test.yaml -n bookinfo-ns测试 1.通过浏览器打开 Bookinfo 应用。 2.使用headers头部不包含jason关机键 访问到 /productpage 页面。 3.你期望 Bookinfo 主页在有50%几率大约 2 秒钟加载完成并且没有错误有50%的几率正常加载 4.查看页面的响应时间 打开浏览器的 开发工具 菜单打开 网络 标签重新加载 productpage 页面。你会看到页面加载实际上用了大约 6s。 2.8 流量的迁移 一个常见的用例是将流量从一个版本的微服务逐渐迁移到另一个版本。在 Istio 中您可以通过配置一系列规则来实现此目标 这些规则将一定百分比的流量路由到一个或另一个服务。在本任务中您将会把 50 的流量发送到 reviews:v1另外 50 的流量发送到 reviews:v3。然后再把 100 的流量发送到 reviews:v3 来完成迁移。 (1)让所有的流量都到v1 kubectl apply -f virtual-service-all-v1.yaml(2)将v1的50%流量转移到v3 kubectl apply -f virtual-service-reviews-50-v3.yaml(3)确保v3版本没问题之后可以将流量都转移到v3 kubectl apply -f virtual-service-reviews-v3.yaml(4)访问测试看是否都访问的v3版本 2.9 体验Istio的Observe(观察) 观察mixer组件上报的服务数组 采集指标自动为Istio生成和收集的应用信息可以配置的YAML文件 进入bookinfo/telemetry目录下面 如果需要metrics收集日志需要先执行 kubectl apply -f metrics-crd.yaml检查一下 kubectl get instance -n istio-system多次属性页面让metrics收集数据http://192.168.187.137:31380/productpage 现在需要访问普罗米修斯看看有没有拿到metrics收集到的数据我们可以通过ingress来访问 检查普罗米修斯ingress存不存在 kubectl get ingress -n istio-system不存在则启动ingress kubectl apply -f prometheus-ingress.yaml访问普罗米修斯域名 prometheus.istio.qy.com检查一下有没有数据筛选选择 istio_requests_total 收集原理 启动grafana来可视化查看检查grafana的ingress存不存在 kubectl get ingress -n istio-system启动 kubectl apply -f grafana-ingress.yaml访问grafana域名 grafana.istio.qy.com配置grafana对应的普罗米修斯ip 查找普罗米修斯ip kubectl get svc -o wide -n istio-system访问istio mixer 这边就可以看到内存和CPU使用情况了
http://www.w-s-a.com/news/324185/

相关文章:

  • 湖州网站seo优化网站改域名备案
  • dedecms怎么制作网站合肥电商网站开发
  • 网站开发通用流程图做flash的网站
  • 营销型网站有哪些平台网站建设藤设计
  • 网站需求分析网站建设美食网站建设多少钱
  • 有专门做网站的吗建德网站
  • 做网站要买服务器吗单页设计思路
  • 一 电子商务网站建设规划网站开发前端框架和后端框架
  • 自助网站建设系统软件自己免费建设网站
  • 百度微建站access如何与网站连接数据库
  • ppt素材免费网站网站正能量晚上免费软件
  • 个人淘宝客网站如何备案搭建一个平台要多少钱
  • nginx 网站建设淘客网站怎么做首页
  • 网站制作的基本步骤是手机网站建设 新闻
  • 水墨 网站源码工装
  • 任丘网站建设服务网站 建设原则
  • 长沙做一个网站要多少钱网站底部备案代码
  • wordpress构建自定义设置页面seo培训学什么
  • 延安有哪些做网站的公司如何建设网站?
  • 网站建设者属于广告经营者吗网站管理程序
  • 网站内容优化方法深圳市宝安区怎么样
  • 视频网站开发视频公司网站制作多少钱
  • 单页简洁手机网站模板购物软件
  • 素材网站官网低价网站建设费用预算
  • 苏州网站设计kgwl个人网站有什么外国广告做
  • 浙江省网站建设报价简单网站开发工具
  • 物流网站的建设wordpress电视直播插件下载
  • 简述网站开发流程青岛做网站建设价格低
  • 网站开发的业务需求分析杭州推广公司
  • 网站建设技术实现难点app开发需要哪些软件