Module 02 · Kubernetes Basics
Kubernetes Objects - Part 2Kubernetes 对象(Part 2)详解
学习目标
观看完本视频后,你将能够:
- ✅ 描述 服务(Service) 的目的、属性和用途
- ✅ 描述 ClusterIP、NodePort、LoadBalancer 和 External Name 服务的角色与用途
- ✅ 描述 Ingress、DaemonSet、StatefulSet 和 Job 的角色与用途
一、Kubernetes 服务(Service)
服务的定义
- 服务(Service) 是一种 REST 对象,类似于 Pod。
- 服务是一个 逻辑抽象,表示一组运行在集群中的 Pod。
- 服务通过负载均衡来提供对 Pod 的访问,并简化了服务发现过程。
- 每个服务会分配一个 唯一的 IP 地址,用来访问部署在 Pod 上的应用程序。
服务的工作原理
- 服务支持多种协议,如 TCP(默认)、UDP 等,还可以支持多个端口定义。
- 服务选择器(Selector):用于选择目标 Pods,可以映射传入端口到目标端口。
为什么需要服务?
- Pod 在集群中是动态的,可能会随时被销毁和创建,导致 IP 地址变化,造成服务发现困难。
- 服务 通过 IP 地址或 DNS 名称 公开服务,并使用选择器来选定目标 Pod,解决了这一问题。
二、服务类型
1ClusterIP
- 默认类型,为集群内部服务分配一个集群内部 IP 地址。
- ClusterIP 服务 只能在集群内部访问,无法从外部请求服务。
- 用于集群内部的 服务间通信,如前端和后端组件之间的通信。

2NodePort
- NodePort 服务在每个节点的 IP 地址上暴露服务,指定一个静态端口。
- 将外部请求路由到 ClusterIP 服务。
- 安全性考虑:不推荐用于生产环境。

3LoadBalancer
- 扩展 NodePort 服务,创建一个 外部负载均衡器(ELB),并将流量自动路由到 NodePort 服务。
- 使用云服务提供商的负载均衡器公开服务,允许外部访问。

4External Name
- 外部名称服务 映射到外部的 DNS 名称,而不是任何选择器。
- 通过 spec.externalName 参数将服务映射到外部存储或其他资源,允许不同命名空间的 Pod 之间的通信。

三、Ingress — 访问管理
Ingress 的作用
- Ingress 是一个 API 对象,结合 Ingress Controller,提供外部用户访问多个 Kubernetes 服务的路由规则。
- 生产环境中,Ingress 通常暴露 HTTP(端口 80)或 HTTPS(端口 443)端口的应用程序。
特点
- Ingress 能够在不使用外部负载均衡器的情况下,管理访问并减少成本。

四、DaemonSet — 节点级别的 Pod 部署
DaemonSet 的功能
- 确保集群中每个节点都运行一个 Pod 实例。
- 随着节点加入集群,DaemonSet 会自动在新节点上部署 Pod。
- 删除 DaemonSet 会移除所有与之关联的 Pods。
- 适用于 存储、日志管理 和 节点监控 等用途。

五、StatefulSet — 管理有状态应用
StatefulSet 的功能
- 用于管理 有状态应用(Stateful Applications),保证 Pod 的顺序和唯一性。
- 提供 持久存储卷,确保应用数据在 Pod 重启时保持一致。
- 为每个 Pod 分配一个 粘性身份,保证 Pod 请求的持久性。

六、Job — 执行一次性任务
Job 的功能
- 创建 Pod 并跟踪其完成情况,直到任务完成。
- Job 会自动重试,直到 Pod 执行成功为止。
- 删除 Job 会移除其创建的所有 Pods。
- CronJobs 用于定期执行 Job,按照预定的时间表周期性地创建 Job。

七、总结
| 对象类型 | 功能描述 | 用途 |
|---|---|---|
| Service | 提供对 Pod 的访问,支持负载均衡 | 内部和外部服务的访问 |
| ClusterIP | 集群内的默认服务类型 | 内部服务间通信 |
| NodePort | 在每个节点上暴露静态端口 | 暴露服务给外部(非生产环境) |
| LoadBalancer | 通过云负载均衡器公开服务 | 自动路由外部流量 |
| External Name | 映射到外部 DNS 名称 | 支持跨命名空间通信 |
| Ingress | 路由外部访问到集群内部服务 | 控制外部访问,减少成本 |
| DaemonSet | 确保每个节点运行一个 Pod | 节点级任务,如存储和日志 |
| StatefulSet | 管理有状态应用,保证 Pod 顺序和唯一性 | 适用于有状态应用,如数据库 |
| Job | 创建并跟踪一次性任务的完成情况 | 执行批量或一次性任务 |
八、课程回顾
- 服务(Service) 是一种 REST 对象,提供 Pod 的访问策略。
- ClusterIP 是默认的服务类型,用于集群内的通信。
- NodePort 和 LoadBalancer 提供从外部访问服务的方式。
- Ingress 用于通过路由规则管理外部用户访问。
- DaemonSet 确保在每个节点上运行一个 Pod。
- StatefulSet 管理有状态应用,提供持久存储。
- Job 用于执行一次性任务,并支持重试机制。
✨ 总结: Kubernetes 提供了多种对象和服务来处理不同类型的应用需求,从负载均衡、访问控制到有状态应用的管理,都能够实现高效、灵活的集群管理。 🚀