您可通过本文了解Istio的常见问题及解决方法。

集群内无法访问集群外的URL

问题现象:

集群内无法访问集群外的URL。

问题原因:

缺省情况下,Istio服务网格内的Pod,由于其iptables将所有外发流量都透明的转发给了Sidecar,所以这些集群内的服务无法访问集群之外的URL,而只能处理集群内部的目标。

解决方法:

  • 通过定义ServiceEntry来调用外部服务。
  • 配置Istio使其直接放行对特定IP地址范围的访问。

详细内容,可参见Control Egress Traffic

Tiller版本较低

问题现象:

安装过程中遇到如下提示。
Can't install release with errors: rpc error: code = Unknown desc = Chart incompatible with Tiller v2.7.0

问题原因:

Tiller版本较低,需要升级。

解决方法:

执行以下任意一条命令,升级Tiller版本。
说明 此处请升级到v2.10.0及以上版本。
升级到v2.11.0版本:
helm init --tiller-image registry.cn-hangzhou.aliyuncs.com/acs/tiller:v2.11.0 --upgrade
升级到v2.10.0版本:
helm init --tiller-image registry.cn-hangzhou.aliyuncs.com/acs/tiller:v2.10.0 --upgrade
说明 Tiller版本升级后,建议将客户端也升级到相应版本,客户端下载地址,请参见helm

CRD(Custom Resource Definitions)版本问题

问题现象:

在第一次创建或升级Istio 1.0时遇到如下提示。
Can't install release with errors: rpc error: code = Unknown desc = apiVersion "networking.istio.io/v1alpha3" in ack-istio/charts/pilot/templates/gateway.yaml is not available

问题原因:

CRD不存在或版本较低,需要安装最新版本的CRD。
说明 仅Helm版本为2.10.0及之前版本,会遇到此问题。2.10.0之后的版本,系统自动升级CRD。

解决方法:

  1. 下载新版本的Istio,可参见Downloading the Release
  2. 执行以下命令,安装最新版本的CRD。
    kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml -n istio-system
  3. 如果启用了certmanager,需要执行以下命令安装相关的CRD。
    kubectl apply -f install/kubernetes/helm/istio/charts/certmanager/templates/crds.yaml

子账号无法安装Istio

问题现象:

安装过程中遇到类似如下提示。
Error from server (Forbidden): error when retrieving current configuration of:
Resource: "apiextensions.k8s.io/v1beta1, Resource=customresourcedefinitions", GroupVersionKind: "apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition"

问题原因:

当前使用账号不具有安装Istio的权限。

解决方法:

  • 切换为主账号登录。
  • 对子账号赋予相应的权限,例如自定义角色中的cluster-admin,可参见配置子账号RBAC权限

卸载Istio后CRD残留

问题现象:

卸载Istio后,CRD残留。

问题原因:

卸载Istio,系统不会删除CRD,需要执行命令删除。

解决方法:

  1. Helm为2.9.0及之前版本,需要执行以下命令,删除Job资源。
    kubectl -n istio-system delete job --all
  2. 执行以下命令,删除CRD。
    kubectl delete crd `kubectl get crd | grep -E 'istio.io|certmanager.k8s.io' | awk '{print $1}'`

删除后custom resource对象残留

问题现象:

卸载Istio后,custom resource对象残留。

问题原因:

卸载Istio,用户先删除了crd,但没有删除custom resource对象,需要执行命令删除。

解决方法:

  1. 执行kubectl edit istio -n istio-system istio-config命令。删除对象1
  2. 删除finalizers下的- istio-operator.finializer.alibabacloud.com删除对象2