繁体   English   中英

在 kubernetes 中使用 ClusterIP 服务类型的外部 IP 地址有什么用

[英]what is the use of external IP address with a ClusterIP service type in kubernetes

当服务类型为ClusterIP时,kubernetes 服务中外部 IP 地址选项的用途是什么

ExternalIP只是一个端点,通过它可以从集群ExternalIP访问服务,因此具有ExternalIPClusterIP类型服务仍然可以使用其 service.namespace DNS 名称在集群内部访问,但现在它也可以从其外部访问端点也是。 例如,您可以将ExternalIP设置为您的 k8s 节点之一的 IP,或者在该 IP 上创建到您的集群的入口。

ClusterIP是 Kubernetes 中的默认服务类型,它允许您仅集群访问您的服务。

如果您的服务类型设置为LoadBalancerNodePort ,则会自动创建ClusterIP并且LoadBalancerNodePort服务将路由到此ClusterIP IP 地址。

新的外部 IP 地址仅分配给LoadBalancer类型。

当您将服务设置为NodePort时,您还可以使用节点的外部 IP 地址。 但在这种情况下,您的节点需要额外的防火墙规则,以允许暴露的节点端口的入口流量。

当您使用type: ClusterIP服务时,它只有集群 IP,没有外部 IP 地址<none>

ClusterIP 是从 IP 池提供给服务的唯一 Ip,并且访问该服务的 pod 的集群 IP 只能在集群内部使用。集群 IP 是 kubernetes 中的默认服务类型。

kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer

上面的例子将创建一个具有外部 IP 和集群 IP 的服务。 对于负载均衡器、节点端口服务,可以通过外部IP从其他集群访问该服务

只是为了添加到 coolinuxoid 答案。 我正在使用 GKE 并根据他们的文档,当您添加他们提供的 ClusterIP 类型的服务以通过以下方式访问它时:

访问您的服务列表您正在运行的 Pod:

kubectl 获取豆荚

在输出中,复制以 my-deployment 开头的 Pod 名称之一。

NAME READY STATUS RESTARTS AGE my-deployment-dbd86c8c4-h5wsf 1/1 Running 0 2m51s

将 shell 放入正在运行的容器之一:

kubectl exec -it pod-name -- sh

其中 pod-name 是 my-deployment 中的其中一个 Pod 的名称。

在你的 shell 中,安装 curl:

apk 添加 --no-cache curl

在容器中,使用您的集群 IP 地址和端口 80 向您的 Service 发出请求。请注意,80 是您的 Service 的端口字段的值。 这是您用作服务客户端的端口。

curl cluster-ip:80 因此,虽然您可能会找到一种从外部路由到此类服务的方法,但这不是推荐的/通常的方法。

作为更好的选择,请使用:

  1. LoadBalancer如果您正在处理具有大量服务和详细要求的项目。
  2. NodePort如果您正在处理不需要云原生负载平衡的较小的东西,并且您不介意直接使用节点的 IP 将其映射到服务。 顺便说一句,同一个文档确实建议了一个选项(亲自测试过;效果很好):

如果集群中的节点具有外部 IP 地址,请查找其中一个节点的外部 IP 地址:

kubectl 获取节点 --output 宽

输出显示节点的外部 IP 地址:

NAME STATUS ROLES AGE VERSION EXTERNAL-IP gke-svc-... Ready none 1h v1.9.7-gke.6 203.0.113.1

并非所有集群都有节点的外部 IP 地址。 例如,私有集群中的节点没有外部 IP 地址。

创建防火墙规则以允许节点端口上的 TCP 流量:

gcloud 计算防火墙规则创建测试节点端口 --allow tcp:node-port

其中: node-port 是您的服务的 nodePort 字段的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM