千家信息网

istio使用过程是怎样的

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,istio使用过程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。安装安装k8s 强势插播广告三步安装,不多说安装helm, 推荐
千家信息网最后更新 2026年11月04日istio使用过程是怎样的

istio使用过程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

安装

安装k8s 强势插播广告

三步安装,不多说

安装helm, 推荐生产环境用helm安装,可以调参release地址

如我使用的2.9.1版本

yum install -y socat # 这个不装会报错
[root@istiohost ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz[root@istiohost ~]# tar zxvf helm-v2.9.1-linux-amd64.tar.gz[root@istiohost ~]# cp linux-amd64/helm /usr/bin

先创建一个service account 把管理员权限给helm:

[root@istiohost ~]# cat helmserviceaccount.yamlapiVersion: v1kind: ServiceAccountmetadata:  name: tiller  namespace: kube-system---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata:  name: tiller-clusterrolebindingsubjects:- kind: ServiceAccount  name: tiller  namespace: kube-systemroleRef:  kind: ClusterRole  name: cluster-admin  apiGroup: ""
kubectl create -f  helmserviceaccount.yaml

安装helm 服务端 tiller :

helm init  --service-account tiller #  如果已安装更新加 --upgrade 参数helm list #没任何返回表示成功

安装istio

curl -L https://git.io/getLatestIstio | sh -cd istio-1.0.0/export PATH=$PWD/bin:$PATH

helm 2.10.0以前的版本需要装一下CRD:

kubectl apply -f install/kubernetes/helm/istio/templates/crds.yamlkubectl apply -f install/kubernetes/helm/istio/charts/certmanager/templates/crds.yaml

安装istio, 由于你没有LB所以用NodePort代替:

helm install install/kubernetes/helm/istio  --name istio --namespace istio-system --set gateways.istio-ingressgateway.type=NodePort --set gateways.istio-egressgateway.type=NodePort

安装成功:

[root@istiohost istio-1.0.0]# kubectl get pod -n istio-systemNAME                                        READY     STATUS    RESTARTS   AGEistio-citadel-7d8f9748c5-ntqnp              1/1       Running   0          5mistio-egressgateway-676c8546c5-2w4cq        1/1       Running   0          5mistio-galley-5669f7c9b-mkxjg                1/1       Running   0          5mistio-ingressgateway-5475685bbb-96mbr       1/1       Running   0          5mistio-pilot-5795d6d695-gr4h5                2/2       Running   0          5mistio-policy-7f945bf487-gkpxr               2/2       Running   0          5mistio-sidecar-injector-d96cd9459-674pk      1/1       Running   0          5mistio-statsd-prom-bridge-549d687fd9-6cbzs   1/1       Running   0          5mistio-telemetry-6c587bdbc4-jndjn            2/2       Running   0          5mprometheus-6ffc56584f-98mr9                 1/1       Running   0          5m[root@istiohost istio-1.0.0]# kubectl get svc -n istio-systemNAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                                                                     AGEistio-citadel              ClusterIP   10.108.253.89            8060/TCP,9093/TCP                                                                                           5mistio-egressgateway        NodePort    10.96.151.14             80:30830/TCP,443:30038/TCP                                                                                  5mistio-galley               ClusterIP   10.102.83.130            443/TCP,9093/TCP                                                                                            5mistio-ingressgateway       NodePort    10.99.194.13             80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:31577/TCP,8060:30037/TCP,15030:31855/TCP,15031:30775/TCP   5mistio-pilot                ClusterIP   10.101.4.143             15010/TCP,15011/TCP,8080/TCP,9093/TCP                                                                       5mistio-policy               ClusterIP   10.106.221.68            9091/TCP,15004/TCP,9093/TCP                                                                                 5mistio-sidecar-injector     ClusterIP   10.100.5.170             443/TCP                                                                                                     5mistio-statsd-prom-bridge   ClusterIP   10.107.28.242            9102/TCP,9125/UDP                                                                                           5mistio-telemetry            ClusterIP   10.105.66.20             9091/TCP,15004/TCP,9093/TCP,42422/TCP                                                                       5mprometheus                 ClusterIP   10.103.128.152           9090/TCP

使用教程

官网事例 Bookinfo Application

  • productpage 调用details和reviews渲染页面

  • details包含书本信息

  • reviews 书本反馈,调用ratings服务

  • ratings 书本租借信息

reviews服务有三个版本:

  • V1 不请求ratings

  • V2 请求ratings,返回1到5个黑星

  • V3 请求ratings,返回1到5个红星

数据平面:

安装应用:

kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml)

