使用 Service 暴露应用
了解 Service 在为 Pod 提供稳定网络端点方面的作用。
使用 Service 暴露应用 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
Pod:今日存在,明日消失
在 Kubernetes 中,Pod 是最小的可部署单元。Pod 的设计具有临时性,Kubernetes 可以随时创建、销毁或移动 Pod。
这种灵活性有利于提升弹性,但也带来了一个挑战:其他应用如何可靠地找到这些不断变化的 Pod 并与它们通信?
不断变化的目标问题
每个 Pod 都有自己的 IP 地址。当 Pod 重启或扩展时,通常会获得一个新的 IP 地址。直接连接 Pod 的 IP,就像试图击中一个不断移动的目标!
想象一个拥有多个 Pod 的 Web 应用。如果其中一个 Pod 重启,其 IP 会发生变化,从而中断其他服务或用户建立的连接。
Service 来帮忙!
这正是 Kubernetes Service 发挥作用的地方!Service 为一组 Pod 提供稳定、固定的网络端点。
您可以把它看作应用的永久地址,即使后端 Pod 的各自地址不断变化,这个地址也不会改变。
Pod 的稳定网关
Service 充当一组 Pod 之上的抽象层,为它们提供一个统一且一致的 IP 地址和 DNS 名称。
- 其他应用使用这个稳定的 Service IP 或名称。
- Service 随后将流量路由到它所管理的健康 Pod。
- 这样,客户端便不再依赖单个 Pod 的 IP。
将 Service 连接到 Pod
Service 如何知道应将流量路由到哪些 Pod?它使用标签和选择器!
定义 Service 时,您需要指定一个 selector。任何匹配这些标签的 Pod 都会自动成为该 Service 组的一部分。
这种动态关联意味着新 Pod 会自动加入,而不健康的 Pod 会被移除。
引导网络流量
Service 管理网络流量的流向。它定义端口,将传入请求映射到 Pod 上的正确端口。
关键端口概念:
port:Service 自身监听的端口。targetPort:Service 将流量转发到的 Pod 端口。
构建 Service 清单
与大多数 Kubernetes 资源一样,Service 使用 YAML 文件定义。下面来看看其基本结构:
apiVersion:v1kind:Servicemetadata:名称、标签spec:包含核心定义,包括selector和ports。
您的第一个 Service:ClusterIP
用于内部通信的最常见 Service 类型是 ClusterIP。它会在集群内部的一个内部 IP 地址上公开 Service。
下面是一个简单 Web 应用的示例:
apiVersion: v1
kind: Service
metadata:
name: my-web-service
spec:
selector:
app: my-webapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP部署您的 Service
准备好 Service YAML 后,您可以使用 kubectl 将其部署到集群中,操作方式与 Pod 或 Deployment 类似。
此命令会告诉 Kubernetes 根据您的定义创建 Service:
kubectl apply -f service.yaml使用新的 Service
部署后,您的 Service 会在集群内获得一个稳定的 IP 和 DNS 名称。其他 Pod 现在可以使用这个名称访问您的应用。
例如,另一个 Pod 可以连接到 my-web-service:80,Service 会负责将流量路由到正确的 my-webapp Pod。
Service 检查
您已经学习了 Kubernetes Service 如何为动态 Pod 提供稳定的网络访问。
以下哪一项最准确地描述了 Kubernetes Service 的主要作用?
回顾:稳定的连接
做得很好!在本课中,我们探索了 Kubernetes Service。
- Pod 具有临时性,并且拥有动态 IP。
- Service 为 Pod 提供稳定的网络端点。
- Service 使用选择器查找目标 Pod。
- Service 将外部
port映射到内部targetPort。 - ClusterIP 是一种常见的内部通信类型。
接下来,我们将深入了解不同的 Service 类型及其用途!
常见问题解答
「使用 Service 暴露应用」课时是免费的吗?
是的 — 「使用 Service 暴露应用」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「使用 Service 暴露应用」这节课中我会学到什么?
了解 Service 在为 Pod 提供稳定网络端点方面的作用。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「使用 Service 暴露应用」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。