Istio,Kubernetes 的微服务支持

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

内容简介:Istio 是一个由 IBM、Google 以及 Lyft 联合推出的开源软件,以无痛方式为运行在 Kubernetes 上的微服务提供流量管理,访问策略管理以及监控等功能。这一软件目前仅在 Kubernetes 上运行,今后可能会扩展到其他平台。本文会结合官方例子,完成安装和基础的监控内容。总体架构如图所示。

Istio 是一个由 IBM、Google 以及 Lyft 联合推出的开源软件,以无痛方式为运行在 Kubernetes 上的微服务提供流量管理,访问策略管理以及监控等功能。这一软件目前仅在 Kubernetes 上运行,今后可能会扩展到其他平台。本文会结合官方例子,完成安装和基础的监控内容。

架构和组件

总体架构如图所示。

Istio,Kubernetes 的微服务支持

Envoy

一个 C++ 编写的高性能代理服务器,这里做了扩展,在 Istio 中会以 Sidecar 方式跟应用运行在同一 Pod 内,一方面可以接收并执行关于规则、流量拆分等方面的指令,另一方面能够产生各种指标用于监控和跟踪。

Mixer

Mixer 组件,主要进行访问控制以及策略控制,同时也负责从 Envoy 中获取各项指标。

Pilot

Pilot 是用户和 Isito 之间的桥梁,负责接收各种配置,并发送给各个组件。

Istio auth

内置认证和凭证管理,利用 TLS 提供服务之间、用户和服务之间的认证。 可以用来将没有加密支持的服务升级为加密版本,并且在网络策略之外,提供服务级别的策略控制,今后还会增加更多的鉴权和审计方面的能力。

功能 & 特性

  • 无需对现有服务进行变更
  • 支持 http 1.1/2、gRPC 以及 TCP 流量的负载均衡和故障转移
  • 可替换的组件
  • 流量监控
  • 可提供身份认证功能
  • 可定制的路由规则
  • 错误处理,例如超时、重试、访问量控制、健康检查和熔断器等。

安装

先决条件

  • Kubernetes
  • 互联网连接

准备工作

首先去https://github.com/istio/istio/releases下载最新版本(目前为 0.1.6),解压并设置 istioctl 命令的执行路径 。下面命令中描述的相对目录就是基于此目录

执行命令kubectl api-versions | grep rbac查看当前集群的 RBAC 设置:

  • 如果返回内容为空则无需理会。
  • 如果返回内容中包含beta,则需要运行kubectl apply -f install/kubernetes/istio-rbac-beta.yaml来进行授权
  • 如果返回内容中只有alpha ,就要kubectl apply -f install/kubernetes/istio-rbac-beta.yaml创建相应的角色和绑定了。

运行

最后,运行kubectl create -f install/kubernetes/istio.yaml创建一系列的 Deployment 以及 Services。

注1: 其实上面的内容照做并不一定能成功,反正我的 1.6.6 上面是没能成功,Pilot Pod 中的 API Server 容器会出错,错误信息大概是“system:serviceaccount:default:istio-pilot-service-account” cannot get thirdpartyresources.extensions at the cluster scope.”,也就证明了 beta.yaml 中的 RBAC 设置是不够的,这里我把几个 RoleBinding 都改成为 ClusterRoleBinding,运行就成功了。

注2:istio.yaml 中的 Ingress 服务是 Loadbalancer 类型的,如果测试集群不具备这样的条件,还请自行修改成其他合适内容。

至此,基础的 istio 组件就已经运行完毕了。

运行应用

安装包内包含了一个叫 bookinfo 的小应用,由 Product(入口页)、Detail 和 Review 三部分组成,具体应用 YAML 在安装目录的samples/apps/bookinfo/bookinfo-v1.yaml文件中。打开文件我们会发现这是个很简单的小应用,无非是几个 Deployment 和 Service 的组合。

该应用的微服务相互关系大致如下图所示,这个例子很好的展示了 istio 的一大特性——不拘泥于某种语言。

Istio,Kubernetes 的微服务支持

istio 提供了一个 工具 叫 istioctl,这个工具的功能之一,就是把普通的应用 YAML 注入为 istio 支持的应用模式,例如:istioctl kube-inject -f bookinfo-v1.yaml > bookinfo-istio-v1.yaml,比较新旧两个文件不难发现,这一工具为每个 Pod 新增了一个名为 proxy 的容器,以此接管流量,给监控和管理打下基础。

Istio,Kubernetes 的微服务支持

接下来我们运行这一应用: – kubectl create -f bookinfo-istio-v1.yaml:运行注入后的 应用 -kubectl create -f bookinfo-ingress.yaml:创建 Ingress 资源

监控

istio 内置了对 ServiceGraph、Prometheus 以及 Zipkin 的支持,简单的运行一下kubectl create -f install/kubernetes/addons,就会启用这几个服务。注意这几个服务使用的也都是 Loadbalancer 模式,读者应根据集群情况自行修改。

各个服务启动之后,可以使用负载工具例如 wrk 对 Productpage 页面进行一段时间的访问,来模拟工作情况。

Grafana

Grafana 启动后,我们可以使用服务暴露的地址进行访问,在其中可以看到如下图所示的 Dashboard,展示了我们应用中的几个服务的各种监控数据。

Istio,Kubernetes 的微服务支持

Service Graph

这一个服务提供了两个入口,一个是 /dotvz,以图形的方式供服务关系展示,而/graph则提供了 JSON 格式的文档供结构化使用。例如:

{
    "nodes": {
        "details": {},
        "productpage": {},
        "reviews": {},
        "unknown": {}
    },
    "edges": [
        {
            "source": "productpage",
            "target": "reviews",
            "labels": {
                "qps": "0.030416",
                "version": "v1"
            }
        },
        {
            "source": "unknown",
            "target": "productpage",
            "labels": {
                "qps": "0.030416",
                "version": "v1"
            }
        },
        {
            "source": "productpage",
            "target": "details",
            "labels": {
                "qps": "0.030416",
                "version": "v1"
            }
        }
    ]
}

Zipkin

Istio 提供了开箱即用的 Zipkin 跟踪支持,打开页面之后,我们会看到 Zipkin 的查找页面,并无特殊内容,就不展开细谈了。

Istio,Kubernetes 的微服务支持

文中介绍内容只是很粗浅的入门操作,后续会进一步跟进、挖掘和学习这一系统的其他强大功能。

来源: https://www.kubernetes.org.cn/2350.html


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

复杂网络理论及其应用

复杂网络理论及其应用

汪小帆、李翔、陈关荣 / 清华大学出版社 / 2006 / 45.00元

国内首部复杂网络专著 【图书目录】 第1章 引论 1.1 引言 1.2 复杂网络研究简史 1.3 基本概念 1.4 本书内容简介 参考文献 第2章 网络拓扑基本模型及其性质 2.1 引言 2.2 规则网络 2.3 随机图 2.4 小世界网络模型 2.5 无标度网络模型 ......一起来看看 《复杂网络理论及其应用》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具