舰队或集群关联权限异常怎么办?
问题描述
在舰队或未加入舰队的集群关联权限过程中,可能会因为集群接入异常而导致权限关联异常。当这种情况发生时,舰队或集群的“关联权限”页面会显示详细的权限关联异常事件。请先排查并修复集群中出现的异常,然后单击“重试”按钮重新关联权限策略。
排查思路
舰队或集群关联权限时出现异常事件的排查思路大致可根据报错信息进行定位,如表1所示。
报错信息 |
说明 |
推荐排查项 |
---|---|---|
ClusterRole failed reason:Get \"https://kubernetes.default.svc.cluster.local/apis/rbac.authorization.k8s.io/v1/clusterroles/XXXXXXX?timeout=30s\": Precondition Required" Or Get ClusterRole failed reason:an error on the server (\"unknown\") has prevented the request from succeeding (get clusterroles.rbac.authorization.k8s.io |
出现该错误的原因大概率为集群还未接入,接入集群中的proxy-agent运行状态异常,或者网络异常。 |
|
Unauthorized |
出现该错误的原因可能是多样的,请根据实际状态码进行排查。 例如状态码401表示用户没有访问权限,可能的原因是集群认证信息过期。 |
|
Get cluster namesapce[x] failed. Or Reason:namespace "x" not found. |
出现该错误的原因是集群内没有对应的命名空间。 |
在集群下创建对应的命名空间并进行重试操作。 如:kubectl create namespace ns_name 如果不需要使用该命名空间,该异常事件可以忽略。 |
排查项一:proxy-agent的运行状态
集群从UCS注销后,原有proxy-agent配置文件中包含的认证信息将会失效,请同时删除集群中已部署的proxy-agent实例。如需再次接入UCS,必须重新从UCS控制台下载proxy-agent配置文件进行部署。
- 登录目标集群Master节点。
- 查看集群代理部署状态。
kubectl -n kube-system get pod | grep proxy-agent
如果部署成功,预期输出如下:
proxy-agent-*** 1/1 Running 0 9s
说明proxy-agent部署正常,如proxy-agent没有处于正常Running状态,可以使用kubectl -n kube-system describe pod proxy-agent-***查看Pod的告警信息,详细排查思路可参考proxy-agent部署失败怎么办?。
proxy-agent默认部署两个Pod实例,存在一个Pod正常Running即可使用基本功能,但是高可用性无法保证。
- 打印proxy-agent的Pod日志,查看代理程序是否可以连接到UCS。
kubectl -n kube-system logs proxy-agent-*** | grep "Start serving"
如没有“Start serving”的日志打印但是proxy-agent实例状态正常,则需要继续检查其他排查项。
排查项二:集群与UCS网络连接状态
公网接入:
- 检查集群是否绑定公网IP或配置公网NAT网关。
- 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系技术支持获取目的地址和端口号。
- 解决网络问题后,删掉已有的proxy-agent Pod使其重新生成Pod资源,查看新建Pod的日志中是否存在“Start serving”的日志打印。
kubectl -n kube-system logs proxy-agent-*** | grep "Start serving"
- 日志正常打印后,刷新UCS控制台页面,查看集群是否正常连接。
私网接入:
- 检查集群安全组的出方向是否放通。如需对出方向做访问控制,请联系技术支持获取目的地址和端口号。
- 排除集群与UCS和IDC之间的网络连接故障。
- 排除集群私网接入的VPCEP故障,VPCEP状态需为“已接受”。如VPCEP被误删除,则需重新创建,请参见私网接入的集群误删除VPCEP后如何恢复?。
图1 VPCEP状态
- 解决网络问题后,删掉已有的proxy-agent Pod使其重新生成Pod资源,查看新建Pod的日志中是否存在“Start serving”的日志打印。
kubectl -n kube-system logs proxy-agent-*** | grep "Start serving"
- 日志正常打印后,刷新UCS控制台页面,查看集群是否正常连接。
排查项三:集群认证信息变化
如错误显示“cluster responded with non-successful status: [401][Unauthorized]”,通过观察集群三个Master节点“/var/paas/sys/log/kubernetes/auth-server.log”日志,可能是IAM网络连通故障。请确认IAM域名解析能力,及IAM服务连通性正常。
常见问题日志如下:
- Failed to authenticate token: *******: dial tcp: lookup iam.myhuaweicloud.com on *.*.*.*:53: no such host
此类日志说明,节点缺少对iam.myhuaweicloud.com解析能力,请参考安装前准备,配置对应的域名解析。
- Failed to authenticate token: Get *******: dial tcp *.*.*.*:443: i/o timeout
- currently only supports Agency token
- IAM assumed user has no authorization/iam assumed user should allowed by TEAdmin
- Failed to authenticate token: token expired, please acquire a new token
此类日志说明Token存在过期现象,请使用date命令确定时间是否差距过大,如果节点时间与标准时间差距过大,请同步时间后,查看集群是否恢复。如果长时间未恢复,可能需要重装集群,请联系华为技术人员进行排障。
解决上述问题后,请使用crictl ps | grep auth | awk '{print $1}' | xargs crictl stop命令重启auth-server容器。