原文链接:Istio 1.0 部署

北京时间 2018 年 8 月 1 日(建军节)凌晨 0 点,Istio 宣布推出 1.0 正式版本,并表示已可用于生产环境。这距离最初的 0.1 版本发布已过去一年多的时间。这个项目的组件相对比较复杂,原有的一些选项是靠 ConfigMap 以及 istioctl 分别调整的,现在通过重新设计的 Helm Chart,安装选项用 values.yml 或者 helm 命令行的方式来进行集中管理了。

在安装 Istio 之前要确保 Kubernetes 集群(仅支持 v1.9 及以后版本)已部署并配置好本地的 kubectl 客户端。

1. 下载 Istio

$ wget https://github.com/istio/istio/releases/download/1.0.0/istio-1.0.0-linux.tar.gz
$ tar zxf istio-1.0.0-linux.tar.gz
$ cp istio-1.0.0/bin/istioctl /usr/local/bin/
复制代码

2. 使用 Helm 部署 Istio 服务

克隆 Istio 仓库:

$ git clone https://github.com/istio/istio.git
$ cd istio
复制代码

安装包内的 Helm 目录中包含了 Istio 的 Chart,官方提供了两种方法:

  • 用 Helm 生成 istio.yaml,然后自行安装。
  • Tiller 直接安装。

很明显,两种方法并没有什么本质区别,这里我们采用第一种方法来部署。

$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system --set sidecarInjectorWebhook.enabled=true --set ingress.service.type=NodePort --set gateways.istio-ingressgateway.type=NodePort --set gateways.istio-egressgateway.type=NodePort --set tracing.enabled=true --set servicegraph.enabled=true --set prometheus.enabled=true --set tracing.jaeger.enabled=true --set grafana.enabled=true > istio.yaml$ kubectl create namespace istio-system
$ kubectl create -f istio.yaml
复制代码

这里说的是使用 install/kubernetes/helm/istio 目录中的 Chart 进行渲染,生成的内容保存到 ./istio.yaml 文件之中。将 sidecarInjectorWebhook.enabled 设置为 true,从而使自动注入属性生效。

部署完成后,可以检查 isotio-system namespace 中的服务是否正常运行:

$ kubectl -n istio-system get pods -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'istio-citadel-f5779fbbb-brbxd
istio-cleanup-secrets-jjqg5
istio-egressgateway-6c5cc7dd86-l2c82
istio-galley-6bf8f6f4b7-twvzl
istio-ingressgateway-fbfdfc5c7-fg9xh
istio-pilot-85df58955d-g5bfh
istio-policy-74c48c8ccb-wd6h6
istio-sidecar-injector-cf5999cf8-h9smx
istio-statsd-prom-bridge-55965ff9c8-2hmzf
istio-telemetry-cb49594cc-gfd84
istio-tracing-77f9f94b98-9xvzs
prometheus-7456f56c96-xcdh4
servicegraph-5b8d7b4d5-lzhth
复制代码
  1. 过去的 istio-ca 现已更名 istio-citadel
  2. istio-cleanup-secrets 是一个 job,用于清理过去的 Istio 遗留下来的 CA 部署(包括 sa、deploy 以及 svc 三个对象)。
  3. egressgatewayingress 以及 ingressgateway,可以看出边缘部分的变动很大,以后会另行发文。

3. Prometheus、Grafana、Servicegraph 和 Jaeger

等所有 Pod 启动后,可以通过 NodePort、Ingress 或者 kubectl proxy 来访问这些服务。比如可以通过 Ingress 来访问服务。

首先为 Prometheus、Grafana、Servicegraph 和 Jaeger 服务创建 Ingress:

$ cat ingress.yaml---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: prometheus
  namespace: istio-system
spec:
  rules:
  - host: prometheus.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: prometheus
          servicePort: 9090
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: grafana
  namespace: istio-system
spec:
  rules:
  - host: grafana.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: grafana
          servicePort: 3000
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: servicegraph
  namespace: istio-system
spec:
  rules:
  - host: servicegraph.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: servicegraph
          servicePort: 8088
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tracing
  namespace: istio-system
spec:
  rules:
  - host: tracing.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: tracing
          servicePort: 80
复制代码
$ kubectl create -f ingress.yaml
复制代码

然后在你的本地电脑上添加四条 hosts

$Ingree_host prometheus.istio.io
$Ingree_host grafana.istio.io
$Ingree_host servicegraph.istio.io
$Ingree_host tracing.istio.io
复制代码

$Ingree_host 替换为 Ingress Controller 运行节点的 IP。

通过 http://grafana.istio.io 访问 Grafana 服务:

通过 http://servicegraph.istio.io 访问 ServiceGraph 服务,展示服务之间调用关系图。

  • http://servicegraph.istio.io/force/forcegraph.html : As explored above, this is an interactive D3.js visualization.
  • http://servicegraph.istio.io/dotviz : is a static Graphviz visualization.
  • http://servicegraph.istio.io/dotgraph : provides a DOT serialization.
  • http://servicegraph.istio.io/d3graph : provides a JSON serialization for D3 visualization.
  • http://servicegraph.istio.io/graph : provides a generic JSON serialization.

