istio-http流量管理(1)
2021-03-29 07:24
标签:pod api 同步 命名空间 路由 metadata 样本 path 获取 在 istio 中部署1个业务应用时,建议: 注意点: istio-http流量管理(1) 标签:pod api 同步 命名空间 路由 metadata 样本 path 获取 原文地址:https://www.cnblogs.com/netonline/p/12609021.html参考
1. 定义目标与规则
子集(Subset)
,也经常被称为 服务版本
。DestinationRule
,样例如下:
规则需要注意的地方如下:
cat flaskapp-destinationrule.yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: flaskapp
spec:
host: flaskapp.default.svc.cluster.local
trafficPolicy:
loadBalancer:
simple: LEAST_CONN
subsets:
- name: v1
labels:
version: v1
trafficPolicy:
loadBalancer: ROUND_ROBIN
- name: v2
labels:
version: v2
Service
资源,或1个 ServiceEntry
定义的外部服务。
DestinationRule
与 Subset
都可以定义,Subset
中的级别更高。2. 定义默认路由
2.1 定义默认路由
cat flaskapp-default-vs.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: flaskapp
spec:
hosts:
- flaskapp.default.svc.cluster.local
http:
- route:
- destination:
host: flaskapp.default.svc.cluster.local
subset: v1
hosts
字段是一个数组内容,可以针对多个主机名进行工作。http
,tcp
,tls
等。http
的下一级,即具体的路由规则。
2.2 验证
# 应用目标规则与默认路由
kubectl apply -f flaskapp-destinationrule.yaml
kubectl apply -f flaskapp-default-vs.yaml
# 验证,可同步观察 kiali & Jaeger 等
kubectl exec -it -c sleep $(kubectl get pod -l app=sleep,version=v1 -o jsonpath=‘{.items..metadata.name}‘) /bin/bash
bash-4.4# for i in `seq 100` ; do http --body http://flaskapp.default/env/version ; done
2.3 总结
app
标签表明应用身份;version
标签表明应用版本;3. 流量拆分与迁移
3.1 权重
cat flaskapp-default-vs.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: flaskapp
spec:
hosts:
- flaskapp.default.svc.cluster.local
http:
- route:
- destination:
host: flaskapp.default.svc.cluster.local
subset: v1
weight: 70
- destination:
host: flaskapp.default.svc.cluster.local
subset: v2
weight: 30
# 应用
kubectl apply -f flaskapp-default-vs.yaml
# 验证,可同步观察 kiali & Jaeger 等
# 因是权重的原因,验证时样本量需要大一些
kubectl exec -it -c sleep $(kubectl get pod -l app=sleep,version=v1 -o jsonpath=‘{.items..metadata.name}‘) /bin/bash
bash-4.4# for i in `seq 100` ; do http --body http://flaskapp.default/env/version ; done | awk -F "v1" ‘{print NF-1}‘
100
;100
。3.2 获取 istio 对象
kubectl get
, kubectl api-resources
列出当前集群支持的所有对象类型
上一篇:二叉堆python实现
下一篇:php常用函数(三)