1、istio简介
istio是一个用来连接、管理和保护微服务的开放平台,提供一种简单的方式来建立已部署的服务的网络,具备负载均衡,服务到服务认证,监控等等功能,而不需要改动任何服务代码。。
简而言之:istio--->服务治理、k8s--->集群治理
- 基础通信层---envoy
内核层流量劫持至15001端口(envoy监听端口),处理完成后,通过http://localhost:***转发至业务容器中,具有服务发现、负载均衡、健康检查等功能。
- 向导---polit
负责envoy在服务网格部署的生命周期
- 混合器---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
扫描二维码关注公众号,回复:
2914903 查看本文章
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、验证
5、其他
istio安装包中还提供分布式链路追踪、性能指标监控相关service,后续文章将陆续补充。
- Zipkin
- Grafana