资讯专栏INFORMATION COLUMN

istio1.0安装教程,快速入门

sushi / 1403人阅读

摘要:广告各版本离线安装包祝贺发布在此献上教程一份安装安装强势插播广告三步安装,不多说安装推荐生产环境用安装,可以调参地址如我使用的版本这个不装会报错先创建一个把管理员权限给安装服务端如果已安装更新加

</>复制代码

  1. 广告 | kubernetes各版本离线安装包

祝贺istio1.0发布, 在此献上教程一份

安装

</>复制代码

  1. 安装k8s 强势插播广告

三步安装,不多说

</>复制代码

  1. 安装helm, 推荐生产环境用helm安装,可以调参

release地址

如我使用的2.9.1版本

</>复制代码

  1. yum install -y socat # 这个不装会报错

</>复制代码

  1. [root@istiohost ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
  2. [root@istiohost ~]# tar zxvf helm-v2.9.1-linux-amd64.tar.gz
  3. [root@istiohost ~]# cp linux-amd64/helm /usr/bin

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

</>复制代码

  1. [root@istiohost ~]# cat helmserviceaccount.yaml
  2. apiVersion: v1
  3. kind: ServiceAccount
  4. metadata:
  5. name: tiller
  6. namespace: kube-system
  7. ---
  8. kind: ClusterRoleBinding
  9. apiVersion: rbac.authorization.k8s.io/v1beta1
  10. metadata:
  11. name: tiller-clusterrolebinding
  12. subjects:
  13. - kind: ServiceAccount
  14. name: tiller
  15. namespace: kube-system
  16. roleRef:
  17. kind: ClusterRole
  18. name: cluster-admin
  19. apiGroup: ""

</>复制代码

  1. kubectl create -f helmserviceaccount.yaml

安装helm 服务端 tiller :

</>复制代码

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

</>复制代码

  1. 安装istio

</>复制代码

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

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

</>复制代码

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

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

</>复制代码

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

安装成功:

</>复制代码

  1. [root@istiohost istio-1.0.0]# kubectl get pod -n istio-system
  2. NAME READY STATUS RESTARTS AGE
  3. istio-citadel-7d8f9748c5-ntqnp 1/1 Running 0 5m
  4. istio-egressgateway-676c8546c5-2w4cq 1/1 Running 0 5m
  5. istio-galley-5669f7c9b-mkxjg 1/1 Running 0 5m
  6. istio-ingressgateway-5475685bbb-96mbr 1/1 Running 0 5m
  7. istio-pilot-5795d6d695-gr4h4 2/2 Running 0 5m
  8. istio-policy-7f945bf487-gkpxr 2/2 Running 0 5m
  9. istio-sidecar-injector-d96cd9459-674pk 1/1 Running 0 5m
  10. istio-statsd-prom-bridge-549d687fd9-6cbzs 1/1 Running 0 5m
  11. istio-telemetry-6c587bdbc4-jndjn 2/2 Running 0 5m
  12. prometheus-6ffc56584f-98mr9 1/1 Running 0 5m
  13. [root@istiohost istio-1.0.0]# kubectl get svc -n istio-system
  14. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  15. istio-citadel ClusterIP 10.108.253.89 8060/TCP,9093/TCP 5m
  16. istio-egressgateway NodePort 10.96.151.14 80:30830/TCP,443:30038/TCP 5m
  17. istio-galley ClusterIP 10.102.83.130 443/TCP,9093/TCP 5m
  18. istio-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 5m
  19. istio-pilot ClusterIP 10.101.4.143 15010/TCP,15011/TCP,8080/TCP,9093/TCP 5m
  20. istio-policy ClusterIP 10.106.221.68 9091/TCP,15004/TCP,9093/TCP 5m
  21. istio-sidecar-injector ClusterIP 10.100.5.170 443/TCP 5m
  22. istio-statsd-prom-bridge ClusterIP 10.107.28.242 9102/TCP,9125/UDP 5m
  23. istio-telemetry ClusterIP 10.105.66.20 9091/TCP,15004/TCP,9093/TCP,42422/TCP 5m
  24. prometheus 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个红星

数据平面:

安装应用:

</>复制代码

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

安装完成:

</>复制代码

  1. [root@istiohost istio-1.0.0]# kubectl get services
  2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. details ClusterIP 10.104.66.31 9080/TCP 2m
  4. kubernetes ClusterIP 10.96.0.1 443/TCP 4h
  5. productpage ClusterIP 10.109.68.13 9080/TCP 2m
  6. ratings ClusterIP 10.99.55.110 9080/TCP 2m
  7. reviews ClusterIP 10.102.19.129 9080/TCP 2m
  8. [root@istiohost istio-1.0.0]# kubectl get pods
  9. NAME READY STATUS RESTARTS AGE
  10. details-v1-fc9649d9c-dpnlp 2/2 Running 0 2m
  11. productpage-v1-58845c779c-7g8th 2/2 Running 0 2m
  12. ratings-v1-6cc485c997-fb7nh 2/2 Running 0 2m
  13. reviews-v1-76987687b7-x5n7z 2/2 Running 0 2m
  14. reviews-v2-86749dcd5-xchzb 2/2 Running 0 2m
  15. reviews-v3-7f4746b959-nthrq 2/2 Running 0 2m

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

</>复制代码

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

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

</>复制代码

  1. http://47.254.28.88:31380/productpage

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

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

</>复制代码

  1. kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
智能路由 请求路由 request routing 根据版本路由

把所有路由切换到v1版本

</>复制代码

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

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

可以看到destination是这样的:

</>复制代码

  1. http:
  2. - route:
  3. - destination:
  4. host: details
  5. subset: v1

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

根据用户路由

</>复制代码

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

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

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

</>复制代码

  1. http:
  2. - match:
  3. - headers:
  4. end-user:
  5. exact: jason
  6. route:
  7. - destination:
  8. host: reviews
  9. subset: v2
  10. - route:
  11. - destination:
  12. host: reviews
  13. subset: v1
故障注入 Fault injection

</>复制代码

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

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

</>复制代码

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

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

</>复制代码

  1. hosts:
  2. - ratings
  3. http:
  4. - fault:
  5. delay:
  6. fixedDelay: 7s
  7. percent: 100
  8. match:
  9. - headers:
  10. end-user:
  11. exact: jason
  12. route:
  13. - destination:
  14. host: ratings
  15. subset: v1
  16. - route:
  17. - destination:
  18. host: ratings
  19. subset: v1

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

</>复制代码

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

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

链路切换 Traffic Shifting

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

把100%流量切到v1

</>复制代码

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

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

v1 v3各50%流量

</>复制代码

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

</>复制代码

  1. - route:
  2. - destination:
  3. host: reviews
  4. subset: v1
  5. weight: 50
  6. - destination:
  7. host: reviews
  8. subset: v3
  9. weight: 50

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

全切v3

</>复制代码

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27391.html

相关文章

  • istio1.0安装教程快速入门

    摘要:广告各版本离线安装包祝贺发布在此献上教程一份安装安装强势插播广告三步安装,不多说安装推荐生产环境用安装,可以调参地址如我使用的版本这个不装会报错先创建一个把管理员权限给安装服务端如果已安装更新加 广告 | kubernetes各版本离线安装包 祝贺istio1.0发布, 在此献上教程一份 安装 安装k8s 强势插播广告 三步安装,不多说 安装helm, 推荐生产环境用helm安装,...

    wuyangnju 评论0 收藏0
  • 零基础入门—网站建站教程(新手必备)

    摘要:自行建站服务器购买网站搭建网站维护全程自主,弹性灵活。网站部署常见网站类型有以下几种个人博客常用于搭建个人博客网站,尤其适用于首次使用阿里云进行建站的新用户。若您需要在阿里云服务器上部署站点环境安装应用程序,可点此查看网站基础环境搭建服务。相信很多新用户会有这样的疑惑,我要做个网站,到底要使用什么产品,如何能快速完成网站建站呢?搭建网站有两种选择,一种是直接购买建站模板,另一种则是自行建站。...

    booster 评论0 收藏0
  • 零基础入门—网站建站教程(新手必备)

    摘要:自行建站服务器购买网站搭建网站维护全程自主,弹性灵活。网站部署常见网站类型有以下几种个人博客常用于搭建个人博客网站,尤其适用于首次使用阿里云进行建站的新用户。若您需要在阿里云服务器上部署站点环境安装应用程序,可点此查看网站基础环境搭建服务。前言相信很多新用户会有这样的疑惑,我要做个网站,到底要使用什么产品,如何能快速完成网站建站呢?搭建网站有两种选择,一种是直接购买建站模板,另一种则是自行建...

    wemall 评论0 收藏0
  • Laravel 教程 - 实战 iBrand 开源电商 API 系统

    摘要:最佳实践良好的编码规范单元测试持续集成文档,从一开始就形成良好的编码习惯。真实的电商业务所有的业务需求来自真实的客户,并且线上良好运营中。 重要通知: Laravel + 小程序的开源电商版本源码已经在 github 上拉,欢迎提交 issue 和 star :) 开源电商 Server 端: Laravel API源码 开源电商 client 端:小程序源码 iBrand 简介...

    iOS122 评论0 收藏0

发表评论

0条评论

sushi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<