Kubectl服务作为类型“ clusterip”如何从外部访问

问题描述 投票:0回答:1

我有一个类型为'ClusterIp'的api服务,它可以正常工作,并且可以在具有clusterip的节点上访问。我想从外部访问它。这是kubeadm的裸机安装。我无法使用Loadbalancer或Nodeport。

如果我也使用nginx-ingress,我也将用作'ClusterIP',因此,如何在api服务或nginx-ingress情况下从外部访问该服务。

NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
api                    ClusterIP   10.97.48.17      <none>        80/TCP           41s
ingress-nginx          ClusterIP   10.107.76.178    <none>        80/TCP           3h49m
kubernetes kubeadm bare-metal
1个回答
0
投票

对于裸机集群,您可以使用以下任何一种方法在外部提供服务。建议从最不推荐的顺序到最不推荐的顺序:

  1. 使用metallb来实现LoadBalancer服务类型支持-https://metallb.universe.tf/。您将需要一个IP地址池,以便Metallb分发。

  2. 使用NodePort服务。您可以从任何node_IP:node_port地址访问服务。默认情况下,NodePort服务会在节点端口范围内选择随机端口。您可以使用nodePort字段在节点端口范围内选择一个自定义端口。

    缺点:默认情况下,节点端口范围是30000-32767。因此,您无法像8080那样绑定到您想要的任何自定义端口。

  3. 使用hostPort绑定节点上的端口。

    缺点:您没有固定的IP地址,因为除非使用nodeAffinity,否则您不知道Pod被调度到哪个节点。如果希望从给定端口上的所有节点均可访问它,则可以将pod设置为守护程序集。

© www.soinside.com 2019 - 2024. All rights reserved.