0Pricing
DevOps Bootcamp · 课时

Service 类型:ClusterIP、NodePort、LoadBalancer

了解在 Kubernetes Cluster 内部和外部暴露 Service 的不同方式。

Service 类型:ClusterIP、NodePort、LoadBalancer 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

服务暴露需求

在 Kubernetes 中,Pod 是临时的,并且具有动态 IP 地址。服务为您的应用提供稳定的网络访问方式。但您应如何暴露这些服务呢?

根据您的应用需要从集群内部还是外部访问,以及访问方式的不同,Kubernetes 提供了不同的服务类型。让我们来了解其中最主要的三种类型!

ClusterIP:内部访问

ClusterIP 是默认的服务类型。它会为您的服务分配一个稳定的内部 IP 地址,该地址只能在 Kubernetes 集群内部访问。

  • Pod 可以使用这些 ClusterIP 和服务名称访问其他 Pod。
  • 它非常适合不需要直接对外暴露的后端服务。
  • 您可以把它理解为 Pod 的内部负载均衡器。

ClusterIP 服务 YAML

下面介绍如何定义一个 ClusterIP 类型的服务。请注意其中的 type: ClusterIP 字段,不过该字段是可选的,因为它就是默认类型。

apiVersion: v1
kind: Service
metadata:
  name: my-internal-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

访问 ClusterIP 服务

部署后,Kubernetes 会自动为此服务分配一个唯一的内部 IP 地址(ClusterIP)。其他 Pod 随后可以使用服务名称(例如 my-internal-service)或其 IP 地址进行连接。

Kubernetes 的 DNS 服务会将服务名称解析为其 ClusterIP,使内部通信变得简单而可靠。

NodePort:外部访问

如果您需要从集群外部访问应用,该怎么办呢?这正是 NodePort 发挥作用的地方。

NodePort 服务会在集群中每个节点的 IP 地址上,通过一个静态端口暴露您的应用。发送到 NodeIP:NodePort 的所有流量都会被路由到您的服务。

  • 适用于开发环境和小规模部署。
  • NodePort 通常位于 30000-32767 范围内。

NodePort 服务 YAML

要创建 NodePort 服务,您需要明确设置 type: NodePort。如果您不指定端口,Kubernetes 会自动在 NodePort 范围内选择一个可用端口。

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30080 # Optional: K8s picks if omitted
  type: NodePort

通过 NodePort 连接

部署 NodePort 服务后,您可以使用 <AnyNodeIP>:<NodePort> 从集群外部访问应用。

例如,如果某个节点的 IP 是 192.168.1.100,分配的 NodePort 是 30080,则可以通过 http://192.168.1.100:30080 访问您的应用。

LoadBalancer:云集成

对于在云服务提供商(AWS、GCP、Azure)上的生产环境,通常首选 LoadBalancer 服务类型。它会自动创建一个外部云负载均衡器。

该负载均衡器会获得一个公共 IP 地址,并将外部流量分发到您服务的 Pod。所有复杂的路由工作都由它为您处理。

LoadBalancer 服务 YAML

定义 LoadBalancer 服务非常简单。您的云服务提供商会负责创建外部负载均衡器等繁重工作。

apiVersion: v1
kind: Service
metadata:
  name: my-loadbalancer-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

使用 LoadBalancer 进行外部访问

部署后,您的云服务提供商会创建一个专用负载均衡器,并为其分配一个外部 IP 地址或主机名。随后,您可以使用这个公共端点访问应用。

这为将服务暴露到互联网提供了一种稳健、可扩展且高度可用的方式。

快速检查:服务类型

哪些 Kubernetes 服务类型允许您从集群外部直接访问应用?

回顾:选择您的服务

您已经了解了 Kubernetes 最主要的三种服务类型:

  • ClusterIP:用于集群内部的专用访问。
  • NodePort:在每个节点的 IP 上通过静态端口暴露服务,从而允许外部访问。
  • LoadBalancer:与云服务提供商集成,创建带有公共 IP 的外部负载均衡器。

请根据应用的暴露需求和部署环境选择合适的类型!

常见问题解答

「Service 类型:ClusterIP、NodePort、LoadBalancer」课时是免费的吗?

是的 — 「Service 类型:ClusterIP、NodePort、LoadBalancer」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「Service 类型:ClusterIP、NodePort、LoadBalancer」这节课中我会学到什么?

了解在 Kubernetes Cluster 内部和外部暴露 Service 的不同方式。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Service 类型:ClusterIP、NodePort、LoadBalancer」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 Service 暴露应用
  2. Service 类型:ClusterIP、NodePort、LoadBalancer
  3. 用于外部访问的 Ingress
  4. DNS 与服务发现
← 返回 DevOps Bootcamp