Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

栏目: 后端 · 发布时间: 7年前

内容简介:Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

前言

原文链接: http://rootsongjc.github.io/bl ... tion/

关于istio的简介请看: http://rootsongjc.github.io/blogs/istio-overview/

本文已上传到 kubernetes-handbook 中的第五章微服务章节,本文仅作归档,更新以 kubernetes-handbook 为准。

本文根据官网的文档整理而成,步骤包括安装 istio 0.1.5 并创建一个bookinfo的微服务来测试istio的功能。

文中使用的yaml文件可以在 kubernetes-handbookmanifests/istio 目录中找到,所有的镜像都换成了我的私有镜像仓库地址,请根据官网的镜像自行修改。

安装环境

  • CentOS 7.3.1611
  • Docker 1.12.6
  • Kubernetes 1.6.0

安装

1.下载安装包

下载地址: https://github.com/istio/istio/releases

下载 Linux 版本的当前最新版安装包

Shell

wget https://github.com/istio/istio/releases/download/0.1.5/istio-0.1.5-linux.tar.gz

2.解压

解压后,得到的目录结构如下:

```

.

├── bin

│   └── istioctl

├── install

│   └── kubernetes

│   ├── addons

│   │   ├── grafana.yaml

│   │   ├── prometheus.yaml

│   │   ├── servicegraph.yaml

│   │   └── zipkin.yaml

│   ├── istio-auth.yaml

│   ├── istio-rbac-alpha.yaml

│   ├── istio-rbac-beta.yaml

│   ├── istio.yaml

│   ├── README.md

│   └── templates

│   ├── istio-auth

│   │   ├── istio-auth-with-cluster-ca.yaml

│   │   ├── istio-cluster-ca.yaml

│   │   ├── istio-egress-auth.yaml

│   │   ├── istio-ingress-auth.yaml

│   │   └── istio-namespace-ca.yaml

│   ├── istio-egress.yaml

│   ├── istio-ingress.yaml

│   ├── istio-manager.yaml

│   └── istio-mixer.yaml

├── istio.VERSION

├── LICENSE

└── samples

├── apps

│   ├── bookinfo

│   │   ├── bookinfo.yaml

│   │   ├── cleanup.sh

│   │   ├── destination-ratings-test-delay.yaml

│   │   ├── loadbalancing-policy-reviews.yaml

│   │   ├── mixer-rule-additional-telemetry.yaml

│   │   ├── mixer-rule-empty-rule.yaml

│   │   ├── mixer-rule-ratings-denial.yaml

│   │   ├── mixer-rule-ratings-ratelimit.yaml

│   │   ├── README.md

│   │   ├── route-rule-all-v1.yaml

│   │   ├── route-rule-delay.yaml

│   │   ├── route-rule-reviews-50-v3.yaml

│   │   ├── route-rule-reviews-test-v2.yaml

│   │   ├── route-rule-reviews-v2-v3.yaml

│   │   └── route-rule-reviews-v3.yaml

│   ├── httpbin

│   │   ├── httpbin.yaml

│   │   └── README.md

│   └── sleep

│   ├── README.md

│   └── sleep.yaml

└── README.md

11 directories, 41 files

```

从文件里表中可以看到,安装包中包括了kubernetes的yaml文件,示例应用和安装模板。

3.安装istioctl

./bin/istioctl 拷贝到你的 $PATH 目录下。

4.检查RBAC

因为我们安装的kuberentes版本是1.6.0默认支持RBAC,这一步可以跳过。如果你使用的其他版本的kubernetes,请参考 官方文档 操作。

执行以下命令,正确的输出是这样的:

bash

$ kubectl api-versions | grep rbac

rbac.authorization.k8s.io/v1alpha1

rbac.authorization.k8s.io/v1beta1

5.创建角色绑定

bash

$ kubectl create -f install/kubernetes/istio-rbac-beta.yaml

clusterrole "istio-manager" created

clusterrole "istio-ca" created

clusterrole "istio-sidecar" created

clusterrolebinding "istio-manager-admin-role-binding" created

clusterrolebinding "istio-ca-role-binding" created

clusterrolebinding "istio-ingress-admin-role-binding" created

clusterrolebinding "istio-sidecar-role-binding" created

注意:官网的安装包中的该文件中存在RoleBinding错误,应该是集群级别的 clusterrolebinding ,而release里的代码只是普通的 rolebinding ,查看该Issue Istio manager cannot list of create k8s TPR when RBAC enabled #327

