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

k8s 中如何访问无外部 ip 的 loadbalancer 服务?

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

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

1. 创建 nodeport 类型的 service

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

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 可以访问外部网络)。

以上就是K8s 中如何访问无外部 IP 的 LoadBalancer 服务?的详细内容,更多请关注硕下网其它相关文章!