ISTIO简介和部署
官方文档:https://istio.io/docs/concepts/what-is-istio/
Github地址:https://github.com/istio/istio/
Istio是一个开源的服务网格(Service Mesh),为Kubernetes和其他平台上的微服务架构提供了一种统一的、灵活的网络通信和管理方式。具有服务发现、负载均衡、流量管理、故障恢复和安全性等功能。
Istio的一些基本特性:
1.代理注入:Istio使用Envoy作为其数据面代理,通过注入Envoy代理到每个微服务的Pod中,实现对流量的控制和管理。这种代理注入的方式无需修改应用代码,提供了一种非侵入式的部署方式。
2.服务发现:Istio通过在代理中集成服务注册和发现机制,实现对微服务实例的自动发现和路由。它能够动态地将流量转发到可用的服务实例,并支持多种服务发现的机制
3.负载均衡:Istio提供了丰富的负载均衡策略,可以根据不同的需求进行流量的分发和负载均衡,包括轮询、加权轮询、故障感知等。
4.流量管理:Istio可以实现对流量的灵活管理和控制,支持流量切分、A/B测试、金丝雀发布等高级流量管理功能。它可以帮助开发人员更好地控制和管理微服务架构中的流量。
5.故障恢复:Istio提供了故障恢复机制,包括超时控制、重试、断路器和熔断等。它能够自动检测和处理微服务中的故障,并提供弹性和可靠性。
6.安全性:Istio提供了丰富的安全功能,包括流量加密、身份认证和授权、访问控制等。它可以通过自动注入代理,对服务间的通信进行加密和验证,提供了更高层次的安全保障。
主要功能:处理熔断、超时、重试
istio服务网格从逻辑上分为数据平面和控制平面
istio部署
由于下载不方便,暂时用老版本1.18.2
解压istio-1.18.2-linux-amd64.tar.gz,生成一个目录
tar -xzvf istio-1.18.2-linux-amd64.tar.gz
cd istio-1.18.2
cp bin/istioctl /usr/bin/
harbor创建istio项目,上传istio镜像到harbor
docker load -i istio1.18.tar.gz
docker imags
docker images
docker tag istio/pilot:1.18.2 172.16.80.140/istio/pilot:1.18.2
docker tag istio/proxyv2:1.18.2 172.16.80.140/istio/proxyv2:1.18.2
docker images
docker push 172.16.80.140/istio/proxyv2:1.18.2
docker push 172.16.80.140/istio/pilot:1.18.2
创建命名空间istio-system
创建secret,本地仓库的账号密码
kubectl create secret docker-registry regcred \
--docker-server=172.16.80.140 \
--docker-username=admin \
--docker-password=Harbor12345 \
-n istio-system
istioctl install --set profile=demo \
--set values.global.hub=172.16.80.140/istio \
--set values.global.imagePullPolicy=IfNotPresent \
--set values.global.imagePullSecrets[0]=harbor-regcred
kubectl get pods -n istio-system
卸载istio
istioctl manifest generate --set profile=demo | kubectl delete -f -
istioctl x uninstall --purge
istio的三种部署模式
demo:适用于生产环境,包含istiod、ingressgateway、egressgateway
default:这是一个最小配置,仅包含最基本的组件,如istiod和ingressgateway
minimal:这个配置相对更加精简,只包含了必需的组件,适用于资源受限或轻量级的环境。只会安装istiod。
可通过命令查看这三种安装的配置文件
istioctl profile dump minimal
istioctl profile dump minimal
istioctl profile dump demo