安装 Kf 时失败
Istio 的 IP 未准备就绪
如果 Istio 获取外部 IP 的用时太长,就会发生这种情况。等待几分钟,然后重新运行 Cloud Build 提交步骤。不过,也可能是发生了其他问题。
服务器错误(请求有误):字符无效
如果您在设置配置默认值时看到此错误,可能是因为命令中使用的 ${DOMAIN}
环境变量的值包含转义的“$”。请使用英文单引号定义具有空间名称或其他替代内容的网域:
Error from server (BadRequest): invalid character '$' in string escape code
Kf Kubernetes 对象错误
请按照以下说明对 Kf Kubernetes 对象进行问题排查。
通过列出所有 Kf 资源,找到要进行问题排查的 Kubernetes 资源类型的名称:
kubectl api-resources --api-group=kf.dev
输出示例:
NAME SHORTNAMES APIGROUP NAMESPACED KIND apps kf.dev true App builds kf.dev true Build clusterservicebrokers kf.dev false ClusterServiceBroker routes kf.dev true Route servicebrokers kf.dev true ServiceBroker serviceinstancebindings kf.dev true ServiceInstanceBinding serviceinstances kf.dev true ServiceInstance spaces kf.dev false Space
使用
kubectl
获取要进行问题排查的资源实例。如果对象不在命名空间中,请省略-n
标志:kubectl get api-resource-name.kf.dev object-name -n space-name -o yaml
例如:
kubectl get apps.kf.dev my-app -n my-space -o yaml
从以下标签页中选择您的问题:
对象未协调
- 检查
metadata.generation
的值。每次更新对象时,此数字都会递增。如果此数字非常大,可能是两个 Kubernetes 控制器在控制该对象。检查您的集群,以了解是否有任何政策应用于正在从所需状态进行更改的对象。 - 检查对象所属的命名空间是否会被删除。如果会,对象可能不会进行协调。
- 检查
status.observedGeneration
字段是否存在。如果不存在,控制器可能尚未对该对象执行。使用kf doctor
验证集群和控制器的运行状况是否良好。 - 检查
metadata.generation
字段是否与status.observedGeneration
字段匹配。如果不匹配,请使用kf doctor
验证集群和控制器是否运行状况良好。 - 根据以下常见错误列表,检查
status.conditions
列表中是否存在错误:
NotOwned
:集群或命名空间中存在与此对象尝试创建的资源同名的另一个资源。阅读消息以查找重复的名称,并重命名冲突的资源或 Kf 对象。TemplateError
:Kf 资源规范或 Kf 配置中存在错误配置,导致子资源未正确协调。验证 Kf 对象的设置和 Kf 空间设置。CacheOutdated
:Kf 控制器接收来自 Kubernetes 的更新的速度不够快。检查 Kubernetes 集群的运行状况。ReconciliationError
:Kf 控制器无法创建必要的子资源。检查以确保您的集群正常运行,Kf 正在运行,且未强制执行任何会阻止 Kf 创建消息中引用的对象的政策。
对象未删除
- 检查是否已设置对象的
metadata.deletionTimestamp
。如果未设置,则请求的删除操作不起作用。 - 检查对象的
metadata.deletionTimestamp
是过去的时间。如果它是将来的时间,则不能删除该对象。 - 检查对象中是否存在
metadata.finalizers
列表。如果存在终结器,则必须等待对象被移除,然后才能将其删除。如果要强制删除而不等待终结器,请修改该对象以将其移除。 - 可能存在阻止删除对象的子对象。请让管理员检查命名空间和集群中的所有对象,以确定是否需要先手动删除其中一个对象。
- 检查