Kubernetes系列 之 Service 详细解析【逐步补充】
Kubernetes 中的 Service 是一种抽象层,它提供了应用程序的访问入口。通过 Service,我们可以通过稳定的 IP 地址和端口访问在 Pod 中运行的应用,保证应用在 Pod 动态调度和重启时不会受到影响。下面将详细介绍 Kubernetes 中的各类 Service 及其配置。
1. 什么是 Service?
Kubernetes 中的 Service 是为了简化 Pods 的访问管理而存在的抽象层。Service 将多个 Pods 组合成一个统一的访问入口,并且不依赖于 Pod 的 IP 地址变化。即使 Pod 被删除或重新创建,服务的访问地址和端口保持不变。
1.1 Service 的基本工作原理
- 负载均衡:Service 会自动对请求进行负载均衡,将流量均匀分发到后端的 Pods。
- DNS 名称:每个 Service 都会被分配一个 DNS 名称,Pod 可以通过这个 DNS 名称来访问服务。
2. Service 类型
Kubernetes 支持以下几种类型的 Service,每种类型适用于不同的场景:
2.1 ClusterIP(默认类型)
ClusterIP
是默认的 Service 类型,它只能在 Kubernetes 集群内部访问。集群中的其他 Pod 可以通过该服务的 IP 地址与它通信。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 8080
targetPort: 80
clusterIP: 10.96.0.88
-
port
: 公开的 Service 端口,集群内部其他 Pod 可以访问。 -
targetPort
: Pod 内部的端口,流量会转发到该端口。 -
selector
: 匹配标签的 Pods,Service 会把流量转发到这些 Pods 上。 -
clusterIP
: Service 的虚拟 IP 地