使用Halyard部署的Spinnaker 1.26.6创建服务器组时无Kubernetes账户选项的问题咨询
解决Spinnaker创建服务器组时看不到Kubernetes V2账户的问题
我之前在维护Spinnaker集群时碰到过一模一样的问题,结合1.26.6版本的特性,给你梳理几个实用的排查和解决步骤:
验证Kubernetes账户的加载状态
首先确认账户是否被Spinnaker正确识别:- 执行
hal config kubernetes account list命令,检查所有添加的账户都在列表中,且状态为enabled - 查看Clouddriver的日志排查初始化错误:执行
kubectl logs -n spinnaker -l app=clouddriver,搜索与目标K8s账户相关的日志,重点看是否有证书失效、kubeconfig配置错误或者集群连接超时的报错(哪怕服务账户权限全,也可能出现这类连接问题)
- 执行
确认账户的Provider版本为V2
只有配置为V2版本的K8s账户才会出现在V2服务器组的创建界面中:- 查看目标账户的版本配置:
hal config kubernetes account get <你的账户名>,检查输出中的providerVersion字段是否为v2 - 如果是
v1,执行更新命令:hal config kubernetes account edit <你的账户名> --provider-version v2,然后重新部署Spinnaker:hal deploy apply
- 查看目标账户的版本配置:
检查Spinnaker内部RBAC权限
即使K8s服务账户权限足够,Spinnaker自身的RBAC可能限制了当前用户访问这些账户:- 查看账户的权限配置:
hal config kubernetes account get <你的账户名>,检查是否设置了requiredGroupMembership字段,如果有,确保当前登录Spinnaker的用户属于对应的用户组 - 如果是默认的无RBAC配置,跳过这一步;如果自定义了RBAC,需要确保当前用户的角色包含对目标K8s账户的访问权限
- 查看账户的权限配置:
强制刷新Clouddriver缓存
Clouddriver的缓存可能未及时更新,导致UI无法获取最新账户列表:- 重启Clouddriver Pod:
kubectl rollout restart deployment clouddriver -n spinnaker - 或者手动调用缓存清理API:先执行端口转发
kubectl port-forward -n spinnaker service/clouddriver 7002:7002,再执行curl -X POST http://localhost:7002/cache/clear
- 重启Clouddriver Pod:
排查UI(Deck)的加载错误
偶尔Deck会因为前端加载问题无法渲染账户列表:- 查看Deck的Pod日志:
kubectl logs -n spinnaker -l app=deck,搜索是否有加载账户列表时的JS报错 - 也可以尝试清空浏览器缓存后重新打开Spinnaker UI
- 查看Deck的Pod日志:
一般来说,前两个步骤就能解决大部分问题,尤其是Provider版本配置错误的情况。如果还是不行,再逐步排查后面的步骤。
内容的提问来源于stack exchange,提问作者Shivam Narula
相关产品推荐
相关产品推荐

