内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
本文档风哥主要介绍微服务架构与服务网格的实战方法,包括微服务设计、Istio部署、流量管理等内容。
Part01-基础概念与理论知识
1.1 微服务架构
服务独立部署
服务间轻量通信
去中心化治理
故障隔离
# 服务网格(Service Mesh)
Istio:功能全面的服务网格
Linkerd:轻量级服务网格
Consul Connect:服务发现+网格
Part02-生产环境规划与建议
2.1 微服务设计原则
单一职责:每个服务只做一件事
服务自治:独立开发、部署、扩展
故障隔离:单个服务故障不影响整体
可观测性:完善的监控和日志
Part03-生产环境项目实施方案
3.1 Istio部署
$ curl -L https://istio.io/downloadIstio | sh –
$ cd istio-1.20.0
$ export PATH=$PWD/bin:$PATH
# 安装Istio
$ istioctl install –set profile=demo -y
✔ Istio core installed
✔ Istiod installed
✔ Ingress gateways installed
✔ Installation complete
# 启用自动注入
$ kubectl label namespace default istio-injection=enabled
namespace/default labeled
# 部署示例应用
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
# 查看服务状态
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.0.0.212
ratings ClusterIP 10.0.0.33
reviews ClusterIP 10.0.0.28
productpage ClusterIP 10.0.0.120
3.2 流量管理
$ cat > gateway.yaml << 'EOF' apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: bookinfo-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*" EOF $ kubectl apply -f gateway.yaml # 创建VirtualService $ cat > virtualservice.yaml << 'EOF' apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: bookinfo spec: hosts: - "*" gateways: - bookinfo-gateway http: - match: - uri: exact: /productpage route: - destination: host: productpage port: number: 9080 EOF $ kubectl apply -f virtualservice.yaml # 配置金丝雀发布 $ cat > canary.yaml << 'EOF' apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v1 weight: 90 - destination: host: reviews subset: v2 weight: 10 EOF $ kubectl apply -f canary.yaml
Part04-生产案例与实战讲解
4.1 案例:微服务应用部署
# 1. 创建命名空间并启用注入
$ kubectl create namespace microservice
$ kubectl label namespace microservice istio-injection=enabled
# 2. 部署微服务
$ kubectl apply -f deployment.yaml -n microservice
# 3. 配置服务发现
$ kubectl apply -f service.yaml -n microservice
# 4. 配置流量管理
$ kubectl apfrom PG视频:www.itpux.comply -f virtualservice.yaml -n microservice
$ kubectl apply -f destinationrule.yaml -n microservice
# 5.学习交流加群风哥QQ113257174 配置熔断
$ cat > circuitbreaker.yaml << 'EOF'
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
trafficPolicy:
connectionPool:
tcp:
maxConnections: 100
http:
h2UpgradePolicy: UPGRADE
http1MaxPendingRequests: 100
http2MaxPendingRequests: 100
outlierDetection:
consecutive5xxErrors: 3
interval: 30s
baseEjectionTime: 30s
EOF
$ kubectl apply -f circuitbreaker.yaml -n microservice
风哥提示:
Part05-风哥经验总结与分享
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
