istio 问题:failed to list *v1alpha3.DestinationRule

问题原因:

在k8s集群里面最早安装了一个版本的istio,后来因为安装文件被删除,就是istio的那个下载的包,因为该包里面包含很多测试的文件和命令工具,由于删除后,后面使用者又用了一个新的istio下载包,导致k8s集群里面安装了一些乱七八糟的版本,istio升级也并没有清除之前安装的一些api-resources

问题出现

后面确定还是重新安装1.11.1版本的istio

  1. 下载1.11.1版本的包:https://storage.googleapis.com/istio-release/releases/1.11.1/istio-1.11.1-linux-amd64.tar.gz
  2. 解压:tar -xzvf istio-1.11.1-linux-amd64.tar.gz
  3. 进入工作目录:cd istio-1.11.1
  4. 执行安装命令:istioctl install --set profile=demo -y
  5. 等一会

当过了一段时间后,执行kubectl get po -n istio-system发现pod没有启动,
使用kubectl describe命令发现是curl他自己的pod的***.***.**.**:8080/ready 健康检查不通过
使用kubectl log 日志发现: failed to list *v1alpha3.DestinationRule 。。。。
而打印这一行日志的是k8s.io打印的,那应该就是检查api-resource的时候出现了某个资源已经没了,但是遍历的时候名字还在,资源没了。
接下来就是确定是不是这个问题:

问题确认

  1. 查询api-versions
[root@ip istio-1.11.1]# kubectl api-versions
networking.istio.io/v1alpha3
networking.istio.io/v1beta1
  1. 确认networking.istio.io/v1alpha3是脏数据 因为list他失败
  2. 然后就是删除该networking.istio.io/v1alpha3对应的api-resources
  3. 查询api-resources:
[root@ip istio-1.11.1]# kubectl api-resources
destinationrules                  dr                 networking.istio.io/v1alpha3            true      DestinationRule
gateways                          gw                 networking.istio.io/v1alpha3           true       Gateway
serviceentries                    se                 networking.istio.io/v1alpha3           true      ServiceEntry
virtualservices                   vs                 networking.istio.io/v1alpha3           true        
  1. 然后就是删除上面的这些拥有networking.istio.io/v1alpha3的api-resources
  2. 删除过程,这里只演示删除destinationrules
# 1. 首先要通过api-resources的名字,过滤得到该crd的全名,否则删不掉的
[root@ip istio-1.11.1]# kubectl get crd | grep destinationrules 
destinationrules.networking.istio.io                 2022-11-29T11:06:13Z
# 2. 删掉该资源
[root@ip istio-1.11.1]# kubectl delete crd destinationrules.networking.istio.io
destinationrules.networking.istio.io  "destinationrules.networking.istio.io " deleted

  1. 经过上面的循环操作,将所有的networking.istio.io/v1alpha3关联的crd都删掉后,这样再重新安装istio的时候pod istiod就可以起来了。

ps: 这里有一个需要注意的地方,当测试好istio的时候,如果不需要的时候,可以删掉istio的关联所有资源,但是,注意istio-1.11是没有uninstll的命令的,我们可以去istio的release发布版本中找一个高版本的,比如1.15版本,下载一个包,解压后使用uninstall方法,这样就可以将当前所有的资源都卸载掉,不产生脏东西,最后再删掉name-space

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值