k8s做注册中心和负载均衡的时候无法拉取服务列表的问题
记录一个bug:目前很多服务使用k8s作为注册中心和负载均衡中间件。但是在项目使用中,会出现一个问题。服务运行一段时间之后,会出现无法获取k8s上服务列表的bug,返回403
·
记录一个bug:目前很多服务使用k8s作为注册中心和负载均衡中间件。但是在项目使用中,会出现一个问题。服务运行一段时间之后,会出现无法获取k8s上服务列表的bug,返回403
现象:
如下:
{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"endpoints \"ifaas-xxxxxx\" is forbidden: User \"system:anonymous\" cannot get resource \"endpoints\" in API group \"\" in the namespace \"xxxxxx\"","reason":"Forbidden","details":{"name":"ifaas-xxxxxx","kind":"endpoints"},"code":403}
解决方案:
1、更改k8s的api鉴权,允许匿名访问: --anonymous-auth=true
2、更换注册中心(没有尝试过这种方案,但是根据理论知识应该可行)
3、在feign调用中采用固定url的写法(这也是目前我采用的方案);如下所示:
// 从k8s获取服务,报403的错误,暂时先采用 url = "http://xxxx:8010" 来绕过k8s鉴权失败问题
@FeignClient(value = "xxxx",url = "http://xxxx:8010",fallback = AppClient Call.class)
public interface AppClient {
}
其中xxxx是服务名称,这样可以做到服务拓展,因为服务部署的时候,k8s已经可以做好域名和服务ip的映射
更多推荐
已为社区贡献1条内容
所有评论(0)