首页 > 解决方案 > Kubernetes 创建服务耗时过长

问题描述

我一直在尝试部署我的 Kubernetes 服务,但它说仍然挂起并保持挂起。我等了 1 天半,但仍在等待中。

Kubernetes 服务

静态站点服务.yaml

apiVersion: v1
kind: Service
metadata:
  name: static-site-service
  annotations:
    imageregistry: "https://hub.docker.com/"
  labels:
    app: static-site
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: static-site
  sessionAffinity: None

标签: kubernetes

解决方案


根据文档

需要注意的是,此功能的数据路径是由 Kubernetes 集群外部的负载均衡器提供的。

当服务类型设置为 LoadBalancer 时,Kubernetes 为集群内的 pod 提供与 type equals ClusterIP 等效的功能,并通过使用 Kubernetes pod 的条目对(Kubernetes 外部的)负载均衡器进行编程来扩展它。Kubernetes 服务控制器自动创建外部负载均衡器、健康检查(如果需要)、防火墙规则(如果需要),并检索云提供商分配的外部 IP 并将其填充到服务对象中。

换句话说,您的 kubernetes 集群需要知道如何设置负载均衡器,因为它是由集群运行的环境而不是 kubernetes 本身提供的功能。

例如,如果您在 AWS 上运行 kubernetes 并且您Controller Manager的设置正确,则每次创建Servicewith type时LoadBalancer都会为您创建一个新的 ELB。

所有其他受支持的云提供商(Azure、GCE、Digital Ocean 等)也是如此。

如果您在本地或不受支持的云提供商上运行,那么只要您不设置专用解决方案(例如仅命名随机解决方案),就没有任何东西可以LoadBalancer为您创建,并且该服务将永远存在。pendingMetalLB

我建议阅读这篇博文以了解更多详细信息。


推荐阅读