【问题标题】:Why the EXTERNAL-IP in LoadBalancer Service is always pending?为什么 LoadBalancer 服务中的 EXTERNAL-IP 总是挂起?
【发布时间】:2020-05-07 16:13:24
【问题描述】:

我有一个自定义的 Kubernetes 集群(minikube)并且已经耗尽了 Metallb。当我创建一个 LoadBalancer Service 时,状态仍然是pending。

Pods 在下面,

minikube ip 为192.168.99.103, metallb 配置文件如下,

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: my-ip-space
      protocol: layer2
      addresses:
      - 192.168.99.100/28

服务yaml在下面,

apiVersion: v1
kind: Service
metadata:
  name: hello-world-web-lb
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 82
    targetPort: 8416
  selector:
    app: java

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    Minikube 是一个单一的 VM 测试集群。您需要使用minikube service command 来公开服务。

    假设你的目标是尝试metallb -

    You need to provide address range as from-to syntax as follows for layer2.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: metallb-system
      name: config
    data:
      config: |
        address-pools:
        - name: default
          protocol: layer2
          addresses:
          - 192.168.1.240-192.168.1.250     ---> This line
    

    【讨论】:

    • 你的意思是,即使我安装了 metallb,LoadBanlancer 服务仍然无法在 minikube 中运行,对吧?本质上minikube service 是nodeport 方法。
    • 没有。只是让您知道,如果您的目标只是公开服务,那么在 minikube 中公开服务有一种不同的方法,而无需使用 metallb。来到 metallb,我没有在 minikube 中尝试过 metallb,但我记得 metallb 配置应该是我在答案中所说的那样。您是否尝试将 metallb 配置图中的 192.168.99.103/28 更改为 from-to 语法?
    • 我试过了,但是服务还在等待中。
    • 可能你需要在更改 configmap 后重新启动 metallb 组件。你检查过metallb控制器的日志吗?
    【解决方案2】:

    这是设计使然。

    在支持负载平衡器的云提供商上,外部 IP 地址 将被配置为访问服务。在 Minikube 上, LoadBalancer 类型使 Service 可以通过 minikube 访问 服务命令。

    https://kubernetes.io/docs/tutorials/hello-minikube/#create-a-service

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多