1

我正在通过“使用 kfctl_k8s_istio 的 Kubeflow 部署”在 kubernetes 集群上安装 kubeflow,它给出了以下错误。

WARN[0303] Encountered error applying application kubeflow-apps:  (kubeflow.error): Code 500 with message: Apply.Run : error when creating "/tmp/kout497340857": CustomResourceDefinition.apiextensions.k8s.io "seldondeployments.machinelearning.seldon.io" is invalid: [spec.validation.openAPIV3Schema.properties[spec].properties[predictors].items.properties[componentSpecs].items.properties[spec].properties[containers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property, spec.validation.openAPIV3Schema.properties[spec].properties[predictors].items.properties[componentSpecs].items.properties[spec].properties[initContainers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property, spec.validation.openAPIV3Schema.properties[spec].properties[predictors].items.properties[explainer].properties[containerSpec].properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property]  filename="kustomize/kustomize.go:266"

一些 Istio POD 没有启动并在 Kubernetes 仪表板上给出以下错误。

"MountVolume.SetUp failed for volume "istio-token" : failed to fetch token: the API server does not have TokenRequest endpoints enabled"

请支持。

4

1 回答 1

1

问题

为什么我们会看到这个错误?

"MountVolume.SetUp failed for volume "istio-token" : failed to fetch token: the API server does not have TokenRequest endpoints enabled"

正如这里提到的

为了向 Istio 控制平面进行身份验证,Istio 代理将使用服务帐户令牌。Kubernetes 支持这些令牌的两种形式:

  • 第三方令牌,具有范围受众和到期时间。
  • 第一方令牌,没有过期并安装到所有 pod 中。

由于第一方令牌的属性不太安全,Istio 将默认使用第三方令牌。但是,并非所有 Kubernetes 平台都启用此功能。

虽然现在大多数云提供商都支持此功能,但许多本地开发工具和自定义安装可能不支持。


解决方案

如果你使用 minikube

您可以指定values.global.jwtPolicy

istioctl manifest generate --set profile=demo --set values.global.jwtPolicy=first-party-jwt

有相关的github问题


如果你使用 microk8s

您可以尝试将这两行更改为/var/snap/microk8s/current/args/kube-apiserver,正如@tomalbrecht 在此处提到的那样。

--service-account-signing-key-file=${SNAP_DATA}/certs/serviceaccount.key
--service-account-issuer=kubernetes.default.svc

有相关的github问题


如果你使用 kubeadm

你可以试试这个

于 2020-11-09T10:12:15.490 回答