1. Kubernetes Service 基础概念解析
在Kubernetes集群中,Service是一个抽象层,它为运行在集群中的一组Pod提供稳定的网络端点。当我们需要让集群内部或外部的客户端访问Pod时,Service就是最关键的组件之一。与直接访问Pod相比,Service提供了以下几个核心优势:
- 稳定IP地址:Pod的IP地址是动态分配的,随时可能变化。而Service会分配一个固定的ClusterIP,作为访问后端Pod的统一入口
- 负载均衡:Service会自动将请求分发到所有健康的Pod实例上
- 服务发现:通过DNS名称即可访问服务,无需关心Pod的具体位置
ClusterIP是Service的默认类型,它会分配一个仅在集群内部可访问的虚拟IP。这个IP地址具有以下特点:
- 从Kubernetes的service-cluster-ip-range地址池中分配
- 只在集群内部可达,外部网络无法直接访问
- 生命周期与Service绑定,删除Service后IP会被回收
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 创建ClusterIP Service的完整流程
2.1 准备工作与环境检查
在创建Service前,我们需要确保:
- 已经部署好目标Pod(通常通过Deployment管理)
- 这些Pod已经正确设置了标签(labels)
- kubectl已正确配置,能够访问目标集群
可以通过以下命令验证集群状态:
bash复制kubectl get nodes # 检查节点状态
kubectl get pods --show-labels # 查看Pod及其标签
2.2 YAML定义文件详解
下面是一个典型的ClusterIP Service的定义示例:
yaml复制apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: ClusterIP # 可省略,因为这是默认类型
selector:
app: my-app # 必须与Pod标签匹配
ports:
- protocol: TCP
port: 80 # Service暴露的端口
