第九章 九析带你轻松完爆 service mesh - istio upgrade 升级

网友投稿 298 2022-10-29

第九章 九析带你轻松完爆 service mesh - istio upgrade 升级

系列文章:总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 升级前的准备

3 升级步骤

3.1 下载新版本的 istio

3.2 解压缩 istio

3.3 设置 istioctl 环境变量

3.4 设置 istio 自动补全功能

3.5 验证新版本 istio 是否兼容老版本

3.6 创建升级配置文件

3.7 升级 istio

3.7.1 资源等待错误

3.7.2 资源冲突错误

3.8 重设数据平面

1 前言

今天杭州阴天,哥的心情不怎么嗨!因为哥前期都在使用 1.4.5 版本,但是这周 istio 官方没经我允许就擅自升级到了 1.5 版本,打了我一个措手不及。但是互联网这十几年没少教育我,于是痛定思痛决定拥抱变化。

2 升级前的准备

就像你撸管前要先把纸准备好一样,在升级 istio 前,要先做一些前期准备工作。

1 检查 istio 版本是不是 1.4.4 或更高版本2 确定 istio 安装采用的是 istioctl 安装

使用如下命令查看当前 istio 安装版本:

istioctl version

由此可知,istio 当前的客户端、控制平面、数据平面的版本都是 1.4.5 版本。

3 升级步骤

3.1 下载新版本的 istio

执行如下命令下载最新版的 istio:

curl -L | sh -

也可以直接下载指定版本的 istio:

curl -L | ISTIO_VERSION=1.5.0 sh -

你能怎么办?你什么感觉?是不是就像大便找不到厕所?或者找到厕所却发现没坑?

实在下不到,你也不要悲愤,可以告诉哥,哥直接发给你,不用谢!

3.2 解压缩 istio

安装 istio 前,首先解压缩:

tar -zxvf istio-1.5.0-linux.tar.gz

关键目录、文件说明如下:

1 bin/istioctl # 客户端工具2 install # 底层支持平台的资源文件,istio 可支持 consul、gcp、k8s 平台3 samples # 学习样例

3.3 设置 istioctl 环境变量

所以首先需要通过如下命令进行删除:

export PATH=`echo $PATH | sed -e 's/:\/root\/istio\/istio-1.4.5\/bin//g'`

将新版本 istioctl 路径添加到系统环境路径中:

cd istio-1.5.0export PATH=$PATH:$PWD/binistioctl version

3.4 设置 istio 自动补全功能

将 istio 安装包 tools 目录下的 istioctl.bash 拷贝到用户根目录下:

cp istio-1.5.0/tools/istioctl.bash ~

编辑 ~/.bash_profile 文件,在文件末尾添加如下内容:

PATH=$PATH:$HOME/binPATH=$PATH:/root/istio/istio-1.5.0/binexport PATHsource /root/.istioctl.bash

添加完毕后,加载配置使之生效:

source ~/.bash_profile

3.5 验证新版本 istio 是否兼容老版本

执行如下命令查看新版本 istio 可兼容的版本范围:

istioctl manifest versions

明确新版本 istio 可升级,则继续往下操作。

3.6 创建升级配置文件

我以前安装 istio 采用的 profile 是 demo:

istioctl manifest apply --set profile=demo

也就是同样型号比如 G 级别车,一共有三个版本,每个版本就是一个 profile,每个 profile 的参数或者配置都有区别。

但是可惜地是,istio 安装时支持 set 参数,比如你可以使用如下命令安装:

istioctl manifest apply --set profile=demo

但是 istioctl upgrade 命令不支持 --set 选项,因此,如果前期在安装的时候使用了 --set 选项,那么在升级时需要创建一个等效的配置选项文件。

使用如下命令创建 profile 为 demo 的等效配置文件:

istioctl profile dump demo > demo.yaml

3.7 升级 istio

执行如下命令来升级 istio:

istioctl upgrade -f demo.yaml

如果升级过程很顺畅,就可以跳过此小节继续下面的内容;如果升级过程并不顺利,可以根据下面的介绍进行修改。

3.7.1 资源等待错误

error installer Failed to wait for resource: resources not ready after 10m0s: timed out waiting for the conditionDeployment/istio-system/istiod

可以指定 aliyun 作为镜像源:

touch /etc/docker/daemon.jsonvim /etc/docker/daemon.json

添加如下内容:

{"registry-mirrors": ["daemon-reloadsystemctl restart docker

3.7.2 资源冲突错误

如果在安装过程中出现如下错误:

Error: failed to read the current Istio version, error: different versions of Istio components found

多半是因为镜像版本冲突,可以执行如下命令查看:

istioctl version

改正办法是删除错误版本的 deployment 后再升级(istioctl upgrade):

kubectl delete deployments.apps -n istio-system istio-egressgateway

3.8 重设数据平面

从上面的截图中,其实可以发现一个端倪,就是 data plane version 有一个 proxy 仍是 1.4.5。产生这样的原因是我在升级 istio 版本前就已经手工注入了一个 deployment,现在需要重置原有数据平面。执行如下命令重置原有被注入的 nginx deployment:

istioctl kube-inject -f nginx-deploy.yaml | kubectl apply -f -

自此,九析带你轻松完爆 istio 的升级。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈通讯接口技术
下一篇:巨头公司如何切换“第二曲线”从超级APP到超级API
相关文章

 发表评论

暂时没有评论,来抢沙发吧~