ISTIO-2
2024-12-04 10:17:54 0 举报
服务网格
作者其他创作
大纲/内容
sidecar
apiVersion
ingressGateWay80
ServiceEntry
virtualService
envoycontainer:istio-proxy
熔断 ====================官网:https://istio.io/latest/zh/docs/tasks/traffic-management/circuit-breaking/故障注入================== 测试网络错误后的处理官网:https://istio.io/latest/zh/docs/tasks/traffic-management/fault-injection/流量镜像================== 可以将生产环境的流量生成镜像给测试环境测试用官网https://istio.io/latest/zh/docs/tasks/traffic-management/mirroring/
业务服务container
ingressgateway
1.部署是如果没有指定namespace会部署到default中2.如何删除已经部署的pod3.指定namesapce部署
Prometheus grafana
延迟10s
meshservice
VirtualService == Nginx 两个类似(下面是相互的比较)编辑:virtualService.yaml 文件执行:kubectl apply -f virtualService.yaml -n XXXNginx编辑:Nginx.conf文件执行 nginx -s reload 或者 start nginx同样是配置规则并执行。vs最终: envoy + virtualService 实现流量路由envoy执行自己的配置规则============================组成:路由规则:web-svc,匹配的条件如:大于18岁 去httpd1-svc流量去向:httpd1-svc,httpd2-svc
productpagev1
pilot-agentenvoy
消费者
重试机制
ingressgateway处理请求流入
service相当于nginxweb-svc
virtualService的查看及删除操作,一般都要带-n 命名空间。因为bookinfo在default空间中所以没加
百度
查api版本号
ratingsv1
podistio注入
httpbin.org该网址专门用来测试http外部访问的
创建一个新的namespacekubectl create ns slz-ns-1编辑yaml文件, =====================部署两个pod=================vi slz-ns1-deployment.yaml部署删除部署部署时要指定namespace查看pod的地址,然后curl测试是否成功:=========================部署service====================编辑部署文件 slz-svc.yaml进行部署,查看的命令:=======================部署一个client的deployment=========================== 部署,并查看:进入client中,去访问wev-svc的service:====================部署virtual service===================================================istio 注入=================================注入client和deployment进入client中,循环执行;
3.规则下发给pilot-agent
Destination rule子集的规则:路由到后面的XX服务,服务的具体实例就是子集。还可以配置子集的策略。
httpd2container
istio-1.5.-1在root文件夹下 (自己安装的目录)
创建ServiceEntry
Jaeger安装 ===== tracing就是jaeger
请求
apiVersion: networking.istio.io/v1alpha3kind: ServiceEntrymetadata: name: httpbin-extspec: hosts: - httpbin.org ports: - number: 80 name: http protocol: HTTP resolution: DNS location: MESH_EXTERNAL
4.pilot-agent将规则转化为envoy可识别的配置,envoy加载5.自动重启生效
egressgateway
查看配置
httpd1container
此时是轮询的
pilot-agent
virtual servicehosts: - web-svc
envoy
POD
要配置host
修改配置文件kubectl get configmap istio -n istio-system -o yaml | sed 's/mode: REGISTRY_ONLY/mode: ALLOW_ANY/g' | kubectl replace -n istio-system -f -
node1
如果同一个yaml的文件名执行kubectl apply -f slz-virtualservice.yaml -n slz-ns-1后自动生效。如果更改了yaml的文件名需要先kubetcl delete -f 原vs.yaml -n XXX然后kubectl apply -f 新vs.yaml -n XXX
v1
网格内部默认是可以访问网格外部的生产时是要关闭的,需要用serviceEntry去控制对外部服务的访问
提供者
ingressgateway与service的区别
VirtualService、Destination
kubectl edit svc istio-ingressgateway -n istio-system
mesh serviceproductpage
font color=\"#ff3333\
ServiceEntry统一走Egressgateway
api server
设置对外的IP
6.后来的请求,走新路由规则
1.kubectl apply -f vs.yaml -n XXX
添加,查看serviceEntry
VirtualService.yaml
istioctl manifest apply \\ --set profile=demo \\ --set values.tracing.enabled=true \\ --set values.grafana.enabled=true \\ --set values.kiali.enabled=true
Details
istiod pilot
httpd1-svc
istio的请求先走VS,由VS控制host,gateway,match,route等
ingressGateWay的设置
超时,延时处理
增加了match的virtualService.yaml==============执行kubectl apply -f slz-virtualservice-rich.yaml -n slz-ns-1验证:
效果
VirtualService
官方例子的位置:
设置超时1s
reviews
2.watch 获取规则
所有跟网络相关的交互都要先走virtualService,其他的配置(ingressgateway、egressgateway、ServiceEntry、destination等)最终都是要在VS里配置
日志输出=============================将日志输出格式修改为 JSONkubectl describe configmap istio -n istio-system | lesskubectl get configmap istio -n istio-system -o yaml | sed 's/TEXT/JSON/g' | kubectl replace -n istio-system -f -进入边车的日志kubectl logs -f productpage-v1-7f44c4d57c-dzhld istio-proxy流量五元组=================A服务调用B服务,B服务是A服务的上游(upsteam),B服务就是下游downstreamhost:(针对服务来说)upstream_host 目标服务的ipdownstream_host 本服务自己的ipupstream_cluster 提供者的集群local_address:(针对sidecar来说)upstream_local_address: 边车跟服务是在一起的,所以sidecar是由服务领导的, 该上游ip就是服务pod的ip地址downstream_local_address: 目标服务pod的ip
client访问service
master
httpd2-svc
mesh servicedetails
v3红色
绑定域名
v2黑色
virtualService -> servcie -> pod(deployment)
egressgateway处理请求流出
流量管理、灰度发布
node2
此处是service的名称
etcd
node间导镜像
0 条评论
下一页