前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >istio-4:使用istioctl方式部署istio-1.8.3全组件

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

作者头像
千里行走
发布2021-03-18 16:26:40
1.3K0
发布2021-03-18 16:26:40
举报
文章被收录于专栏:千里行走

目录:

(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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千里行走 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档