通过 http://tracing.istio.io/ 访问 Jaeger 跟踪页面:

通过 http://prometheus.istio.io/ 访问 Prometheus 页面:

如果你已经部署了 Prometheus-operator,可以不必部署 Grafana,直接将 addons/grafana/dashboards 目录下的 Dashboard 模板复制出来放到 Prometheus-operator 的 Grafana 上,然后添加 istio-system 命名空间中的 Prometheus 数据源就可以监控 Istio 了。

4. Mesh Expansion

Istio 还支持管理非 Kubernetes 管理的应用。此时,需要在应用所在的 VM 或者物理中部署 Istio,具体步骤请参考 Mesh Expansion

部署好后,就可以向 Istio 注册应用,如:

# istioctl register servicename machine-ip portname:port
$ istioctl -n onprem register mysql 1.2.3.4 3306
$ istioctl -n onprem register svc1 1.2.3.4 http:7000
复制代码

5. 参考

  • Istio 0.8 的 Helm Chart 解析

转载于:https://juejin.im/post/5bf831c66fb9a04a102eefc6

Istio 1.0 部署相关推荐

  1. 阿里巴巴硅谷 Istio 专家解读Istio 1.0 发布

    来源:阿里巴巴中间件 Istio 1.0 于北京时间8月1日0点正式发布!虽然比原本官网公布的发布时间晚了9个小时,但这并未影响到Istio在社区的热度. Istio 是 Service Mesh概念 ...

  2. Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法

    Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法 参考文章: (1)Win2008上.NET4.0部署出错HTTP 错误 5 ...

  3. 全网最新 Skywalking 6.1.0部署进k8s 包含springcloud测试用例

    skywalking-kubernetes 该项目可以迅速将skywalking 6.1.0部署进kubernetes(k8s) 包含ui oap es模块和完整的springcloud测试用例 此外 ...

  4. Debian 和Ubuntu Mono 3.0 部署包

    Mono 3.0 刚发布,Debian 的Mono打包工作也开始了, 这篇博客<Mono 3.0 Preview Packages for Debian and Ubuntu >讲述了De ...

  5. Win7 IIS7 ASP.NET MVC3.0 部署问题

    Win7 IIS7 ASP.NET MVC3.0 部署问题 1.应用程序池采用经典模式,framework4.0.可能存在权限问题,解决办法:在高级设置的标识设为LocalSystem. 一般mvc都 ...

  6. Zabbix 3.0 部署监控 [三]

    Zabbix 3.0 部署监控 [三] zabbix  时间:2016年9月22日  笔者QQ:381493251  Abcdocker交流群:454666672  如果遇到什么问题可以进群询问,我们 ...

  7. Ubuntu12.04 Jdk1.7 Tomct7.0部署配置

    Ubuntu12.04 Jdk1.7 Tomct7.0部署配置 jdk1.7 下载 http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7 ...

  8. Zabbix 3.0 部署监控 [二]

    原文出自  http://www.abcdocker.com/abcdocker/1453 Zabbix 3.0 部署监控 [二] zabbix 一.添加监控主机及设置 1.创建主机 Agent可以干 ...

  9. KubeEdge 1.3.0 部署

    本文介绍了如何在两台 ubuntu 16.04 64 bit 双核 CPU 虚拟机上从源码开始部署 KubeEdge 1.3.0 集群的过程,云端 Kubernetes 版本为 1.17.3,Gola ...

最新文章

  1. sqlserver清除日志
  2. form表单提交,Servlet接收并读取Excel文件
  3. MySQL服务启动脚本
  4. 【php7扩展开发三】ini配置
  5. lamba统计最大值,最小值,平均值,总和,个数
  6. PDF签名系列(1):PDF签名机制的漏洞分析
  7. JavaWeb应用配置文件安全解决方案
  8. UE4移动平台上基于物理的着色
  9. spark sql 查看分区_Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
  10. php删除英文链接词,英语写作词汇大全:转折连接词
  11. iphone双重认证关闭不了怎么办_iPhone如何关闭Apple ID的双重认证
  12. 数据结构:顺序表的就地逆置
  13. 招商银行信用卡中心大数据
  14. MySQL---建表添加语句
  15. 文本样式设置/盒子模型学习笔记
  16. 使用C#连接SQL server数据库
  17. 【漏洞报送】泛微E-Office存在SQL注入漏洞(CNVD-2022-43246)
  18. mtk手机root,mTk手机安卓系统开发
  19. YzmCMS采集之如何利于Python爬虫采集全网文章
  20. Win2008、Win2012和Win2016操作系统设置多用户同时远程。很方便

热门文章

  1. sql除外语句_SQL除外
  2. java8foreach_Java forEach – Java 8 forEach
  3. python 日期格式打印_Python打印格式
  4. 移除Win10资源管理器中OneDrive图标
  5. 开课吧Java课堂:是什么是比较函数?
  6. 开课吧课程:什么是TreeSet类
  7. Spark笔记整理(一):spark单机安装部署、分布式集群与HA安装部署+spark源码编译...
  8. 常用算法2 - 广度优先搜索 深度优先搜索 (python实现)
  9. RHEL/Centos7下使用EPEL和REMI源
  10. Google Guava之--cache