我正在使用入口从库伯内特斯集群外部公开我的服务,因此我不需要库伯内特斯来配置负载均衡器。因此,我创建了一个ClusterIP服务:
apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: default
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: myapp
type: ClusterIP
这很有效-我有一个单独的入口和部署设置,我可以很好地访问该应用程序。
然而,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-
我假设它试图描述BeloadBalancers,因为它打算创建一个。这些文档声称,仅当您指定服务类型“LoadBalancer”时,才应创建LoadBalancer。我怎样才能阻止库伯内特斯去尝试呢?
它没有尝试创建一个。您正在接收来自service_controller.go:287的错误消息:
func (s *ServiceController) createLoadBalancerIfNeeded(key string, service *v1.Service) (error, bool) {
[...]
if !wantsLoadBalancer(service) {
_, exists, err := s.balancer.GetLoadBalancer(s.clusterName, service)
if err != nil {
return fmt.Errorf("Error getting LB for service %s: %v", key, err), retryable
}
[...]
反过来,GetLoadBalancer正在调用云提供程序进行描述(检查是否存在)。我建议您为这个特定操作授权aws服务号。
当我将服务与ClusterIP类型和2个POD一起使用时,流量分布在2个POD上。 我找到了另一种服务类型LoadBalancer。这两种服务的区别是什么?LoadBalancer与ClusterIP有何不同? 谢谢
试图自学如何使用库伯内特斯,但有一些问题。 我的下一步是尝试使用LoadBalancer类型的服务来访问nginx。 我建立了一个新的集群并部署了nginx映像。 然后,我为LoadBalancer设置服务 设置完成后,我尝试使用LoadBalancer入口(我在描述LoadBalancer服务时发现)访问nginx。我收到一个此页面无法工作的错误。 不太确定我哪里出错了。 kubectl获得sv
在Kubernetes中创建负载平衡器类型的服务时,它是创建一个全新的外部负载平衡器,还是只为负载平衡器类型的第一个服务创建一个负载平衡器,并将该负载平衡器重新用于负载平衡器类型的所有后续服务? 这个问题特别重要,因为为每个服务构建一个单独的负载平衡器对我来说成本太高。 如果它特定于云提供商,我使用Azure,但我很想知道其他云提供商是否不同。
Kubernetes如何知道其上运行的外部云提供商? 是否有任何特定的服务在Master中运行,以确定Kubernetes集群是否在AWS或Google云中运行? 即使它能够找出它是AWS或Google,它从哪里获取凭据来创建外部AWS/Google负载均衡器?我们是否必须在某个地方配置凭据,以便它从那里选择它并创建外部负载均衡器?
我使用的是Kubernetes服务,但我对服务中的外部IP的参数有点困惑: 如果有路由到一个或多个群集节点的外部IP,则可以在这些外部IP上公开Kubernetes服务。通过服务端口上的外部IP(作为目标IP)进入集群的流量将路由到其中一个服务endpoint。外部IP不由Kubernetes管理,由集群管理员负责。 我不确定负载均衡器类型服务和使用外部IP的服务之间的区别。 我可以使用负载平衡器
我发现k8s在生产中的一些用法,这些用法与公共云一起使用,将负载均衡器类型的服务放在Nginx入口之前。(您可以从下面的yaml中找到一个示例。) 如我所知,入口可用于向公众公开内部服务,那么在入口前面放置负载均衡器有什么意义呢?我可以删除该服务吗?