首页 > 文章列表 > K8s 中如何访问无外部 IP 的 LoadBalancer 服务?

K8s 中如何访问无外部 IP 的 LoadBalancer 服务?

242 2024-12-18

K8s 中如何访问无外部 IP 的 LoadBalancer 服务?

在 k8s 中访问无外部 ip 的 loadbalancer 服务

使用 loadbalancer 类型的 k8s 服务时,如果没有外部 ip,可以通过以下方法访问它的后端容器:

1. 创建 nodeport 类型的 service

创建 nodeport 服务,它会将一个端口映射到集群中每个节点的一个端口上。然后可以通过 <node_ip>:<node_port> 访问后端容器。

2. 配置 metallb 负载均衡器

metallb 是一个 k8s 附加组件,负责为无外部 ip 的 loadbalancer 服务分配 ip 地址。它提供了与 loadbalancer 相似的功能,但更易于管理。

无法解析外部域名

如果容器无法解析外部域名,可以检查 coredns 配置。coredns 是 k8s 中的 dns 服务器,如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        keywords {
            per-request
        }
    }

此配置将上游 dns 解析委托给节点的 dns 配置,从而允许 pod 解析外部域名(前提是 pod 可以访问外部网络)。

来源:1731453581