专栏首页千里行走istio-4:使用istioctl方式部署istio-1.8.3全组件

istio-4:使用istioctl方式部署istio-1.8.3全组件

目录:

(1).istio1.8.3部署准备工作

1.准备kubernetes集群

2.下载istio1.8.3版本

(2).安装istio

2.1.istio1.8.3最小安装

2.2.istio1.8.3全组件安装

2.2.1.安装基础组件

2.2.2.安装grafana/jaeger/kiali/prometheus组件

2.2.3.安装zipkin组件

2.2.4.安装prometheus-operator组件:使用prometheus-operator收集istio metrics

3.配置ingress

(4).其他注意事项

4.1.jaeger的变化

4.2.jaeger与zipkin

(5).卸载istio1.8.3

(6).参考文章

前置阅读:

1.kubernetes-1:使用kubeadm搭建K8S单master节点集群

相关阅读:

1.istio-1:部署与体验istio-1.4.2

2.istio-2:istio1.4.2-demo部署与体验,聊聊一些个人看法

3.istio-3:istio-1.4.2-demo链路体验之jaeger

(1).istio1.8.3部署准备工作

1.准备kubernetes集群

Istio 1.4 has been tested with Kubernetes releases 1.13, 1.14, 1.15.

请确保你的kubernetes集群的版本是1.13,1.14,1.15。

笔者提供一个1.13.3的kubernetes部署步骤:

kubernetes-1:使用kubeadm搭建K8S单master节点集群

2.下载istio1.8.3版本

进入istio的release页面选择最新版本:

https://github.com/istio/istio/releases

本文时间的最新版本是istio1.8.3,选择对应OS的版本,如Linux:

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

解压到目录:/app/3rd/istio-1.8.3

配置环境变量,/etc/profile增加:

export PATH=$PATH:/app/3rd/istio-1.8.3/bin

source /etc/profile

(2).安装istio

2.1.istio1.8.3最小安装

安装最基本的组件:

istioctl install

默认使用的配置文件是istio-1.8.3/manifests/profiles/default.yaml,只有最基本的两个组件:istio-ingressgateway和istiod。安装过程:

(老版本istio中使用的是apply,现在已经废弃,不存在此命令了,用install替代)

istio-ingressgateway:对内网关。

其image是:docker.io/istio/proxyv2:1.8.3。

登入pod后可以看到是使用的envoy。另一个容器pilot-agent是控制面板的agent端,负责收集各种数据然后供面板展示。

istiod:

简化控制平面,将先前由 Pilot,Galley,Citadel 和 sidecar 注入器执行的功能统一为一个二进制文件。

其image是:docker.io/istio/pilot:1.8.0-alpha.2,可以看到都合并到了pilot概念中。

登入pod后可以看到容器pilot-discovery,用于发现所有的pilot-agent(所有istio标准下的pod)并进行数据收集。

但是最小安装并不是我们想要的,需要自定义安装其他组件:

当前istio版本支持的组件位于:

https://github.com/istio/istio/blob/1.8.3/operator/pkg/util/merge_iop.go

对比istio1.7.4可以发现有很大不同:

2.2.istio1.8.3全组件安装

关于这些组件的实际体验,请参见笔者另外两篇文章:

istio-2:istio1.4.2-demo部署与体验,聊聊一些个人看法

istio-3:istio-1.4.2-demo链路体验之jaeger

2.2.1.安装基础组件

istioctl install --set profile=demo

可以看到比istioctl install多安装一个对外网关组件:istio-egressgateway。

remove的两个pod是之前用istioctl install命令安装的,需要remove掉。

2.2.2.安装grafana/jaeger/kiali/prometheus组件

之前版本通过命令行参数安装这些组件的方式已经被废弃,需要自行手动执行:

配置文件位于:istioctl-1.8.3/samples/addons

kubectl apply -f istioctl-1.8.3/samples/addons

查看组件:kubectl get pods -n istio-system

2.2.3.安装zipkin组件

之前版本通过命令行参数安装这些组件的方式已经被废弃,需要自行手动执行:

配置文件位于:istioctl-1.8.3/samples/addons/extras/zipkin.yaml

kubectl apply -f istioctl-1.8.3/samples/addons/extras/zipkin.yaml

2.2.4.安装prometheus-operator组件:使用prometheus-operator收集istio metrics

需要先部署prometheus-operator:

https://github.com/prometheus-operator/prometheus-operator/releases

wget https://github.com/prometheus-operator/prometheus-operator/archive/v0.46.0.tar.gz

解压后在根目录执行:

kubectl apply -f bundle.yaml

可以看到在default命名空间下出现了一个prometheus-operator的pod:

再执行istio的prometheus-operator的关联配置文件:这样让prometheus-operator可以感知到istio:

kubectl apply -f istio-1.8.3/samples/addons/prometheus.yaml

3.配置ingress

先部署ingress-nginx,笔者提供一个配置实例:

https://github.com/hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/ingress-nginx-min

直接执行sh deploy.sh:

我们需要配置如下所有组件的ingress,这样才可以在外部以浏览器的形式观察。

笔者提供一个isito-1.4.3全组件的ingress的部署配置文件:

