我正在使用Ingress从Kubernetes集群外部公开我的服务,因此我不需要Kubernetes来配置负载均衡器 . 因此,我创建了一个ClusterIP服务:
apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: default
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: myapp
type: ClusterIP
这工作 - 我有一个单独的Ingress和部署设置,我可以很好地访问该应用程序 .
但是,Kubernetes坚持尝试创建一个负载均衡器 . 由于我的AWS账户中没有权限,因此我创建的每项服务都会记录如下错误:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
22s 22s 1 service-controller Warning CreatingLoadBalancerFailed Error creating load balancer (will retry): Error getting LB for service default/myapp: AccessDenied: User: -redacted- is not authorized to perform: elasticloadbalancing:DescribeLoadBalancers with an explicit deny
status code: 403, request id: -redacted-
我假设它正在尝试DescribeLoadBalancers,因为它打算创建一个 . 文档声称只应在you specify service type "LoadBalancer"时创建负载均衡器 . 我怎么能阻止Kubernetes尝试呢?
1 回答
它不是试图创造一个 . 您收到来自service_controller.go:287的错误消息:
反过来
GetLoadBalancer
正在调用cloudprovider来描述(检查是否存在) . 我建议您为此特定操作授权aws服务帐户 .