k8s之istio概述
一、service mesh概述
Service Mesh 的中文译为 “服务网格” ,是一个用于处理服务和服务之间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通信实现了微服务所需的基本组件功能,例如服务发现、负载均衡、监控、流量管理、访问控制等。在实践中,服务网格通常实现为一组和应用程序部署在一起的轻量级的网络代理,但对应用程序来说是透明的。

上图,绿色方块为应用服务,蓝色方块为 Sidecar Proxy,应用服务之间通过 Sidecar Proxy 进行通信,整个服务通信形成图中的蓝色网络连线,图中所有蓝色部分就形成一个网络,这个就是服务网格名字的由来。
二、service mesh特点
1、治理能力独立
2、应用程序无感知
3、服务通信的基础设施层
4、解耦应用程序的重试、超时、监控、追踪和服务发现
三、istio概述
1、架构与组件组成
1) 数据平面
由一组proxy组成,这些Proxy负责所有微服务网络通信,实现高效转发和策略。使用envoy实现,envoy是一个基于C++实现的L4/L7 Proxy转发器,是Istio在数据平面唯一的组件。
2) 控制平面
使用全新的部署模式:istiod,这个组件负责处理Sidecar注入、证书分发、配置管理等功能,替代原有组件,降低复杂度,提高易用性。
• Pilot:策略配置组件,为Proxy提供服务发现、智能路由、错误处理等。
• Citadel:安全组件,提供证书生成下发、加密通信、访问控制。
• Galley:配置管理、验证、分发。
2、版本变化
1.5版本之后弃用了mixer
将原有多个组件整合为 istiod

3、可配置资源
1)VirtualService(虚拟服务)
实现服务请求路由规则的功能。
2)DestinationRule(目标规则)
实现目标服务的负载均衡、服务发现、故障处理和故障注入的功能。
3)Gateway(网关)
让服务网格内的服务,可以被全世界看到。
4)ServiceEntry(服务入口)
允许管理网格外的服务的流量。
4、可实现功能
1)连接(Connect)
1)流量管理
2)负载均衡
3)灰度发布
2)安全(Secure)
1)认证
2)鉴权
3)控制(Control)
1)限流
2)ACL
4)观察(Observe)
1)监控
2)调用链
四、istio安装
tar zxvf istio-1.8.2-linux.tar.gz
cd istio-1.8.2
mv bin/istioctl /usr/bin
istioctl install (默认使用default配置安装)
kubectl get pods -n istio-system
kubectl get svc -n istio-system
查看有哪些配置名称
istioctl profile list
default(生产环境建议) minimal demo
用的比较多
生成在k8s上部署的一些清单
istio manifest generate
卸载:
istioctl manifest generate | kubectl delete -f -
五、应用接入
部署httpbin Web示例:
cd istio-1.8.2/samples/httpbin
kubectl apply -f <(istioctl kube-inject -f httpbin-nodeport.yaml)
或者
istioctl kube-inject -f httpbin-nodeport.yaml |kubectl apply -f -
2、自动注入
kubectl label namespace default istio-injection=enabled
kubectl apply -f httpbin-gateway.yaml

浙公网安备 33010602011771号