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

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

内容简介: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安装与试用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

Transcending CSS

Transcending CSS

Andy Clarke、Molly E. Holzschlag / New Riders / November 15, 2006 / $49.99

As the Web evolves to incorporate new standards and the latest browsers offer new possibilities for creative design, the art of creating Web sites is also changing. Few Web designers are experienced p......一起来看看 《Transcending CSS》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具