6.安装istio核心组件

用到的镜像有:

docker.io/istio/mixer:0.1.5

docker.io/istio/manager:0.1.5

docker.io/istio/proxy_debug:0.1.5

我们暂时不开启 Istio Auth

注意:本文中用到的所有yaml文件中的 type: LoadBalancer 去掉,使用默认的ClusterIP,然后配置Traefik ingress,就可以在集群外部访问。请参考安装Traefik ingress。

bash

kubectl apply -f install/kubernetes/istio.yaml

7.安装监控插件

用到的镜像有:

docker.io/istio/grafana:0.1.5

quay.io/coreos/prometheus:v1.1.1

gcr.io/istio-testing/servicegraph:latest

docker.io/openzipkin/zipkin:latest

为了方便下载,其中两个镜像我备份到了时速云:

index.tenxcloud.com/jimmy/prometheus:v1.1.1

index.tenxcloud.com/jimmy/servicegraph:latest

安装插件

bash

kubectl apply -f install/kubernetes/addons/prometheus.yaml

kubectl apply -f install/kubernetes/addons/grafana.yaml

kubectl apply -f install/kubernetes/addons/servicegraph.yaml

kubectl apply -f install/kubernetes/addons/zipkin.yaml

在traefik ingress中增加增加以上几个服务的配置,同时增加istio-ingress配置。

Yaml

    - host: grafana.istio.io

      http:

        paths:

        - path: /

          backend:

            serviceName: grafana

            servicePort: 3000

    - host: servicegraph.istio.io

      http:

        paths:

        - path: /

          backend:

            serviceName: servicegraph

            servicePort: 8088

    - host: prometheus.istio.io

      http:

        paths:

        - path: /

          backend:

            serviceName: prometheus

            servicePort: 9090

    - host: zipkin.istio.io

      http:

        paths:

        - path: /

          backend:

            serviceName: zipkin

            servicePort: 9411

    - host: ingress.istio.io

      http:

        paths:

        - path: /

          backend:

            serviceName: istio-ingress

            servicePort: 80

测试

我们使用Istio提供的测试应用 bookinfo 微服务来进行测试。

该微服务用到的镜像有:

istio/examples-bookinfo-details-v1

istio/examples-bookinfo-ratings-v1

istio/examples-bookinfo-reviews-v1

istio/examples-bookinfo-reviews-v2

istio/examples-bookinfo-reviews-v3

istio/examples-bookinfo-productpage-v1

该应用架构图如下:

Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

部署应用

kubectl create -f <(istioctl kube-inject -f samples/apps/bookinfo/bookinfo.yaml)

Istio kube-inject 命令会在 bookinfo.yaml 文件中增加Envoy sidecar信息。参考: https://istio.io/docs/referenc ... nject

在本机的 /etc/hosts 下增加VIP节点和 ingress.istio.io 的对应信息。具体步骤参考:边缘节点配置

在浏览器中访问 http://ingress.istio.io/productpage

监控

不断刷新productpage页面,将可以在以下几个监控中看到如下界面。

Grafana页面

http://grafana.istio.io

Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

Prometheus页面

http://prometheus.istio.io

Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

Zipkin页面

http://zipkin.istio.io

Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

ServiceGraph页面

http://servicegraph.istio.io/dotviz

可以用来查看服务间的依赖关系。

获得json格式的返回结果,访问 http://servicegraph.istio.io/graph

Google、IBM和Lyft开源的微服务管理框架Istio安装与试用

更进一步

BookInfo示例中有三个版本的 reviews ,可以使用istio来配置路由请求,将流量分摊到不同版本的应用上。参考 Configuring Request Routing

还有一些更高级的功能,我们后续将进一步探索。

参考


以上所述就是小编给大家介绍的《Google、IBM和Lyft开源的微服务管理框架Istio安装与试用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据库系统概念

数据库系统概念

(美)Abraham Silberschatz、(美)Henry F.Korth、(美)S.Sudarshan / 杨冬青、李红燕、唐世渭 / 机械工业出版社 / 2012-3 / 99.00元

【编辑推荐】 数据库领域的殿堂级作品 夯实数据库理论基础,增强数据库技术内功的必备之选 对深入理解数据库,深入研究数据库,深入操作数据库都具有极强的指导作用! 【内容简介】 本书是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它被国际上许多著名大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学......一起来看看 《数据库系统概念》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具