Istio 1.1.3 和 Kubernetes 1.13.5 安装错误

Installation error with Istio 1.1.3 and Kubernetes 1.13.5

我正在尝试在部署在 minikube 1.0.0 上的 Kubernetes 1.13.5 上安装 Istio 1.13.1,但最后我遇到了一些错误。这是安装日志:

    $ minikube start --memory=4096 --disk-size=30g --kubernetes-version=v1.13.5 --profile=istio
      minikube v1.0.0 on darwin (amd64)
      Downloading Kubernetes v1.13.5 images in the background ...
      Creating virtualbox VM (CPUs=2, Memory=4096MB, Disk=30000MB) ...
    2019/04/19 19:51:56 No matching credentials were found, falling back on anonymous
    2019/04/19 19:51:56 No matching credentials were found, falling back on anonymous
    2019/04/19 19:51:56 No matching credentials were found, falling back on anonymous
    2019/04/19 19:51:56 No matching credentials were found, falling back on anonymous
      "istio" IP address is 192.168.99.104
      Configuring Docker as the container runtime ...
      Version of container runtime is 18.06.2-ce
    ⌛  Waiting for image downloads to complete ...
    ✨  Preparing Kubernetes environment ...
      Downloading kubeadm v1.13.5
      Downloading kubelet v1.13.5
      Pulling images required by Kubernetes v1.13.5 ...
      Launching Kubernetes v1.13.5 using kubeadm ...
    ⌛  Waiting for pods: apiserver proxy etcd scheduler controller dns
      Configuring cluster permissions ...
      Verifying component health .....
      kubectl is now configured to use "istio"
      Done! Thank you for using minikube!

    $ ./bin/istioctl version
    version.BuildInfo{Version:"1.1.3", GitRevision:"d19179769183541c5db473ae8d062ca899abb3be", User:"root", Host:"fbd493e1-5d72-11e9-b00d-0a580a2c0205", GolangVersion:"go1.10.4", DockerHub:"docker.io/istio", BuildStatus:"Clean", GitTag:"1.1.2-56-gd191797"}
    $ kubectl create -f install/kubernetes/istio-demo.yaml
    namespace/istio-system created
    customresourcedefinition.apiextensions.k8s.io/virtualservices.networking.istio.io created
    customresourcedefinition.apiextensions.k8s.io/destinationrules.networking.istio.io created
    customresourcedefinition.apiextensions.k8s.io/serviceentries.networking.istio.io created
    customresourcedefinition.apiextensions.k8s.io/gateways.networking.istio.io created
    customresourcedefinition.apiextensions.k8s.io/envoyfilters.networking.istio.io created
    customresourcedefinition.apiextensions.k8s.io/clusterrbacconfigs.rbac.istio.io created
    customresourcedefinition.apiextensions.k8s.io/policies.authentication.istio.io created
    customresourcedefinition.apiextensions.k8s.io/meshpolicies.authentication.istio.io created
    customresourcedefinition.apiextensions.k8s.io/httpapispecbindings.config.istio.io created
    customresourcedefinition.apiextensions.k8s.io/httpapispecs.config.istio.io created
    customresourcedefinition.apiextensions.k8s.io/quotaspecbindings.config.istio.io created
    customresourcedefinition.apiextensions.k8s.io/quotaspecs.config.istio.io created
    customresourcedefinition.apiextensions.k8s.io/rules.config.istio.io created
    customresourcedefinition.apiextensions.k8s.io/attributemanifests.config.istio.io created
    ...
    unable to recognize "install/kubernetes/istio-demo.yaml": no matches for kind "attributemanifest" in version "config.istio.io/v1alpha2"
    unable to recognize "install/kubernetes/istio-demo.yaml": no matches for kind "attributemanifest" in version 

这看起来很奇怪,因为 CRD 似乎已成功创建,但是当它们被引用以创建一些类型为这些 CRD 之一的对象时,它就会失败。 我省略了其他错误,但 "handler"、"logentry"、"rule"、"metric"、"kubernetes"、"DestinationRule" 也会发生这种情况 .

在文档页面 https://istio.io/docs/setup/kubernetes/ 上,声明 Istio 1.1 已经在这些 Kubernetes 版本上进行了测试:1.11、1.12、1.13。

有人有想法吗?

docs中有一个执行CRDs init的步骤。我在您的代码段中没有看到这一点,似乎这就是您所缺少的。

所以:

$ for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done

您丢失的 CRD 似乎在这个确切的文件中定义:https://github.com/istio/istio/blob/master/install/kubernetes/helm/istio-init/files/crd-10.yaml 但您应该安装所有这些文件。

我的错,我好像跳过了第一步:

Install all the Istio Custom Resource Definitions (CRDs) using kubectl apply, and wait a few seconds for the CRDs to be committed in the Kubernetes API-server:

  $ for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done