Istio流量治理进阶-02 【五】
**如果要显示 Kiali 需要配置Prometheus 否者无法进行绘制
[root@xksmaster1 addons]# pwd
/usr/local/istio/samples/addons
[root@xksmaster1 addons]# ll
total 284
drwxr-xr-x 2 root root 136 Feb 22 17:57 extras
-rw-r--r-- 1 root root 247483 Feb 22 17:57 grafana.yaml
-rw-r--r-- 1 root root 2533 Feb 22 17:57 jaeger.yaml
-rw-r--r-- 1 root root 12044 Feb 22 17:57 kiali.yaml
-rw-r--r-- 1 root root 14509 Feb 22 17:57 prometheus.yaml
-rw-r--r-- 1 root root 5436 Feb 22 17:57 README.md
示例一、
deploy-demoapp.yaml
[root@xksmaster1 01-demoapp-v10]# cat deploy-demoapp.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: demoappv10
version: v1.0
name: demoappv10
spec:
progressDeadlineSeconds: 600
replicas: 3
selector:
matchLabels:
app: demoapp
version: v1.0
template:
metadata:
labels:
app: demoapp
version: v1.0
spec:
containers:
- image: ikubernetes/demoapp:v1.0
imagePullPolicy: IfNotPresent
name: demoapp
env:
- name: "PORT"
value: "8080"
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
limits:
cpu: 50m
---
apiVersion: v1
kind: Service
metadata:
name: demoappv10
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: demoapp
version: v1.0
type: ClusterIP
---
[root@xksmaster1 01-demoapp-v10]# kubectl apply -f deploy-demoapp.yaml
deployment.apps/demoappv10 created
service/demoappv10 created
deploy-proxy.yaml
[root@xksmaster1 01-demoapp-v10]# cat deploy-proxy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: proxy
spec:
progressDeadlineSeconds: 600
replicas: 1
selector:
matchLabels:
app: proxy
template:
metadata:
labels:
app: proxy
spec:
containers:
- env:
- name: PROXYURL
value: http://demoappv10:8080
image: ikubernetes/proxy:v0.1.1
imagePullPolicy: IfNotPresent
name: proxy
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
limits:
cpu: 50m
---
apiVersion: v1
kind: Service
metadata:
name: proxy
spec:
ports:
- name: http-80
port: 80
protocol: TCP
targetPort: 8080
selector:
app: proxy
---
[root@xksmaster1 01-demoapp-v10]# kubectl apply -f deploy-proxy.yaml
[root@xksmaster1 01-demoapp-v10]# kubectl exec -it sleep-bc9998558-bl49z /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ $ while true; do curl proxy.default.svc; sleep 0.$RANDOM; done
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 370 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 27 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 17 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 16 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 15 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 8 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 4 milliseconds.
示例二、
在上述实验继续配置
deploy-demoapp-v11.yaml
[root@xksmaster1 02-demoapp-v11]# cat deploy-demoapp-v11.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: demoappv11
version: v1.1
name: demoappv11
spec:
progressDeadlineSeconds: 600
replicas: 2
selector:
matchLabels:
app: demoapp
version: v1.1
template:
metadata:
labels:
app: demoapp
version: v1.1
spec:
containers:
- image: ikubernetes/demoapp:v1.1
imagePullPolicy: IfNotPresent
name: demoapp
env:
- name: "PORT"
value: "8080"
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
limits:
cpu: 50m
---
apiVersion: v1
kind: Service
metadata:
name: demoappv11
spec:
ports:
- name: http-8080
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: demoapp
version: v1.1
type: ClusterIP
---
[root@xksmaster1 02-demoapp-v11]# kubectl get pods
NAME READY STATUS RESTARTS AGE
demoappv10-54757f48d6-lvtn9 2/2 Running 0 13m
demoappv10-54757f48d6-sbkpb 2/2 Running 0 13m
demoappv10-54757f48d6-vwr4k 2/2 Running 0 13m
demoappv11-6b479f5664-n9rbl 2/2 Running 0 2m50s
demoappv11-6b479f5664-z9wgp 2/2 Running 0 2m50s
proxy-645cd54b84-kjltk 2/2 Running 0 3m10s
sleep-bc9998558-bl49z 2/2 Running 0 25h
[root@xksmaster1 02-demoapp-v11]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demoappv10 ClusterIP 10.100.56.185 <none> 8080/TCP 13m
demoappv11 ClusterIP 10.106.165.28 <none> 8080/TCP 2m54s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 92d
proxy ClusterIP 10.96.177.15 <none> 80/TCP 3m13s
sleep ClusterIP 10.109.135.158 <none> 80/TCP 25h
deploy-proxy.yaml -(http://demoapp:8080)
apiVersion: apps/v1
kind: Deployment
metadata:
name: proxy
spec:
progressDeadlineSeconds: 600
replicas: 1
selector:
matchLabels:
app: proxy
template:
metadata:
labels:
app: proxy
spec:
containers:
- env:
- name: PROXYURL
value: http://demoapp:8080
image: ikubernetes/proxy:v0.1.1
imagePullPolicy: IfNotPresent
name: proxy
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
limits:
cpu: 50m
---
apiVersion: v1
kind: Service
metadata:
name: proxy
spec:
ports:
- name: http-80
port: 80
protocol: TCP
targetPort: 8080
selector:
app: proxy
---
service-demoapp.yaml
[root@xksmaster1 02-demoapp-v11]# cat service-demoapp.yaml
---
apiVersion: v1
kind: Service
metadata:
name: demoapp
spec:
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: demoapp
type: ClusterIP
---
#现在有demoapp、demoappv10、demoappv11 service
[root@xksmaster1 02-demoapp-v11]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demoapp ClusterIP 10.111.52.87 <none> 8080/TCP 92s
demoappv10 ClusterIP 10.100.56.185 <none> 8080/TCP 30m
demoappv11 ClusterIP 10.106.115.5 <none> 8080/TCP 2m2s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 92d
proxy ClusterIP 10.99.105.132 <none> 80/TCP 12m
sleep ClusterIP 10.109.135.158 <none> 80/TCP 25h
# demoapp service 对应5个端点
[root@xksmaster1 02-demoapp-v11]# kubectl describe svc demoapp
Name: demoapp
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=demoapp
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.111.52.87
IPs: 10.111.52.87
Port: http 8080/TCP
TargetPort: 8080/TCP
Endpoints: 10.244.182.38:8080,10.244.182.42:8080,10.244.207.94:8080 + 2 more...
Session Affinity: None
Events: <none>
#再次通过sleep客户端进行 测试 交替访问5个端点
[root@xksmaster1 02-demoapp-v11]# kubectl exec -it sleep-bc9998558-bl49z /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ $ while true; do curl proxy.default.svc; sleep 0.$RANDOM; done
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 301 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 25 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 17 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 19 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 24 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 9 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 16 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
高级流量治理配置:virutalservice-demoapp.yaml
[root@xksmaster1 02-demoapp-v11]# cat virutalservice-demoapp.yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: demoapp
spec:
hosts:
- demoapp
http:
- name: canary
match:
- uri:
prefix: /canary
rewrite:
uri: /
route:
- destination:
host: demoappv11
- name: default
route:
- destination:
host: demoappv10
[root@xksmaster1 02-demoapp-v11]# kubectl apply -f virutalservice-demoapp.yaml
virtualservice.networking.istio.io/demoapp created
#访问/canary 流量都到 v1.1上
[root@xksmaster1 02-demoapp-v11]# kubectl exec -it sleep-bc9998558-bl49z /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ $ while true; do curl proxy.default.svc/canary; sleep 0.$RANDOM; done
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 23 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 9 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 15 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 9 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 8 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
#访问/ 流量都到 v1.0上
/ $ while true; do curl proxy.default.svc/; sleep 0.$RANDOM;done
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 17 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 14 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 8 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 3 milliseconds.
#同时发送 v1.1 和 v1.0都会
/ $ while true; do curl proxy.default.svc/canary; curl proxy.default.svc/; sleep 0.$RANDOM; done
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 6 milliseconds.


示例三-Subsets
删除demoappv10 、 demoapp11 Service
问:删除之后怎么做才能区分 不同版本的流量呢?
答:可以使用 DestinationRule 进行 Subsets 二次划分
destinationrule-demoapp.yaml
[root@xksmaster1 02-demoapp-v11]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demoapp ClusterIP 10.111.52.87 <none> 8080/TCP 24m
demoappv10 ClusterIP 10.100.56.185 <none> 8080/TCP 53m
demoappv11 ClusterIP 10.106.115.5 <none> 8080/TCP 24m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 92d
proxy ClusterIP 10.99.105.132 <none> 80/TCP 35m
sleep ClusterIP 10.109.135.158 <none> 80/TCP 25h
[root@xksmaster1 02-demoapp-v11]# kubectl delete svc demoappv10 demoappv11
service "demoappv10" deleted
service "demoappv11" deleted
[root@xksmaster1 03-demoapp-subset]# cat destinationrule-demoapp.yaml
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: demoapp
spec:
host: demoapp
subsets:
- name: v10
labels:
version: v1.0
- name: v11
labels:
version: v1.1
[root@xksmaster1 03-demoapp-subset]# kubectl get pods
NAME READY STATUS RESTARTS AGE
demo-pod 2/2 Running 53 (35m ago) 77d
demo-pod-1 1/1 Running 0 77d
demoappv10-54757f48d6-lvtn9 2/2 Running 0 57m
demoappv10-54757f48d6-sbkpb 2/2 Running 0 57m
demoappv10-54757f48d6-vwr4k 2/2 Running 0 57m
demoappv11-6b479f5664-9frlg 2/2 Running 0 28m
demoappv11-6b479f5664-vll6r 2/2 Running 0 28m
proxy-645cd54b84-xsrx8 2/2 Running 0 23m
sleep-bc9998558-bl49z 2/2 Running 0 25h
#查看 istio上配置情况
[root@xksmaster1 03-demoapp-subset]# kubectl apply -f destinationrule-demoapp.yaml
destinationrule.networking.istio.io/demoapp created
[root@xksmaster1 03-demoapp-subset]# istioctl pc cluster sleep-bc9998558-bl49z
SERVICE FQDN PORT SUBSET DIRECTION TYPE DESTINATION RULE
80 - inbound ORIGINAL_DST
BlackHoleCluster - - - STATIC
InboundPassthroughClusterIpv4 - - - ORIGINAL_DST
PassthroughCluster - - - ORIGINAL_DST
agent - - - STATIC
dashboard-metrics-scraper.kubernetes-dashboard.svc.cluster.local 8000 - outbound EDS
demoapp.default.svc.cluster.local 8080 - outbound EDS demoapp.default
demoapp.default.svc.cluster.local 8080 v10 outbound EDS demoapp.default
demoapp.default.svc.cluster.local 8080 v11 outbound EDS demoapp.default
istio-egressgateway.istio-system.svc.cluster.local 80 - outbound EDS
istio-egressgateway.istio-system.svc.cluster.local 443 - outbound EDS
istio-ingressgateway.istio-system.svc.cluster.local 80 - outbound EDS
istio-ingressgateway.istio-system.svc.cluster.local 443 - outbound EDS
istio-ingressgateway.istio-system.svc.cluster.local 15021 - outbound EDS
istio-ingressgateway.istio-system.svc.cluster.local 15443 - outbound EDS
istio-ingressgateway.istio-system.svc.cluster.local 31400 - outbound EDS
istiod.istio-system.svc.cluster.local 443 - outbound EDS
istiod.istio-system.svc.cluster.local 15010 - outbound EDS
istiod.istio-system.svc.cluster.local 15012 - outbound EDS
istiod.istio-system.svc.cluster.local 15014 - outbound EDS
kiali.istio-system.svc.cluster.local 9090 - outbound EDS
kiali.istio-system.svc.cluster.local 20001 - outbound EDS
kube-dns.kube-system.svc.cluster.local 53 - outbound EDS
kube-dns.kube-system.svc.cluster.local 9153 - outbound EDS
kubernetes-dashboard.kubernetes-dashboard.svc.cluster.local 443 - outbound EDS
kubernetes.default.svc.cluster.local 443 - outbound EDS
prometheus.istio-system.svc.cluster.local 9090 - outbound EDS
prometheus_stats - - - STATIC
proxy.default.svc.cluster.local 80 - outbound EDS
sds-grpc - - - STATIC
sleep.default.svc.cluster.local 80 - outbound EDS
xds-grpc - - - STATIC
zipkin - - - STRICT_DNS
再次配置 virutalservice-demoapp.yaml 转发到v10、 v11 子集上
[root@xksmaster1 03-demoapp-subset]# cat virutalservice-demoapp.yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: demoapp
spec:
hosts:
- demoapp
http:
- name: canary
match:
- uri:
prefix: /canary
rewrite:
uri: /
route:
- destination:
host: demoapp
subset: v11
- name: default
route:
- destination:
host: demoapp
subset: v10
[root@xksmaster1 03-demoapp-subset]# kubectl apply -f virutalservice-demoapp.yaml
virtualservice.networking.istio.io/demoapp configured
[root@xksmaster1 03-demoapp-subset]# kubectl exec -it sleep-bc9998558-bl49z /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ $ while true; do curl proxy.default.svc; sleep 0.$RANDOM; done
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 18 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 17 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 17 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 5 milliseconds.
^C
/ $ while true; do curl proxy.default.svc/canary; sleep 0.$RANDOM; done
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 19 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 15 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 15 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
^C
/ $ while true; do curl proxy.default.svc/canary; curl proxy.default.svc/; sleep 0.$RANDOM; done
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 99 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 8 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 6 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-vwr4k, ServerIP: 10.244.207.94!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-lvtn9, ServerIP: 10.244.182.38!
- Took 8 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-vll6r, ServerIP: 10.244.182.42!
- Took 7 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
- Took 4 milliseconds.
Proxying value: iKubernetes demoapp v1.1 !! ClientIP: 127.0.0.6, ServerName: demoappv11-6b479f5664-9frlg, ServerIP: 10.244.207.98!
- Took 5 milliseconds.
Proxying value: iKubernetes demoapp v1.0 !! ClientIP: 127.0.0.6, ServerName: demoappv10-54757f48d6-sbkpb, ServerIP: 10.244.207.95!
通过 Istio-Ingressgateway 暴露服务 访问proxy服务

[root@xksmaster1 04-proxy-gateway]# cat gateway-proxy.yaml
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
name: proxy-gateway
namespace: istio-system # 要指定为ingress gateway pod所在名称空间
spec:
selector:
app: istio-ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "fe.magedu.com"
[root@xksmaster1 04-proxy-gateway]# kubectl apply -f gateway-proxy.yaml
gateway.networking.istio.io/proxy-gateway created
[root@xksmaster1 04-proxy-gateway]# kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-egressgateway-774d6846df-wgkb9 1/1 Running 0 71d
istio-ingressgateway-69499dc-vcz7d 1/1 Running 0 71d
istiod-65dcb8497-v4g8j 1/1 Running 0 71d
kiali-594965b98c-rfpfd 1/1 Running 0 25h
prometheus-5f84bbfcfd-tcdsp 2/2 Running 0 49m
[root@xksmaster1 04-proxy-gateway]# cat virtualservice-proxy.yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: proxy
spec:
hosts:
- "fe.magedu.com" # 对应于gateways/proxy-gateway
gateways:
- istio-system/proxy-gateway # 相关定义仅应用于Ingress Gateway上
#- mesh
http:
- name: default
route:
- destination:
host: proxy
[root@xksmaster1 04-proxy-gateway]# kubectl apply -f virtualservice-proxy.yaml
virtualservice.networking.istio.io/proxy created
#查看 是否下发Gateway信息
#http.8080 fe.magedu.com /* proxy.default
[root@xksmaster1 04-proxy-gateway]# istioctl pc route istio-ingressgateway-69499dc-vcz7d.istio-system
NAME DOMAINS MATCH VIRTUAL SERVICE
http.8080 demoappv10.magedu.com /* demoappv10vs.default
http.8080 fe.magedu.com /* proxy.default
* /stats/prometheus*
* /healthz/ready*
#!!!配置 ingressgateway 外部地址,进行域名解析 到 fe.magedu.com
[root@xksmaster1 04-proxy-gateway]# kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-egressgateway ClusterIP 10.106.118.36 <none> 80/TCP,443/TCP 71d
istio-ingressgateway LoadBalancer 10.108.113.206 <pending> 15021:31695/TCP,80:31246/TCP,443:30196/TCP,31400:30817/TCP,15443:31775/TCP 71d
istiod ClusterIP 10.110.214.145 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 71d
kiali NodePort 10.102.111.29 <none> 20001:32748/TCP,9090:32308/TCP 25h
prometheus ClusterIP 10.105.219.78 <none> 9090/TCP 53m
[root@xksmaster1 04-proxy-gateway]# kubectl edit svc istio-ingressgateway -n istio-system
Edit cancelled, no changes made.
You have new mail in /var/spool/mail/root
[root@xksmaster1 04-proxy-gateway]# kubectl edit svc istio-ingressgateway -n istio-system
externalTrafficPolicy: Cluster
externalIPs:
- 192.168.19.200
[root@xksmaster1 04-proxy-gateway]# kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-egressgateway ClusterIP 10.106.118.36 <none> 80/TCP,443/TCP 71d
istio-ingressgateway LoadBalancer 10.108.113.206 192.168.19.200 15021:31695/TCP,80:31246/TCP,443:30196/TCP,31400:30817/TCP,15443:31775/TCP 71d
istiod ClusterIP 10.110.214.145 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 71d
kiali NodePort 10.102.111.29 <none> 20001:32748/TCP,9090:32308/TCP 25h
prometheus ClusterIP 10.105.219.78 <none> 9090/TCP 56m
#客户端配置域名解析
windows hosts 文件进行配置访问
192.168.19.200 fe.magedu.com





浙公网安备 33010602011771号