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 

 

posted @ 2023-05-31 12:33  しみずよしだ  阅读(44)  评论(0)    收藏  举报