架构

  • Istio注入之前的微服务架构

  • Istio注入之后

注意: Reviews服务有3个版本:v1、v2、v3

前置条件

开启自动注入sidecar

  1. kubectl label namespace default istio-injection=enabled --overwrite

进入Istio目录

  1. cd istio-1.2.4/

部署bookinfo

安装bookinfo

  • 自动注入安装

    1. kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
  • 手动注入安装

    1. kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml)

    注:为命名空间打上标签 istio-injection=enabled 开启自动注入。前置条件中已经开启

查看pods:

确认所有的 Pod 都已经正确的定义和启动

  • 查看

    1. kubectl get pods
  • 结果

    1. NAME READY STATUS RESTARTS AGE
    2. details-v1-74f858558f-jzcmt 2/2 Running 0 6m7s
    3. productpage-v1-8554d58bff-sqwbt 2/2 Running 0 6m3s
    4. ratings-v1-7855f5bcb9-f7h4g 2/2 Running 0 6m7s
    5. reviews-v1-59fd8b965b-mpbpk 2/2 Running 0 6m6s
    6. reviews-v2-d6cfdb7d6-7v765 2/2 Running 0 6m5s
    7. reviews-v3-75699b5cfb-7s77q 2/2 Running 0 6m5s

查看svc

确认所有的服务都已经正确的定义和启动

  • 查看

    1. kubectl get svc
  • 结果

    1. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    2. details ClusterIP 10.97.165.88 <none> 9080/TCP 11m
    3. kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d2h
    4. productpage ClusterIP 10.103.96.38 <none> 9080/TCP 11m
    5. ratings ClusterIP 10.109.224.231 <none> 9080/TCP 11m
    6. reviews ClusterIP 10.96.100.147 <none> 9080/TCP 11m

配置入口网关

  • 自动注入安装

    1. kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
  • 手动注入安装

    1. kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/networking/bookinfo-gateway.yaml)

查看gateway

  • 查看

    1. kubectl get gateway
  • 结果

    1. NAME AGE
    2. bookinfo-gateway 4m35s

查看virtualservice

  • 查看

    1. kubectl get vs
  • 结果

    1. NAME GATEWAYS HOSTS AGE
    2. bookinfo [bookinfo-gateway] [*] 22h

获取端口:
http端口

  1. kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}'

https端口

  1. kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}'

host:

  1. kubectl get pods -l istio=ingressgateway -n istio-system -o wide

192.168.219.89:31380

  1. export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
文档更新时间: 2019-08-24 09:17   作者:admin