首页 > 解决方案 > 服务的 Kubernetes 默认负载均衡器在本地运行?

问题描述

目前我有 3 个虚拟机(1 个主 kubernetes 节点和 2 个从节点)。

我想创建一个服务来封装我的容器的 3 个副本。

我很好奇默认情况下,在这个本地环境中,在创建服务时,kubernetes 默认提供负载均衡器,即使它没有在服务 yaml 文件中指定。它是否默认提供循环?

标签: kubernetes

解决方案


如果您不在受支持的云提供商上,那么您几乎会坚持使用 NodePort 或 ClusterIP 来获取服务类型。我在尝试本地 kubernetes 环境时使用的一个项目是Metallb。Metallb 允许您在托管平台(即本地测试集群)之外运行 kubernetes 时使用 LoadBalancer 服务类型并将您的服务暴露在集群网络之外。

要使用 Metallb,您必须提供可在 pod 网络上使用的 IP 地址池。首先使用您的 pod 网络 IP 范围创建一个配置映射——

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

然后将该配置映射添加到您的集群。

kubectl apply -f metallb-config.yaml

最后将 metallb 控制器添加到您的集群中

kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.3/manifests/metallb.yaml

现在您应该可以公开您的服务了。

kubectl expose deployment name-of-deployment --type=LoadBalancer --name=name-of-service

推荐阅读