istio-部署

1、istio简介

        istio是一个用来连接、管理和保护微服务的开放平台,提供一种简单的方式来建立已部署的服务的网络,具备负载均衡,服务到服务认证,监控等等功能,而不需要改动任何服务代码。。

        简而言之:istio--->服务治理、k8s--->集群治理

istio-部署_第1张图片

  • 基础通信层---envoy

        内核层流量劫持至15001端口(envoy监听端口),处理完成后,通过http://localhost:***转发至业务容器中,具有服务发现、负载均衡、健康检查等功能。

       istio-部署_第2张图片

  • 向导---polit

        负责envoy在服务网格部署的生命周期

istio-部署_第3张图片

  • 混合器---mixer

        流量限制、日志记录等

  • 认证中心---istio auth

2、istio安装

  • 下载安装包并路径
curl -L https://git.io/getLatestIstio | sh -
cd istio-0.7.1/
  •  将istioctl加入到系统PATH环境变量中
export PATH="$PATH:/root/istio-0.7.1/bin"
  • 安装istio控制面服务

       修改istio.yaml中istio-ingress对外暴露方式为nodeport

################################
# Istio ingress
################################
apiVersion: v1
kind: Service
metadata:
  name: istio-ingress
  namespace: istio-system
  labels:
    istio: ingress
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 32000
    name: http
  - port: 443
    name: https
  selector:
    istio: ingress
---
kubectl apply -f install/kubernetes/istio.yaml
  • 确认istio相关service和pod部署状态
kubectl get svc -n istio-system
kubectl get pods -n istio-system

istio-部署_第4张图片

3、部署BookInfo       

        通过自动注入或手动注入envoy方式部署Bookinfo应用。

  • 自动注入
kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml)
  • 手动注入
istioctl kube-inject \
    --injectConfigFile inject-config.yaml \
    --meshConfigFile mesh-config.yaml \
    --filename samples/bookinfo/kube/bookinfo.yaml \ 
    --output samples/bookinfo/kube/bookinfo-injected.yaml

    PS:已经删减了review相关development,仅保留productpage、detail

4、验证

istio-部署_第5张图片


istio-部署_第6张图片

5、其他

    istio安装包中还提供分布式链路追踪、性能指标监控相关service,后续文章将陆续补充。

  • Zipkin

istio-部署_第7张图片

  • Grafana

istio-部署_第8张图片

你可能感兴趣的:(K8S,istio)