安装完成:

[root@istiohost istio-1.0.0]# kubectl get servicesNAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGEdetails       ClusterIP   10.104.66.31            9080/TCP   2mkubernetes    ClusterIP   10.96.0.1               443/TCP    4hproductpage   ClusterIP   10.109.68.13            9080/TCP   2mratings       ClusterIP   10.99.55.110            9080/TCP   2mreviews       ClusterIP   10.102.19.129           9080/TCP   2m[root@istiohost istio-1.0.0]# kubectl get podsNAME                              READY     STATUS    RESTARTS   AGEdetails-v1-fc9649d9c-dpnlp        2/2       Running   0          2mproductpage-v1-58845c779c-7g8th   2/2       Running   0          2mratings-v1-6cc485c997-fb7nh       2/2       Running   0          2mreviews-v1-76987687b7-x5n7z       2/2       Running   0          2mreviews-v2-86749dcd5-xchzb        2/2       Running   0          2mreviews-v3-7f4746b959-nthrq       2/2       Running   0          2m

创建一个gateway,这是为了集群外可以访问

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

浏览器访问url: 47.254.28.88是我的节点ip,使用nodeport模式

http://47.254.28.88:31380/productpage

连续点击三次,你会发现右边没星星-> 黑星星-> 红星星切换,对应三个版本的review,默认策略是轮询

创建destination rules, 配置路由访问规则,现在还是轮询

kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml

智能路由

请求路由 request routing

根据版本路由

把所有路由切换到v1版本

kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

这样执行完后,不管怎么刷页面,我们都看不到星星,因为v1版本没星

可以看到destination是这样的:

  http:  - route:    - destination:        host: details        subset: v1

试想如此我们做版本切换将是何等简单

根据用户路由

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml

你会发现用jason用户登录就能看到黑星星,而其它方式看到的页面都是无星星

因为这个user走了v2版本,能不强大? 那当然还能根据header什么的做路由了,就不多说了

  http:  - match:    - headers:        end-user:          exact: jason    route:    - destination:        host: reviews        subset: v2  - route:    - destination:        host: reviews        subset: v1

故障注入 Fault injection

kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yamlkubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml

假设代码里有个bug,用户jason, reviews:v2 访问ratings时会卡10s, 我们任然希望端到端的测试能正常走完

kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml

注入错误让jason用户有个7s的延迟

  hosts:  - ratings  http:  - fault:      delay:        fixedDelay: 7s        percent: 100    match:    - headers:        end-user:          exact: jason    route:    - destination:        host: ratings        subset: v1  - route:    - destination:        host: ratings        subset: v1

这时访问页面显然会出错,因为我们希望7s内能返回,这样我们就发现了一个延迟的bug

Error fetching product reviews!Sorry, product reviews are currently unavailable for this book.

所以我们就可能通过故障注入去发现这些异常现象

链路切换 Traffic Shifting

我们先把50%流量发送给reviews:v1 50%流量发送给v3,然后再把100%的流量都切给v3

把100%流量切到v1

kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml

此时不论刷几遍,都没有星星

v1 v3各50%流量

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
  - route:    - destination:        host: reviews        subset: v1      weight: 50    - destination:        host: reviews        subset: v3      weight: 50

此时一会有星,一会没星,但是已经不是轮询算法了

全切v3

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v3.yaml

这时不管怎么刷都是红心了

看完上述内容,你们掌握istio使用过程是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

版本 星星 路由 流量 用户 页面 切换 书本 服务 过程 成功 三个 信息 内容 故障 方法 更多 问题 延迟 强大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技战争 互联网科技媒体 广州互联网络科技有限公司 菲比寻常互联网科技 佰商互联网科技有限公司 恒生科技互联网指数分析 银川新华互联网科技学校地址 科技互联网的估值 武汉健翔互联网络科技有限公司 乌鲁木齐新华智原互联网科技学校 互联网科技的全部知识 中和天地互联网科技有限公司 唯美互联网科技 美国五大互联网科技公司市值多少 悟空问答互联网科技 互联网科技博主张洲 青岛易易互联网科技 科技互联网专业务虚会材料 瑞安市蟠桃会互联网科技有限公司 株洲百竞科技的互联网营销顾问 广东万易互联网科技有限公司惠州分公司 互联网高科技股票 甘肃拓世互联网科技有限公司 佩信高科技互联网 移动互联网科技公司 苏州铭阳互联网科技有限公司 健康食品互联网创新科技园项目 互联网行业科技股 美国互联网科技公司 科技互联网公司两年变化
0