https://github.com/hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/istio/istio-1.8.3

执行后查看:

配置安全组开放ingress端口:

可以看到,80绑定的是本地30834,443绑定的是本地30760,安全组需要开这两个端口。

本地配置host:

grafana-istio-demo.inc-inc.com

jaeger-istio-demo.inc-inc.com

kiali-istio-demo.inc-inc.com

prometheus-istio-demo.inc-inc.com

zipkin-istio-demo.inc-inc.com

grafana:

http://grafana-istio-demo.inc-inc.com:30834/d/3--MLVZZk/istio-control-plane-dashboard?search=open&folder=current&orgId=1&refresh=5s

jaeger:

http://jaeger-istio-demo.inc-inc.com:30834/jaeger/search

kiali:

http://kiali-istio-demo.inc-inc.com:30834/kiali/console/istio

prometheus:

http://prometheus-istio-demo.inc-inc.com:30834/graph?g0.range_input=1h&g0.expr=&g0.tab=1

zipkin:

http://zipkin-istio-demo.inc-inc.com:30834/zipkin/dependency

(4).其他注意事项

4.1.jaeger的变化

在老版本的istio中,jaeger-collector和jaeger-ui是在不同的pod,现在都放在一个pod里了。

详细参见另一篇文章:istio-3:istio-1.4.2-demo链路体验之jaeger

4.2.jaeger与zipkin

zipkin是广义上的tracing标准,jaeger同样支持zipkin api。

(5).卸载istio1.8.3

卸载会删除RBAC权限,istio-system命名空间及其下的所有资源。可以忽略不存在的资源的错误(因为它们可能已被分层删除)。

kubectl delete -f samples/addons

istioctl manifest generate --set profile=demo | kubectl delete --ignore-not-found=true -f -

默认情况下,不删除istio-system名称空间。如果不再需要,请使用以下命令将其删除:

kubectl delete namespace istio-system

默认情况下,Istio自动注入Envoy sidecar代理的标签不会被删除。如果不再需要,请使用以下命令将其删除。

kubectl label namespace default istio-injection-

如果存在Terminating状态的pod,使用强制删除pod方式,类似:

kubectl delete -n istio-system pod istiod-86f494f976-nvqjz --force --grace-period=0

注意也要清理下exit状态的docker容器,是有差异的:

查看下exit状态的容器,有两个与istio相关:

删除exit状态的docker容器:

docker rm `docker ps -a|grep Exited|awk '{print $1}'`

(6).参考文章

1.istio in kubernetes (二)

https://my.oschina.net/mikeowen/blog/4727940

2.Istio 学习笔记:Istio CNI 插件

https://www.servicemesher.com/blog/istio-cni-note/

3.Istio 庖丁解牛四:pilot discovery

https://www.servicemesher.com/blog/istio-analysis-4/

本文分享自微信公众号 - 千里行走(a_thousands_of_miles),作者:千里行走

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-03-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 云原生服务网格 Istio 1.4 部署指南

    Istio 一直处于快速迭代更新的过程中,它的部署方法也在不断更新,之前我在 1.0 版本中介绍的安装方法,对于最新的 1.4 版本已经不适用了。以后主流的部署...

    米开朗基杨
  • Istio 1.5部署,回归单体

    Istio 架构又换了,从 1.5 开始,把控制平面的所有组件组合并成一个单体结构叫 istiod,对于运维部署来说省去很大麻烦。Mixer 组件被移除,新版本...

    YP小站
  • 让我们来看看回到单体的 Istio 到底该怎么部署

    没错,Istio 架构又换了。。。北京时间 2020 年 3 月 6 日 凌晨发布了 1.5 版本,该版本最大的变化是将控制平面的所有组件组合成一个单体结构叫 ...

    米开朗基杨
  • Service Mesh - Istio安装与部署

    在当前版本Istio的安装与部署已经变得非常简单了,只需要几个简单的步骤就能将Istio环境搭建起来。首先要做的是下载Istio(在文档中核对Istio支持的k...

    端碗吹水
  • 部署 istio 1.8.2

    K8S 提供的是集群部署和运维能力,istio 提供流量管控,这是 K8S 和 istio 的区别。

    k8s入门教程
  • Istio入门二——手把手教你使用Istio

    既然我们已经对Istio的核心概念有了深入的了解,那就让我们来使用它吧。我们将部署包含在Istio发行版中的示例Bookinfo应用程序,稍后我们将使用一些Is...

    云原生
  • istio 1.8发布

    我们将继续按照2020年发布的路线图中概述的方向航行,提高可用性,安全性和可靠性,并专注于多集群网格和VM工作负载。我们已经在必要时引入了新功能来实现这些目标,...

    有点技术
  • 微服务治理 Istio 1.6部署和应用

    Service Mesh 的中文译为“服务网格”,是一个用于处理服务和服务之间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通信实现...

    没有故事的陈师傅
  • 云原生 - 体验Istio的完美入门之旅(一)

    随着微服务架构的流行,服务网格技术获得了业界的广泛关注,作为实现云原生的重要积木,各大厂商也纷纷开始布局,Amazon在2019年4月份推出了App Mesh;...

    justmine

扫码关注云+社区

领取腾讯云代金券