kubernetes istio

目录

一、部署

二、部署示例应用

三、部署遥测组件

四、流量管理

五、熔断


官网:https://istio.io/latest/zh/about/service-mesh/

一、部署

提前准备好文件

复制代码
tar zxf 15t10-1.19.3-linux-amd64.tar.gz
cd 15t10-1.19.3/
export PATH=$PWD/bin:$PATH

istioctl install --set profile=demo -y
kubectl get pod -A


给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理

二、部署示例应用

复制代码
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

三、部署遥测组件

复制代码
kubectl apply -f samples/addons

待插件部署完毕后,修改kiali服务的访问方式为Loadbalancer


访问kiali:http://192.168.67.125:20001/

四、流量管理

将所有流量路由到每个微服务的 v1 版本

复制代码
kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

来自名为 Jason 的用户的所有流量将被路由到服务 reviews:v2

复制代码
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml


创建故障注入规则以延迟来自测试用户 jason 的流量

复制代码
kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml

用户 jason 登陆到 /productpage 页面,出现了一个问题:Reviews 部分显示了错误消息

设置流量转移,将所有流量转移到 reviews:v3

复制代码
vim  samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml
kubectl apply -f   samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml


修改延迟规则为任何低于 2.5 秒的数值,例如 2 秒

复制代码
vim  samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml
kubectl apply -f   samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml


把 50% 的流量从 reviews:v1 转移到 reviews:v3 一半v1 一半v3

复制代码
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml


当reviews:v3 微服务已经稳定,可以通过应用 Virtual Service 规则将 100% 的流量路由 reviews:v3:

复制代码
kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml


清理:

复制代码
samples/bookinfo/platform/kube/cleanup.sh

五、熔断

部署 httpbin 服务

复制代码
kubectl apply -f samples/httpbin/httpbin.yaml

配置熔断规则

复制代码
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: httpbin
spec:
  host: httpbin
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 1
      http:
        http1MaxPendingRequests: 1
        maxRequestsPerConnection: 1
    outlierDetection:
      consecutive5xxErrors: 1
      interval: 1s
      baseEjectionTime: 3m
      maxEjectionPercent: 100
EOF

增加一个客户端

复制代码
kubectl apply -f samples/httpbin/sample-client/fortio-deploy.yaml


登入客户端 Pod 并使用 Fortio 工具调用 httpbin 服务

复制代码
export fortio-deploy-6cf68cc4c-qfcb=$(kubectl get pods -l app=fortio -o 'jsonpath={.items[0].metadata.name}')

kubectl exec "fortio-deploy-6cf68cc4c-qfcb" -c fortio -- /usr/bin/fortio curl -quiet http://httpbin:8000/get


触发熔断器

发送并发数为 2 的连接(-c 2),请求 20 次(-n 20)

复制代码
kubectl exec "fortio-deplov-6cf68cc4c-abfcb" -c fortio -- /usr/bin/fortio load -c 2 -qps 0 -n 20 -loglevel Warning http://httpbin:8000/get

istio-proxy 确实允许存在一些误差


将并发连接数提高到 3 个

复制代码
kubectl exec "fortio-deploy-6cf68cc4c-qbfcb" -c fortio -- /usr/bin/fortio load -c 3 -qps 0 -n 30 -loglevel Warning http://httpbin:8000/get


将并发连接数提高到 5 个 均被熔断器拦截

复制代码
kubectl exec "fortio-deploy-6cf68cc4c-qbfcb" -c fortio -- /usr/bin/fortio load -c 5 -qps 0 -n 30 -loglevel Warning http://httpbin:8000/get

清理

复制代码
kubectl delete destinationrule httpbin

kubectl delete -f samples/httpbin/sample-client/fortio-deploy.yaml
kubectl delete -f samples/httpbin/httpbin.yaml

回收istio

复制代码
istioctl uninstall -y --purge
kubectl label namespace default istio-injection-

相关推荐
米高梅狮子1 小时前
13.ETCD 存储系统、生产环境 Kubernetes 集群部署和Kubernetes 集群升级
数据库·云原生·容器·架构·kubernetes·自动化·etcd
高旭的旭11 小时前
GitLab Omnibus Docker 内存优化实战:从 4.7 GiB 降到 3.2 GiB
docker·容器·gitlab
我是Superman丶18 小时前
Docker 命令自用
运维·docker·容器
树下水月21 小时前
docker 常用命令
docker·容器·eureka
=蜗牛=1 天前
Docker 简单部署 ClickHouse 超详细图文步骤
clickhouse·docker·容器·部署·图文
Slow菜鸟1 天前
Docker 学习篇(五)| Docker 常用命令
学习·docker·容器
梵得儿SHI1 天前
(第三篇)Spring AI 架构设计与优化:容器化与云原生部署,基于 K8s 的 AI 应用全生命周期管理
java·ci/cd·docker·云原生·kubernetes·容器化·spring ai
m0_737539371 天前
基于LNMP的综合实验
容器·kubernetes
木雷坞2 天前
内网模型服务启动链路分层实践
docker·容器·gpu
江湖有缘2 天前
保姆级教程:Docker 部署 Portracker 端口监控工具
jvm·docker·容器